Home » Archimedes archive » Archimedes World » AW-1992-08.adf » AWaug92 » !AWaug92/Goodies/Wimped/!WimpEd/Library/Wimp
!AWaug92/Goodies/Wimped/!WimpEd/Library/Wimp
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 » Archimedes archive » Archimedes World » AW-1992-08.adf » AWaug92 |
Filename: | !AWaug92/Goodies/Wimped/!WimpEd/Library/Wimp |
Read OK: | ✔ |
File size: | 5390 bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
REM|_________________________________________________________________________ REM|_________________________________________________________________________ REM|_________________________________________________________________________ REM| REM| REM| REM| ------------------------------- 6/1/92 REM| WIMP PROCEDURE LIBRARY REM| REM| Index of Contents REM| REM| ------------------------------- REM| REM| 1.�Windows REM| REM| 2.�Icons REM| REM| 3.�Menus REM| REM| 4.�Sprites REM| REM| 5.�Miscellaneous REM| REM| 6.�Polling REM| REM| ------------------------------- REM| REM| REM| REM| REM| REM| REM| ------------------------------- REM| 1.�Windows REM| ------------------------------- REM| REM| REM| ------------------------------------------------ REM| REM| Procedures : REM| REM| PROCWimp_WindowAlert(title$,message$) REM| PROCWimp_WindowAlertBox(title$,message$,button%) REM| FNWimp_WindowCancel(title$,message$) REM| PROCWimp_WindowErrorBox(title$,message$) REM| FNWimp_WindowTitle(window%) REM| FNWimp_WindowLoad(window$) REM| FNWimp_WindowLoadFrom(window$,template$) REM| PROCWimp_WindowBringToTop(window%) REM| PROCWimp_WindowForceDraw(window%) REM| PROCWimp_WindowOpen(window%) REM| PROCWimp_WindowInterface REM| REM| ---------------------------------------------- REM| REM| REM| DEF PROCWimp_WindowAlert(title$,message$) PROCWimp_WindowAlertBox(title$,message$,0) ENDPROC : DEF PROCWimp_WindowAlertBox(title$,message$,button%) LOCAL response% $(wimp%+4)=message$ CASE button% OF WHEN 2 : response%=1 WHEN 1 : response%=15 WHEN 3 : response%=(1<<5)+16 WHEN 4 : response%=(1<<6)+16 OTHERWISE : response%=16 ENDCASE SYS "Wimp_ReportError",wimp%,response%,title$ TO ,response% ENDPROC : DEF FNWimp_WindowCancel(title$,message$) $(wimp%+4)=message$ response%=23 SYS "Wimp_ReportError",wimp%,response%,title$ TO ,response% =response%-2 : DEF PROCWimp_WindowErrorBox(title$,message$) PROCWimp_WindowAlertBox(title$,message$,2) ENDPROC : DEF FNWimp_WindowTitle(window%) wimp%!0=window% SYS "Wimp_GetWindInfo",,wimp% IF ((wimp%!60)AND&100)=0 ERROR 1,"Title isn't indirected" =$(wimp%!76) : DEF FNWimp_WindowLoad(window$) =FNWimp_WindowLoadFrom(window$,"<Obey$Dir>.Templates") : DEF FNWimp_WindowLoadFrom(window$,template$) LOCAL c%,i%,n%,j%,sp$,sp2$ SYS "Wimp_OpenTemplate",,template$ SYS "Wimp_LoadTemplate",,wimp%,icons%,icon_memory%,-1,window$,0 TO ,,icons% CASE sprites% OF WHEN 1 : wimp%!64=sprites% OTHERWISE : wimp%!64=FNEvent_Sprites(window%) ENDCASE SYS "Wimp_CreateWindow",,wimp% TO c% SYS "Wimp_CloseTemplate" SYS "Wimp_WhichIcon",c%,wimp%+40,1+2+(1<<8),2+(1<<8) CASE wimp%!40 OF WHEN -1 : OTHERWISE : i%=40 REPEAT wimp%!4=wimp%!i% : wimp%!0=c% SYS "Wimp_GetIconState",,wimp% sp$=FNWimp_GetStringAtAddress(wimp%!28) SYS "Wimp_DeleteIcon",,wimp% CASE sprites% OF WHEN 1 : wimp%!32=1 OTHERWISE : SYS "OS_SpriteOp",&108,sprites% TO ,,,n% j%=0 REPEAT : j%+=1 SYS "OS_SpriteOp",&10D,sprites%,pointer_block%,20,j% sp2$=FNWimp_GetStringAtAddress(pointer_block%) UNTIL j%=n% OR sp$=sp2$ IF sp$=sp2$ THEN wimp%!32=sprites% ELSE wimp%!32=1 ENDCASE wimp%!4=c% SYS "Wimp_CreateIcon",,wimp%+4 TO handle% i%+=4 UNTIL (wimp%!i%)=-1 ENDCASE =c% : DEF PROCWimp_WindowBringToTop(window%) !wimp%=window% SYS "Wimp_GetWindowState",,wimp% wimp%!28=-1 SYS "Wimp_OpenWindow",,wimp% ENDPROC : DEF PROCWimp_WindowClose(window%) !wimp%=window% SYS "Wimp_CloseWindow",,wimp% ENDPROC : DEF PROCWimp_WindowForceDraw(window%) CASE window% OF WHEN -1 : SYS "Wimp_ForceRedraw",-1,0,0,2*1280,2*1024 OTHERWISE : SYS "Wimp_ForceRedraw",window%,0,-2*1024,2*1280,0 ENDCASE ENDPROC : DEF PROCWimp_WindowOpen(window%) !wimp%=window% SYS "Wimp_GetWindowState",,wimp% SYS "Wimp_OpenWindow",,wimp% ENDPROC : PROCWimp_WindowInterface SYS"Wimp_BorderWindow",,wimp% ENDPROC REM| REM| REM| REM| ------------------------- REM| 2.�Icons REM| ------------------------- REM| REM| REM| ------------------------------------------ REM| REM| Procedures : REM| REM| FNWimp_IconBar(Sprite$) REM| PROCWimp_IconCaret(window%,icon%,chars%) REM| FNWimp_IconText(window%,icon%) REM| FNWimp_IconValidation(window%,icon%) REM| PROCWimp_IconDisable(window%,icon%) REM| PROCWimp_IconEnable(window%,icon%) REM| FNWimp_IconPutSprite(window%,icon%,sprite$) REM| PROCWimp_IconPutText(window%,icon%,text$) REM| PROCWimp_IconInterfaceStart REM| PROCWimp_IconInterfaceFinish REM| REM| ------------------------------------------ REM| : DEF FNWimp_IconBar(Sprite$) LOCAL icon% wimp%!0=-1 wimp%!4=0 : wimp%!8=0 wimp%!12=68 : wimp%!16=68 wimp%!20=&3002 $(wimp%+24)=Sprite$ SYS "Wimp_CreateIcon",,wimp% TO icon% =icon% : DEF PROCWimp_IconCaret(window%,icon%,chars%) SYS "Wimp_SetCaretPosition",window%,icon%,,,-1,chars% ENDPROC : DEF FNWimp_IconText(window%,icon%) wimp%!0=window% : wimp%!4=icon% SYS "Wimp_GetIconState",,wimp% IF ((wimp%!24) AND &100)=0 ERROR 1,"Icon isn't indirected" =$(wimp%!28) : DEF FNWimp_IconValidation(window%,icon%) wimp%!0=window% : wimp%!4=icon% SYS "Wimp_GetIconState",,wimp% IF ((wimp%!24) AND &100)=0 ERROR 1,"Icon isn't indirected" =$(wimp%!32) : DEF PROCWimp_IconDisable(window%,icon%) wimp%!0=window% : wimp%!4=icon% wimp%!8=1<<22 : wimp%!12=1<<22 SYS "Wimp_SetIconState",,wimp% ENDPROC : DEF PROCWimp_IconEnable(window%,icon%) wimp%!0=window% : wimp%!4=icon% wimp%!8=0 : wimp%!12=1<<22 SYS "Wimp_SetIconState",,wimp% ENDPROC : DEF FNWimp_IconPutSprite(window%,icon%,sprite$) wimp%!0=window%:wimp%!4=icon% SYS "Wimp_GetIconState",,wimp% SYS "Wimp_DeleteIcon",,wimp% wimp%!4=wimp%!8 : wimp%!8=wimp%!12 : wimp%!12=wimp%!16 wimp%!16=wimp%!20 : wimp%!20=wimp%!24 : $(wimp%+24)=sprite$ SYS "Wimp_CreateIcon",,wimp% TO icon% =icon% : DEF PROCWimp_IconPutText(window%,icon%,text$) wimp%!0=window% : wimp%!4=icon% SYS "Wimp_GetIconState",,wimp% IF ((wimp%!24) AND &100)=0 ERROR 1,"Icon isn't indirected" $(wimp%!28)=text$ wimp%!0=window% : wimp%!4=icon% wimp%!8=0 : wimp%!12=0 SYS "Wimp_SetIconState",,wimp% ENDPROC : DEF PROCWimp_IconInterfaceStart SYS"Wimp_BorderIcon",,wimp% ENDPROC : DEF PROCWimp_IconInterfaceFinish wimp%!8=0 SYS"Wimp_BorderIcon",,wimp% ENDPROC : REM| REM| REM| REM| ------------------------- REM| 3.�Menus REM| ------------------------- REM| REM| REM| ---------------------------------------------- REM| REM| Procedures : REM| REM| REM| PROCWimp_MenuAdjustOn(menu%) REM| FNWimp_MenuChoice(level%) REM| FNWimp_MenuCreate(menu$) REM| FNWimp_MenuColours REM| FNWimp_MenuCreateColours(title$) REM| FNWimp_MenuNoOfEntries(menu$) REM| PROCWimp_MenuBackGroundColour(menu%,item%,colour%) REM| PROCWimp_MenuCentre(menu%,item%) REM| PROCWimp_MenuClose REM| PROCWimp_MenuDisable(menu%,item%) REM| PROCWimp_MenuDottedLine(menu%,item%) REM| PROCWimp_MenuEnable(menu%,item%) REM| PROCWimp_MenuForegroundColour(menu%,item%,colour%) REM| PROCWimp_MenuGlue(menu1%,item%,menu2%) REM| PROCWimp_MenuItem(menu%,item%,item$) REM| PROCWimp_MenuMessage(menu%,item%) REM| PROCWimp_MenuPopUp(Menu%,x%,y%) REM| PROCWimp_MenuPopUpBar(x%,y%) REM| PROCWimp_MenuTick(menu%,item%) REM| PROCWimp_MenuTitle(menu%,title$) REM| PROCWimp_MenuWrite(menu%,item%,buffer%,val%,BufferLength%) REM| REM| ---------------------------------------------- REM| : DEF PROCWimp_MenuAdjustOn(menu%) SYS "Wimp_GetPointerInfo",,pointer_block% IF ((pointer_block%!8)AND1)=1 THEN SYS "Wimp_CreateMenu",,menu%,pointer_block%!0,pointer_block%!4 ENDPROC : DEF FNWimp_MenuChoice(level%) =(wimp%!(4*level%))+1 : DEF FNWimp_MenuCreate(menu$) IF menu$="Colours" THEN=FNWimp_MenuColours LOCAL menu%,index%,width%,length%,k%,s% DIM menu% 28+FNWimp_MenuNoOfEntries(menu$)*24 menu%?12=7 : menu%?13=2 : menu%?14=7 :menu%?15=0 menu%!16=140 : menu%!20=44 : menu%!24=0 index%=menu%+28 $menu%=LEFT$(menu$,INSTR(menu$,"\")-1) width%=LEN(LEFT$(menu$,INSTR(menu$,"\")-1)) menu$+="\" : Menu_NoOfEntries%=0 WHILE menu$<>"" menu$=MID$(menu$,INSTR(menu$,"\")+1) CASE menu$ OF WHEN "" OTHERWISE : !index%=0 : index%!4=-1 : index%!8=&7000021 length%=INSTR(menu$,"\")-1 k%=INSTR(LEFT$(menu$,length%),">") CASE k% OF WHEN 0 OTHERWISE s%=EVAL(MID$(menu$,k%+1,length%-k%)) index%!4=s% length%=k%-1 ENDCASE $(index%+12)=LEFT$(menu$,length%) IF length%>width% THEN width%=length% index%+=24 ENDCASE ENDWHILE menu%!16=16*(width%+1) index%!-24=index%!-24 OR &80 : =menu% : DEF FNWimp_MenuColours =FNWimp_MenuCreateColours(" ") : DEF FNWimp_MenuCreateColours(title$) LOCAL x$,men%,j%,i% x$=title$+"\0\1\2\3\4\5\6\7\8\9\10\11\12\13\14\15" men%=FNWimp_MenuCreate(x$) FOR i%=0 TO 15 CASE TRUE OF WHEN i%<4,i%=9,i%=12,i%=14,i%=15 : j%=7 OTHERWISE : j%=0 ENDCASE men%?(39+i%*24)=i%*16+j% PROCWimp_MenuCentre(men%,i%+1) NEXT =men% : DEF FNWimp_MenuNoOfEntries(menu$) LOCAL n% ,j% : n%=0 : j%=0 REPEAT j%=INSTR(menu$,"\",j%+1) IF j%<>0 THEN n%+=1 UNTIL j%=0 =n% : DEF PROCWimp_MenuBackGroundColour(menu%,item%,colour%) LOCAL fore%,i% fore%=(menu%?(39+(item%-1)*24))MOD16 i%=((menu%?(39+(item%-1)*24))DIV16)MOD16 menu%?(39+(item%-1)*24)=fore%+16*colour%+i% ENDPROC : DEF PROCWimp_MenuCentre(menu%,item%) menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)OR(1<<3) ENDPROC : DEF PROCWimp_MenuClose SYS "Wimp_CreateMenu",-1 ENDPROC : DEF PROCWimp_MenuDisable(menu%,item%) menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)OR(1<<22) ENDPROC : DEF PROCWimp_MenuDottedLine(menu%,item%) menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))OR2 ENDPROC : DEF PROCWimp_MenuEnable(menu%,item%) PROCWimp_MenuDisable(menu%,item%) menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)EOR(1<<22) ENDPROC : DEF PROCWimp_MenuForegroundColour(menu%,item%,colour%) menu%?(39+(item%-1)*24)=colour%+16*((menu%?(39+(item%-1)*24))DIV16) ENDPROC : DEF PROCWimp_MenuGlue(menu1%,item%,menu2%) menu1%!(8+item%*24)=menu2% ENDPROC : DEF PROCWimp_MenuItem(menu%,item%,item$) $(menu%+(40+(item%-1)*24))=LEFT$(item$,12)+CHR$0 ENDPROC : DEF PROCWimp_MenuMessage(menu%,item%) menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))EOR(1<<3) ENDPROC : DEF PROCWimp_MenuPopUp(Menu%,x%,y%) menu%=Menu% SYS "Wimp_CreateMenu",,menu%,x%-64,y%+20 ENDPROC : DEF PROCWimp_MenuPopUpBar(x%,y%) LOCAL n% : n%=0 WHILE ((Bar_Menu%!(28+n%*24))AND%10000000)=0 n%+=1 ENDWHILE SYS "Wimp_CreateMenu",,Bar_Menu%,x%-64,96+n%*44 menu%=Bar_Menu% ENDPROC : DEF PROCWimp_MenuTick(menu%,item%) menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))EOR1 ENDPROC : DEF PROCWimp_MenuTitle(menu%,title$) $menu%=LEFT$(title$,12)+CHR$0 ENDPROC : DEF PROCWimp_MenuWrite(menu%,item%,buffer%,val%,BufferLength%) menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))OR4 menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)OR&100 menu%!(40+(item%-1)*24)=buffer% menu%!(44+(item%-1)*24)=val% menu%!(48+(item%-1)*24)=BufferLength% ENDPROC : REM| REM| REM| REM| ------------------------- REM| 4.�Sprites REM| ------------------------- REM| REM| REM| ------------------------------------ REM| REM| Procedures : REM| REM| REM| PROCWimp_SpritesLoad REM| PROCWimp_SpritesPathLoad(pathname$ REM| REM| REM| REM| ------------------------------------ REM| : DEF PROCWimp_SpritesLoad PROCWimp_SpritesPathLoad("<Obey$Dir>.Sprites") direct_sprites%=sprites% ENDPROC : DEF PROCWimp_SpritesPathLoad(pathname$) LOCALS%,T% S%=OPENIN"<Obey$Dir>.Sprites":T%=EXT#S%+16:CLOSE#S% DIMsprites%T%,spname%12 !sprites%=T%:sprites%!8=0 SYS"OS_SpriteOp",&109,sprites% SYS"OS_SpriteOp",&10A,sprites%,pathname$ ENDPROC : REM| REM| REM| REM| ------------------------- REM| 5.�Files REM| ------------------------- REM| REM| REM| ------------------------------- REM| REM| Procedures : REM| REM| REM| FNWimp_FileType(type%) REM| FNWimp_GetFilePathName REM| FNWimp_FileLoad(pathname$) REM| FNWimp_GetStringAtAddress(array%) REM| FNWimp_GetFileFromPathname(f$) REM| PROCWimp_SendToEdit(file$) REM| REM| ------------------------------- REM| REM| REM| : DEF FNWimp_FileType(type%) CASEtype%OF WHEN&FFF:="Text" WHEN&FFD:="Data" WHEN&FFB:="Basic" WHEN&FF9:="Sprite" WHEN&FED:="Palette" WHEN&FEC:="Template" WHEN&AFF:="Draw" WHEN&1000:="Folder" WHEN&2000:="Application" OTHERWISE=STR$~(type%) ENDCASE : DEF FNWimp_GetFilePathName =FNWimp_GetStringAtAddress(wimp%+44) : DEF FNWimp_FileLoad(pathname$) LOCALS%,T%,file% S%=OPENINpathname$ T%=EXT#S%+16 CLOSE#S% DIMfile%T% OSCLI("LOAD"+pathname$+""+STR$~file%) =file% ; DEF FNWimp_GetStringAtAddress(array%) LOCALs$:s$="" WHILE(?array%<>13)AND(?array%<>0):s$+=CHR$(?array%):array%+=1:ENDWHILE: =s$ : DEF FNWimp_GetFileFromPathname(f$) CASE INSTR(f$,".") OF WHEN 0 :=f$ OTHERWISE :=FNWimp_GetFileFromPathname(RIGHT$(f$,LEN(f$)-INSTR(f$,"."))) ENDCASE : DEF PROCWimp_SendToEdit(file$) LOCAL n% wimp%!4=&6CC01C0C wimp%!16=5 wimp%!36=0 wimp%!40=&FFF $(wimp%+44)=file$+CHR$0 n%=LENfile$+45 IF n%MOD4 THEN !wimp%=4+(n%>>2)<<2 ELSE !wimp%=n% SYS "Wimp_SendMessage",17,wimp%,0 ENDPROC : REM| REM| REM| REM| ------------------------- REM| 5.�Miscellaneous REM| ------------------------- REM| REM| REM| ------------------------------- REM| REM| Procedures : REM| REM| REM| PROCWimp_Start(TaskName$) REM| FNWimp_BASICParameters REM| PROCWimp_SetEventVariables REM| PROCWimp_Error(task%,TaskName$) REM| PROCWimp_CloseDown REM| PROCWimp_Quit REM| FNWimp_ReadVariable(Variable$) REM| REM| REM| ------------------------------- REM| : DEF PROCWimp_Start(TaskName$,wimp_memory%,icon%) DIM wimp% wimp_memory%,icons% icon% IF wimp_memory%<256 THEN wimp_memory%=256 icon_memory%=icons%+icon% task$=TaskName$ indirect_sprites%=1 : direct_sprites%=1 PROCWimp_SetEventVariables ON ERROR PROCWimp_Error:END SYS"Wimp_Initialise",200,&4B534154,TaskName$ TO version%,task% ENDPROC : DEF FNWimp_BASICParameters LOCAL com$,param$,I% SYS "OS_GetEnv" TO com$ params$="" I%=INSTR(com$," -quit ") IF I% THEN params$=MID$(com$,INSTR(com$," ",I%+LEN" -quit ")+1) =params$ : DEF PROCWimp_SetEventVariables DIM pointer_block% 20 interface%=FALSE null%=1 :draw%=2 : pointer_leaving%=1<<4 pointer_entering%=1<<5:mouse%=1<<6:drag%=1<<7 key%=1<<8:menu%=1<<9:scroll%=1<<10 lose_caret%=1<<11:gain_caret%=1<<12:message%=(1<<17)+(1<<18) recorder%=1<<18:acknowledge%=1<<19:window%=0 sprites%=1:version%=0:task%=0 Bar_Window%=-2:Bar_Icon%=0:Bar_Menu%=0 x_origin%=0:y_origin%=0:SaveWindow%=-3 message_quit%=0:message_save%=2:message_load%=3 mouse_button%=2:save_event%=0 top_line%=0 : bottom_line%=0 ENDPROC : DEF PROCWimp_Error LOCALX$,x% ON ERROR OFF x%=ERL X$=REPORT$+"atline"+STR$(x%DIV10) DIMErrorMsg%36 ErrorMsg%!0=36:ErrorMsg%!12=0:ErrorMsg%!16=&81080:ErrorMsg%!20=x% $(ErrorMsg%+24)="!RunImage" SYS"Wimp_SendMessage",17,ErrorMsg% PROCWimp_WindowAlert(task$,X$) PROCWimp_CloseDown ENDPROC : DEF PROCWimp_CloseDown SYS"Wimp_CloseDown",task%,"TASK" ENDPROC : DEF PROCWimp_Quit finished%=TRUE ENDPROC : DEF FNWimp_ReadVariable(Variable$) LOCALlen%,result%,variable% $wimp%=Variable$ SYS"OS_ReadVarVal",wimp%,wimp%+255,255,,3TO,,len% wimp%?(len%+255)=13 =$(wimp%+255) : : REM| REM| REM| REM| REM| ---------------- REM| Wimp Polling REM| ---------------- REM| REM| : DEF PROCWimp_WaitForEvent LOCAL mask%,event% finished%=FALSE mask%=%111000011001 REPEAT SYS"Wimp_Poll",mask%,wimp% TO event% CASE event% OF WHEN0 : WHEN1 : PROCWimp_PollDrawWindow WHEN2 : SYS "Wimp_OpenWindow",,wimp% WHEN3 : PROCWimp_PollCloseWindow WHEN4 : WHEN5 : WHEN6 : PROCWimp_PollMouseClick WHEN7 : PROCWimp_PollSaveMessage WHEN8 : PROCWimp_PollKeyPress WHEN9 : PROCEvent_MenuChoice(menu%) WHEN10: WHEN11: WHEN12: WHEN17,18: PROCWimp_PollMessages WHEN19: ENDCASE UNTIL finished% ENDPROC : DEF PROCWimp_PollDrawWindow LOCAL more% SYS"Wimp_RedrawWindow",,wimp%TOmore% window%=wimp%!0 x_origin%=16+wimp%!4-wimp%!20:y_origin%=-16+wimp%!16-wimp%!24 WHILEmore% IF interface% THEN SYS"Wimp_BorderWindow",,wimp% PROCEvent_Draw(window%,x_origin%,y_origin%) SYS"Wimp_GetRectangle",,wimp%TOmore% ENDWHILE ENDPROC : DEF PROCWimp_PollCloseWindow SYS "Wimp_GetPointerInfo",,wimp% window%=wimp%!12 : buttons%=wimp%!8 PROCEvent_WindowClose(window%,buttons%) !wimp%=window% : SYS "Wimp_CloseWindow",,wimp% ENDPROC : DEF PROCWimp_PollMouseClick button%=wimp%!8:window%=wimp%!12:icon%=wimp%!16:x%=wimp%!0:y%=wimp%!4 CASE button% OF WHEN2 : PROCWimp_PollMenuPopUp OTHERWISE: CASE FNEvent_Save(window%) OF WHEN TRUE : PROCWimp_PollMouseSave WHEN FALSE: PROCWimp_PollEventMouseClick ENDCASE ENDCASE ENDPROC : DEF PROCWimp_PollMenuPopUp menu%=FNEvent_Menu(window%) CASE menu% OF WHEN FALSE: OTHERWISE : CASE window% OF WHEN -2 : n%=0 WHILE ((Bar_Menu%!(28+n%*24))AND%10000000)=0 n%+=1 ENDWHILE SYS "Wimp_CreateMenu",,Bar_Menu%,x%-64,96+n%*44 OTHERWISE : SYS"Wimp_CreateMenu",,menu%,x%-64,y%+20 ENDCASE ENDCASE ENDPROC : DEF PROCWimp_PollMouseSave CASE icon% OF WHEN 0 : IF button% AND &50 THEN PROCWimp_PollDragBox(window%) WHEN 2 : IF button% AND 5 THEN PROCWimp_PollSaveFile(window%) ENDCASE ENDPROC : DEF PROCWimp_PollEventMouseClick IF interface% THEN SYS"Wimp_BorderIcon",,wimp% PROCEvent_MouseClick(window%,icon%,button%,x%,y%) CASE interface% OF WHEN TRUE : wimp%!0=x%:wimp%!4=y% : wimp%!8=0 wimp%!12=window% : wimp%!16=icon% SYS"Wimp_BorderIcon",,wimp% ENDCASE ENDPROC : DEF PROCWimp_PollSaveFile(window%) LOCALfile$ wimp%!0=window% : wimp%!4=1 : SYS "Wimp_GetIconState",,wimp% file$=$(wimp%!28) CASE INSTR(file$,".") OF WHEN 0 : $(wimp%+4)="To save, drag the icon to a directory window" SYS "Wimp_ReportError",wimp%,16,task$ OTHERWISE: PROCEvent_SaveFile(file$,window%) ENDCASE SYS"Wimp_CreateMenu",-1 ENDPROC : DEF PROCWimp_PollDragBox(window%) LOCALx%,y% save%=window% !wimp%=window% SYS"Wimp_GetWindowState",,wimp% x%=wimp%!4-wimp%!20:y%=wimp%!16-wimp%!24 wimp%!4=0 SYS"Wimp_GetIconState",,wimp% !wimp%=window% wimp%!4=5 wimp%!8=x%+wimp%!8:wimp%!12=y%+wimp%!12 wimp%!16=x%+wimp%!16:wimp%!20=y%+wimp%!20 wimp%!24=0:wimp%!28=0 wimp%!32=&7FFFFFFF:wimp%!36=&7FFFFFFF SYS"Wimp_DragBox",,wimp% ENDPROC : DEF PROCWimp_PollKeyPress window%=wimp%!0:icon%=wimp%!4:key%=wimp%!24 CASE FNEvent_Save(window%) OF WHEN TRUE : PROCWimpPoll_SaveFile(window%) WHEN FALSE: PROCEvent_KeyPress(window%,icon%,key%) ENDCASE ENDPROC : DEF PROCWimp_PollSaveMessage LOCALfile$,window%,icon%,x%,y% SYS"Wimp_GetPointerInfo",,wimp% window%=wimp%!12:icon%=wimp%!16:x%=wimp%!0:y%=wimp%!4 wimp%!0=save% : wimp%!4=1 : SYS "Wimp_GetIconState",,wimp% file$=$(wimp%!28) file$=FNWimp_GetFileFromPathname(file$) wimp%!20=window% wimp%!24=icon% wimp%!28=x%:wimp%!32=y% wimp%!36=length% wimp%!0=64 wimp%!12=0 wimp%!16=1 wimp%!40=&FFF $(wimp%+44)=file$ SYS"Wimp_SendMessage",17,wimp%,wimp%!20,wimp%!24 ENDPROC : DEF PROCWimp_PollMessages LOCAL file$ file$=FNWimp_GetStringAtAddress(wimp%+44) CASE wimp%!16 OF WHEN 0 : finished%=TRUE WHEN 1 : WHEN 2 : REM PROCWimp_IconPutText(save%,1,file$) wimp%!0=save% : wimp%!4=1 : SYS "Wimp_GetIconState",,wimp% $(wimp%!28)=file$ wimp%!0=save% : wimp%!4=1 : wimp%!8=0 : wimp%!12=0 SYS "Wimp_SetIconState",,wimp% REM PROCWimp_IconCaret(save%,1,LENfile$) SYS "Wimp_SetCaretPosition",save%,1,,,-1,LENfile$ PROCEvent_SaveFile(file$,save%) WHEN 3 type$=FNWimp_FileType(wimp%!40) : PROCEvent_LoadFile(file$,type$) ENDCASE ENDPROC : DEF FNWimp_GetStringAtAddress(array%) LOCALs$:s$="" WHILE(?array%<>13)AND(?array%<>0):s$+=CHR$(?array%):array%+=1:ENDWHILE: =s$ : DEF FNWimp_GetFileFromPathname(f$) CASE INSTR(f$,".") OF WHEN 0 :=f$ OTHERWISE :=FNWimp_GetFileFromPathname(RIGHT$(f$,LEN(f$)-INSTR(f$,"."))) ENDCASE : DEF FNWimp_FileType(type%) CASEtype%OF WHEN&FFF:="Text" WHEN&FFD:="Data" WHEN&FFB:="Basic" WHEN&FF9:="Sprite" WHEN&FED:="Palette" WHEN&FEC:="Template" WHEN&AFF:="Draw" WHEN&1000:="Folder" WHEN&2000:="Application" OTHERWISE=STR$~(type%) ENDCASE :
00000000 52 45 4d 7c 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f |REM|____________| 00000010 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f |________________| * 00000040 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a 52 45 |_____________.RE| 00000050 4d 7c 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f |M|______________| 00000060 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f |________________| * 00000090 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a 52 45 4d 7c |___________.REM|| 000000a0 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f |________________| * 000000e0 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a 52 45 4d 7c 0a 52 |_________.REM|.R| 000000f0 45 4d 7c 0a 52 45 4d 7c 0a 52 45 4d 7c 20 20 20 |EM|.REM|.REM| | 00000100 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 2d 2d | ---| 00000110 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00000120 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 20 20 20 |------------ | 00000130 20 20 20 20 20 20 36 2f 31 2f 39 32 0a 52 45 4d | 6/1/92.REM| 00000140 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 || | 00000150 20 20 20 20 57 49 4d 50 20 50 52 4f 43 45 44 55 | WIMP PROCEDU| 00000160 52 45 20 4c 49 42 52 41 52 59 0a 52 45 4d 7c 0a |RE LIBRARY.REM|.| 00000170 52 45 4d 7c 20 20 20 20 20 20 20 20 20 20 20 20 |REM| | 00000180 20 20 20 20 20 20 20 20 20 49 6e 64 65 78 20 6f | Index o| 00000190 66 20 43 6f 6e 74 65 6e 74 73 0a 52 45 4d 7c 0a |f Contents.REM|.| 000001a0 52 45 4d 7c 20 20 20 20 20 20 20 20 20 20 20 20 |REM| | 000001b0 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ------------| 000001c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 000001d0 2d 2d 2d 0a 52 45 4d 7c 0a 52 45 4d 7c 20 20 20 |---.REM|.REM| | 000001e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000001f0 20 31 2e a0 57 69 6e 64 6f 77 73 0a 52 45 4d 7c | 1..Windows.REM|| 00000200 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 20 20 20 |.REM| | 00000210 20 20 20 20 20 20 20 20 20 32 2e a0 49 63 6f 6e | 2..Icon| 00000220 73 0a 52 45 4d 7c 0a 52 45 4d 7c 20 20 20 20 20 |s.REM|.REM| | 00000230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 33 | 3| 00000240 2e a0 4d 65 6e 75 73 0a 52 45 4d 7c 0a 52 45 4d |..Menus.REM|.REM| 00000250 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 || | 00000260 20 20 20 20 20 34 2e a0 53 70 72 69 74 65 73 0a | 4..Sprites.| 00000270 52 45 4d 7c 0a 52 45 4d 7c 20 20 20 20 20 20 20 |REM|.REM| | 00000280 20 20 20 20 20 20 20 20 20 20 20 20 20 35 2e a0 | 5..| 00000290 4d 69 73 63 65 6c 6c 61 6e 65 6f 75 73 0a 52 45 |Miscellaneous.RE| 000002a0 4d 7c 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 20 |M|.REM| | 000002b0 20 20 20 20 20 20 20 20 20 20 20 36 2e a0 50 6f | 6..Po| 000002c0 6c 6c 69 6e 67 0a 52 45 4d 7c 0a 52 45 4d 7c 20 |lling.REM|.REM| | 000002d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d | -| 000002e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 000002f0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 52 |--------------.R| 00000300 45 4d 7c 0a 52 45 4d 7c 0a 52 45 4d 7c 0a 52 45 |EM|.REM|.REM|.RE| 00000310 4d 7c 0a 52 45 4d 7c 0a 52 45 4d 7c 0a 52 45 4d |M|.REM|.REM|.REM| 00000320 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 || | 00000330 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ---------------| 00000340 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00000350 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 20 20 20 |.REM| | 00000360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 | 1| 00000370 2e a0 57 69 6e 64 6f 77 73 0a 52 45 4d 7c 20 20 |..Windows.REM| | 00000380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 2d | --| 00000390 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 000003a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 52 45 |-------------.RE| 000003b0 4d 7c 0a 52 45 4d 7c 0a 52 45 4d 7c 20 20 20 20 |M|.REM|.REM| | 000003c0 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ----------| 000003d0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 000003f0 2d 2d 2d 2d 2d 2d 0a 52 45 4d 7c 0a 52 45 4d 7c |------.REM|.REM|| 00000400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000410 20 20 20 20 20 20 50 72 6f 63 65 64 75 72 65 73 | Procedures| 00000420 20 3a 0a 52 45 4d 7c 0a 52 45 4d 7c 20 20 20 20 | :.REM|.REM| | 00000430 20 20 20 20 20 20 20 20 20 50 52 4f 43 57 69 6d | PROCWim| 00000440 70 5f 57 69 6e 64 6f 77 41 6c 65 72 74 28 74 69 |p_WindowAlert(ti| 00000450 74 6c 65 24 2c 6d 65 73 73 61 67 65 24 29 0a 52 |tle$,message$).R| 00000460 45 4d 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 |EM| | 00000470 50 52 4f 43 57 69 6d 70 5f 57 69 6e 64 6f 77 41 |PROCWimp_WindowA| 00000480 6c 65 72 74 42 6f 78 28 74 69 74 6c 65 24 2c 6d |lertBox(title$,m| 00000490 65 73 73 61 67 65 24 2c 62 75 74 74 6f 6e 25 29 |essage$,button%)| 000004a0 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 20 20 20 |.REM| | 000004b0 20 20 46 4e 57 69 6d 70 5f 57 69 6e 64 6f 77 43 | FNWimp_WindowC| 000004c0 61 6e 63 65 6c 28 74 69 74 6c 65 24 2c 6d 65 73 |ancel(title$,mes| 000004d0 73 61 67 65 24 29 0a 52 45 4d 7c 20 20 20 20 20 |sage$).REM| | 000004e0 20 20 20 20 20 20 20 20 50 52 4f 43 57 69 6d 70 | PROCWimp| 000004f0 5f 57 69 6e 64 6f 77 45 72 72 6f 72 42 6f 78 28 |_WindowErrorBox(| 00000500 74 69 74 6c 65 24 2c 6d 65 73 73 61 67 65 24 29 |title$,message$)| 00000510 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 20 20 20 |.REM| | 00000520 20 20 46 4e 57 69 6d 70 5f 57 69 6e 64 6f 77 54 | FNWimp_WindowT| 00000530 69 74 6c 65 28 77 69 6e 64 6f 77 25 29 0a 52 45 |itle(window%).RE| 00000540 4d 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 46 |M| F| 00000550 4e 57 69 6d 70 5f 57 69 6e 64 6f 77 4c 6f 61 64 |NWimp_WindowLoad| 00000560 28 77 69 6e 64 6f 77 24 29 0a 52 45 4d 7c 20 20 |(window$).REM| | 00000570 20 20 20 20 20 20 20 20 20 20 20 46 4e 57 69 6d | FNWim| 00000580 70 5f 57 69 6e 64 6f 77 4c 6f 61 64 46 72 6f 6d |p_WindowLoadFrom| 00000590 28 77 69 6e 64 6f 77 24 2c 74 65 6d 70 6c 61 74 |(window$,templat| 000005a0 65 24 29 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 |e$).REM| | 000005b0 20 20 20 20 20 50 52 4f 43 57 69 6d 70 5f 57 69 | PROCWimp_Wi| 000005c0 6e 64 6f 77 42 72 69 6e 67 54 6f 54 6f 70 28 77 |ndowBringToTop(w| 000005d0 69 6e 64 6f 77 25 29 0a 52 45 4d 7c 20 20 20 20 |indow%).REM| | 000005e0 20 20 20 20 20 20 20 20 20 50 52 4f 43 57 69 6d | PROCWim| 000005f0 70 5f 57 69 6e 64 6f 77 46 6f 72 63 65 44 72 61 |p_WindowForceDra| 00000600 77 28 77 69 6e 64 6f 77 25 29 0a 52 45 4d 7c 20 |w(window%).REM| | 00000610 20 20 20 20 20 20 20 20 20 20 20 20 50 52 4f 43 | PROC| 00000620 57 69 6d 70 5f 57 69 6e 64 6f 77 4f 70 65 6e 28 |Wimp_WindowOpen(| 00000630 77 69 6e 64 6f 77 25 29 0a 52 45 4d 7c 20 20 20 |window%).REM| | 00000640 20 20 20 20 20 20 20 20 20 20 50 52 4f 43 57 69 | PROCWi| 00000650 6d 70 5f 57 69 6e 64 6f 77 49 6e 74 65 72 66 61 |mp_WindowInterfa| 00000660 63 65 0a 52 45 4d 7c 0a 52 45 4d 7c 20 20 20 20 |ce.REM|.REM| | 00000670 20 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d | ---------| 00000680 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 000006a0 2d 2d 2d 2d 2d 0a 52 45 4d 7c 0a 52 45 4d 7c 0a |-----.REM|.REM|.| 000006b0 52 45 4d 7c 0a 44 45 46 20 50 52 4f 43 57 69 6d |REM|.DEF PROCWim| 000006c0 70 5f 57 69 6e 64 6f 77 41 6c 65 72 74 28 74 69 |p_WindowAlert(ti| 000006d0 74 6c 65 24 2c 6d 65 73 73 61 67 65 24 29 0a 50 |tle$,message$).P| 000006e0 52 4f 43 57 69 6d 70 5f 57 69 6e 64 6f 77 41 6c |ROCWimp_WindowAl| 000006f0 65 72 74 42 6f 78 28 74 69 74 6c 65 24 2c 6d 65 |ertBox(title$,me| 00000700 73 73 61 67 65 24 2c 30 29 0a 45 4e 44 50 52 4f |ssage$,0).ENDPRO| 00000710 43 0a 3a 0a 44 45 46 20 50 52 4f 43 57 69 6d 70 |C.:.DEF PROCWimp| 00000720 5f 57 69 6e 64 6f 77 41 6c 65 72 74 42 6f 78 28 |_WindowAlertBox(| 00000730 74 69 74 6c 65 24 2c 6d 65 73 73 61 67 65 24 2c |title$,message$,| 00000740 62 75 74 74 6f 6e 25 29 0a 4c 4f 43 41 4c 20 72 |button%).LOCAL r| 00000750 65 73 70 6f 6e 73 65 25 0a 24 28 77 69 6d 70 25 |esponse%.$(wimp%| 00000760 2b 34 29 3d 6d 65 73 73 61 67 65 24 0a 43 41 53 |+4)=message$.CAS| 00000770 45 20 62 75 74 74 6f 6e 25 20 4f 46 0a 20 57 48 |E button% OF. WH| 00000780 45 4e 20 32 20 20 20 20 3a 20 72 65 73 70 6f 6e |EN 2 : respon| 00000790 73 65 25 3d 31 0a 20 57 48 45 4e 20 31 20 20 20 |se%=1. WHEN 1 | 000007a0 20 3a 20 72 65 73 70 6f 6e 73 65 25 3d 31 35 0a | : response%=15.| 000007b0 20 57 48 45 4e 20 33 20 20 20 20 3a 20 72 65 73 | WHEN 3 : res| 000007c0 70 6f 6e 73 65 25 3d 28 31 3c 3c 35 29 2b 31 36 |ponse%=(1<<5)+16| 000007d0 0a 20 57 48 45 4e 20 34 20 20 20 20 3a 20 72 65 |. WHEN 4 : re| 000007e0 73 70 6f 6e 73 65 25 3d 28 31 3c 3c 36 29 2b 31 |sponse%=(1<<6)+1| 000007f0 36 0a 4f 54 48 45 52 57 49 53 45 20 3a 20 72 65 |6.OTHERWISE : re| 00000800 73 70 6f 6e 73 65 25 3d 31 36 0a 45 4e 44 43 41 |sponse%=16.ENDCA| 00000810 53 45 0a 53 59 53 20 22 57 69 6d 70 5f 52 65 70 |SE.SYS "Wimp_Rep| 00000820 6f 72 74 45 72 72 6f 72 22 2c 77 69 6d 70 25 2c |ortError",wimp%,| 00000830 72 65 73 70 6f 6e 73 65 25 2c 74 69 74 6c 65 24 |response%,title$| 00000840 20 54 4f 20 2c 72 65 73 70 6f 6e 73 65 25 0a 45 | TO ,response%.E| 00000850 4e 44 50 52 4f 43 0a 3a 0a 44 45 46 20 46 4e 57 |NDPROC.:.DEF FNW| 00000860 69 6d 70 5f 57 69 6e 64 6f 77 43 61 6e 63 65 6c |imp_WindowCancel| 00000870 28 74 69 74 6c 65 24 2c 6d 65 73 73 61 67 65 24 |(title$,message$| 00000880 29 0a 24 28 77 69 6d 70 25 2b 34 29 3d 6d 65 73 |).$(wimp%+4)=mes| 00000890 73 61 67 65 24 0a 72 65 73 70 6f 6e 73 65 25 3d |sage$.response%=| 000008a0 32 33 0a 53 59 53 20 22 57 69 6d 70 5f 52 65 70 |23.SYS "Wimp_Rep| 000008b0 6f 72 74 45 72 72 6f 72 22 2c 77 69 6d 70 25 2c |ortError",wimp%,| 000008c0 72 65 73 70 6f 6e 73 65 25 2c 74 69 74 6c 65 24 |response%,title$| 000008d0 20 54 4f 20 2c 72 65 73 70 6f 6e 73 65 25 0a 3d | TO ,response%.=| 000008e0 72 65 73 70 6f 6e 73 65 25 2d 32 0a 3a 0a 44 45 |response%-2.:.DE| 000008f0 46 20 50 52 4f 43 57 69 6d 70 5f 57 69 6e 64 6f |F PROCWimp_Windo| 00000900 77 45 72 72 6f 72 42 6f 78 28 74 69 74 6c 65 24 |wErrorBox(title$| 00000910 2c 6d 65 73 73 61 67 65 24 29 0a 50 52 4f 43 57 |,message$).PROCW| 00000920 69 6d 70 5f 57 69 6e 64 6f 77 41 6c 65 72 74 42 |imp_WindowAlertB| 00000930 6f 78 28 74 69 74 6c 65 24 2c 6d 65 73 73 61 67 |ox(title$,messag| 00000940 65 24 2c 32 29 0a 45 4e 44 50 52 4f 43 0a 3a 0a |e$,2).ENDPROC.:.| 00000950 44 45 46 20 46 4e 57 69 6d 70 5f 57 69 6e 64 6f |DEF FNWimp_Windo| 00000960 77 54 69 74 6c 65 28 77 69 6e 64 6f 77 25 29 0a |wTitle(window%).| 00000970 77 69 6d 70 25 21 30 3d 77 69 6e 64 6f 77 25 0a |wimp%!0=window%.| 00000980 53 59 53 20 22 57 69 6d 70 5f 47 65 74 57 69 6e |SYS "Wimp_GetWin| 00000990 64 49 6e 66 6f 22 2c 2c 77 69 6d 70 25 0a 49 46 |dInfo",,wimp%.IF| 000009a0 20 28 28 77 69 6d 70 25 21 36 30 29 41 4e 44 26 | ((wimp%!60)AND&| 000009b0 31 30 30 29 3d 30 20 45 52 52 4f 52 20 31 2c 22 |100)=0 ERROR 1,"| 000009c0 54 69 74 6c 65 20 69 73 6e 27 74 20 69 6e 64 69 |Title isn't indi| 000009d0 72 65 63 74 65 64 22 0a 3d 24 28 77 69 6d 70 25 |rected".=$(wimp%| 000009e0 21 37 36 29 0a 3a 0a 44 45 46 20 46 4e 57 69 6d |!76).:.DEF FNWim| 000009f0 70 5f 57 69 6e 64 6f 77 4c 6f 61 64 28 77 69 6e |p_WindowLoad(win| 00000a00 64 6f 77 24 29 0a 3d 46 4e 57 69 6d 70 5f 57 69 |dow$).=FNWimp_Wi| 00000a10 6e 64 6f 77 4c 6f 61 64 46 72 6f 6d 28 77 69 6e |ndowLoadFrom(win| 00000a20 64 6f 77 24 2c 22 3c 4f 62 65 79 24 44 69 72 3e |dow$,"<Obey$Dir>| 00000a30 2e 54 65 6d 70 6c 61 74 65 73 22 29 0a 3a 0a 44 |.Templates").:.D| 00000a40 45 46 20 46 4e 57 69 6d 70 5f 57 69 6e 64 6f 77 |EF FNWimp_Window| 00000a50 4c 6f 61 64 46 72 6f 6d 28 77 69 6e 64 6f 77 24 |LoadFrom(window$| 00000a60 2c 74 65 6d 70 6c 61 74 65 24 29 0a 4c 4f 43 41 |,template$).LOCA| 00000a70 4c 20 63 25 2c 69 25 2c 6e 25 2c 6a 25 2c 73 70 |L c%,i%,n%,j%,sp| 00000a80 24 2c 73 70 32 24 0a 53 59 53 20 22 57 69 6d 70 |$,sp2$.SYS "Wimp| 00000a90 5f 4f 70 65 6e 54 65 6d 70 6c 61 74 65 22 2c 2c |_OpenTemplate",,| 00000aa0 74 65 6d 70 6c 61 74 65 24 0a 53 59 53 20 22 57 |template$.SYS "W| 00000ab0 69 6d 70 5f 4c 6f 61 64 54 65 6d 70 6c 61 74 65 |imp_LoadTemplate| 00000ac0 22 2c 2c 77 69 6d 70 25 2c 69 63 6f 6e 73 25 2c |",,wimp%,icons%,| 00000ad0 69 63 6f 6e 5f 6d 65 6d 6f 72 79 25 2c 2d 31 2c |icon_memory%,-1,| 00000ae0 77 69 6e 64 6f 77 24 2c 30 20 54 4f 20 2c 2c 69 |window$,0 TO ,,i| 00000af0 63 6f 6e 73 25 0a 43 41 53 45 20 73 70 72 69 74 |cons%.CASE sprit| 00000b00 65 73 25 20 4f 46 0a 20 57 48 45 4e 20 31 20 20 |es% OF. WHEN 1 | 00000b10 20 20 3a 20 77 69 6d 70 25 21 36 34 3d 73 70 72 | : wimp%!64=spr| 00000b20 69 74 65 73 25 0a 20 4f 54 48 45 52 57 49 53 45 |ites%. OTHERWISE| 00000b30 20 3a 20 77 69 6d 70 25 21 36 34 3d 46 4e 45 76 | : wimp%!64=FNEv| 00000b40 65 6e 74 5f 53 70 72 69 74 65 73 28 77 69 6e 64 |ent_Sprites(wind| 00000b50 6f 77 25 29 0a 45 4e 44 43 41 53 45 0a 53 59 53 |ow%).ENDCASE.SYS| 00000b60 20 22 57 69 6d 70 5f 43 72 65 61 74 65 57 69 6e | "Wimp_CreateWin| 00000b70 64 6f 77 22 2c 2c 77 69 6d 70 25 20 54 4f 20 63 |dow",,wimp% TO c| 00000b80 25 0a 53 59 53 20 22 57 69 6d 70 5f 43 6c 6f 73 |%.SYS "Wimp_Clos| 00000b90 65 54 65 6d 70 6c 61 74 65 22 0a 53 59 53 20 22 |eTemplate".SYS "| 00000ba0 57 69 6d 70 5f 57 68 69 63 68 49 63 6f 6e 22 2c |Wimp_WhichIcon",| 00000bb0 63 25 2c 77 69 6d 70 25 2b 34 30 2c 31 2b 32 2b |c%,wimp%+40,1+2+| 00000bc0 28 31 3c 3c 38 29 2c 32 2b 28 31 3c 3c 38 29 0a |(1<<8),2+(1<<8).| 00000bd0 43 41 53 45 20 77 69 6d 70 25 21 34 30 20 4f 46 |CASE wimp%!40 OF| 00000be0 0a 20 57 48 45 4e 20 2d 31 20 20 20 3a 0a 20 4f |. WHEN -1 :. O| 00000bf0 54 48 45 52 57 49 53 45 20 3a 20 69 25 3d 34 30 |THERWISE : i%=40| 00000c00 0a 20 52 45 50 45 41 54 0a 20 20 20 77 69 6d 70 |. REPEAT. wimp| 00000c10 25 21 34 3d 77 69 6d 70 25 21 69 25 20 3a 20 77 |%!4=wimp%!i% : w| 00000c20 69 6d 70 25 21 30 3d 63 25 0a 20 20 20 53 59 53 |imp%!0=c%. SYS| 00000c30 20 22 57 69 6d 70 5f 47 65 74 49 63 6f 6e 53 74 | "Wimp_GetIconSt| 00000c40 61 74 65 22 2c 2c 77 69 6d 70 25 0a 20 20 20 73 |ate",,wimp%. s| 00000c50 70 24 3d 46 4e 57 69 6d 70 5f 47 65 74 53 74 72 |p$=FNWimp_GetStr| 00000c60 69 6e 67 41 74 41 64 64 72 65 73 73 28 77 69 6d |ingAtAddress(wim| 00000c70 70 25 21 32 38 29 0a 20 20 20 53 59 53 20 22 57 |p%!28). SYS "W| 00000c80 69 6d 70 5f 44 65 6c 65 74 65 49 63 6f 6e 22 2c |imp_DeleteIcon",| 00000c90 2c 77 69 6d 70 25 0a 20 20 20 43 41 53 45 20 73 |,wimp%. CASE s| 00000ca0 70 72 69 74 65 73 25 20 4f 46 0a 20 20 20 20 57 |prites% OF. W| 00000cb0 48 45 4e 20 31 20 20 20 20 3a 20 77 69 6d 70 25 |HEN 1 : wimp%| 00000cc0 21 33 32 3d 31 0a 20 20 20 20 4f 54 48 45 52 57 |!32=1. OTHERW| 00000cd0 49 53 45 20 3a 0a 20 20 20 20 20 53 59 53 20 22 |ISE :. SYS "| 00000ce0 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c 26 31 30 |OS_SpriteOp",&10| 00000cf0 38 2c 73 70 72 69 74 65 73 25 20 54 4f 20 2c 2c |8,sprites% TO ,,| 00000d00 2c 6e 25 0a 20 20 20 20 20 6a 25 3d 30 0a 20 20 |,n%. j%=0. | 00000d10 20 20 20 52 45 50 45 41 54 20 3a 20 6a 25 2b 3d | REPEAT : j%+=| 00000d20 31 0a 20 20 20 20 20 20 53 59 53 20 22 4f 53 5f |1. SYS "OS_| 00000d30 53 70 72 69 74 65 4f 70 22 2c 26 31 30 44 2c 73 |SpriteOp",&10D,s| 00000d40 70 72 69 74 65 73 25 2c 70 6f 69 6e 74 65 72 5f |prites%,pointer_| 00000d50 62 6c 6f 63 6b 25 2c 32 30 2c 6a 25 0a 20 20 20 |block%,20,j%. | 00000d60 20 20 20 73 70 32 24 3d 46 4e 57 69 6d 70 5f 47 | sp2$=FNWimp_G| 00000d70 65 74 53 74 72 69 6e 67 41 74 41 64 64 72 65 73 |etStringAtAddres| 00000d80 73 28 70 6f 69 6e 74 65 72 5f 62 6c 6f 63 6b 25 |s(pointer_block%| 00000d90 29 0a 20 20 20 20 20 55 4e 54 49 4c 20 6a 25 3d |). UNTIL j%=| 00000da0 6e 25 20 4f 52 20 73 70 24 3d 73 70 32 24 0a 20 |n% OR sp$=sp2$. | 00000db0 20 20 20 20 49 46 20 73 70 24 3d 73 70 32 24 20 | IF sp$=sp2$ | 00000dc0 54 48 45 4e 20 77 69 6d 70 25 21 33 32 3d 73 70 |THEN wimp%!32=sp| 00000dd0 72 69 74 65 73 25 20 45 4c 53 45 20 77 69 6d 70 |rites% ELSE wimp| 00000de0 25 21 33 32 3d 31 0a 20 20 20 45 4e 44 43 41 53 |%!32=1. ENDCAS| 00000df0 45 0a 20 20 20 77 69 6d 70 25 21 34 3d 63 25 0a |E. wimp%!4=c%.| 00000e00 20 20 20 53 59 53 20 22 57 69 6d 70 5f 43 72 65 | SYS "Wimp_Cre| 00000e10 61 74 65 49 63 6f 6e 22 2c 2c 77 69 6d 70 25 2b |ateIcon",,wimp%+| 00000e20 34 20 54 4f 20 68 61 6e 64 6c 65 25 0a 20 20 20 |4 TO handle%. | 00000e30 69 25 2b 3d 34 0a 20 55 4e 54 49 4c 20 28 77 69 |i%+=4. UNTIL (wi| 00000e40 6d 70 25 21 69 25 29 3d 2d 31 0a 45 4e 44 43 41 |mp%!i%)=-1.ENDCA| 00000e50 53 45 0a 3d 63 25 0a 3a 0a 44 45 46 20 50 52 4f |SE.=c%.:.DEF PRO| 00000e60 43 57 69 6d 70 5f 57 69 6e 64 6f 77 42 72 69 6e |CWimp_WindowBrin| 00000e70 67 54 6f 54 6f 70 28 77 69 6e 64 6f 77 25 29 0a |gToTop(window%).| 00000e80 21 77 69 6d 70 25 3d 77 69 6e 64 6f 77 25 0a 53 |!wimp%=window%.S| 00000e90 59 53 20 22 57 69 6d 70 5f 47 65 74 57 69 6e 64 |YS "Wimp_GetWind| 00000ea0 6f 77 53 74 61 74 65 22 2c 2c 77 69 6d 70 25 0a |owState",,wimp%.| 00000eb0 77 69 6d 70 25 21 32 38 3d 2d 31 0a 53 59 53 20 |wimp%!28=-1.SYS | 00000ec0 22 57 69 6d 70 5f 4f 70 65 6e 57 69 6e 64 6f 77 |"Wimp_OpenWindow| 00000ed0 22 2c 2c 77 69 6d 70 25 0a 45 4e 44 50 52 4f 43 |",,wimp%.ENDPROC| 00000ee0 0a 3a 0a 44 45 46 20 50 52 4f 43 57 69 6d 70 5f |.:.DEF PROCWimp_| 00000ef0 57 69 6e 64 6f 77 43 6c 6f 73 65 28 77 69 6e 64 |WindowClose(wind| 00000f00 6f 77 25 29 0a 21 77 69 6d 70 25 3d 77 69 6e 64 |ow%).!wimp%=wind| 00000f10 6f 77 25 0a 53 59 53 20 22 57 69 6d 70 5f 43 6c |ow%.SYS "Wimp_Cl| 00000f20 6f 73 65 57 69 6e 64 6f 77 22 2c 2c 77 69 6d 70 |oseWindow",,wimp| 00000f30 25 0a 45 4e 44 50 52 4f 43 0a 3a 0a 44 45 46 20 |%.ENDPROC.:.DEF | 00000f40 50 52 4f 43 57 69 6d 70 5f 57 69 6e 64 6f 77 46 |PROCWimp_WindowF| 00000f50 6f 72 63 65 44 72 61 77 28 77 69 6e 64 6f 77 25 |orceDraw(window%| 00000f60 29 0a 43 41 53 45 20 77 69 6e 64 6f 77 25 20 4f |).CASE window% O| 00000f70 46 0a 20 57 48 45 4e 20 2d 31 20 20 20 3a 20 53 |F. WHEN -1 : S| 00000f80 59 53 20 22 57 69 6d 70 5f 46 6f 72 63 65 52 65 |YS "Wimp_ForceRe| 00000f90 64 72 61 77 22 2c 2d 31 2c 30 2c 30 2c 32 2a 31 |draw",-1,0,0,2*1| 00000fa0 32 38 30 2c 32 2a 31 30 32 34 0a 20 4f 54 48 45 |280,2*1024. OTHE| 00000fb0 52 57 49 53 45 20 3a 20 53 59 53 20 22 57 69 6d |RWISE : SYS "Wim| 00000fc0 70 5f 46 6f 72 63 65 52 65 64 72 61 77 22 2c 77 |p_ForceRedraw",w| 00000fd0 69 6e 64 6f 77 25 2c 30 2c 2d 32 2a 31 30 32 34 |indow%,0,-2*1024| 00000fe0 2c 32 2a 31 32 38 30 2c 30 0a 45 4e 44 43 41 53 |,2*1280,0.ENDCAS| 00000ff0 45 0a 45 4e 44 50 52 4f 43 0a 3a 0a 44 45 46 20 |E.ENDPROC.:.DEF | 00001000 50 52 4f 43 57 69 6d 70 5f 57 69 6e 64 6f 77 4f |PROCWimp_WindowO| 00001010 70 65 6e 28 77 69 6e 64 6f 77 25 29 0a 21 77 69 |pen(window%).!wi| 00001020 6d 70 25 3d 77 69 6e 64 6f 77 25 0a 53 59 53 20 |mp%=window%.SYS | 00001030 22 57 69 6d 70 5f 47 65 74 57 69 6e 64 6f 77 53 |"Wimp_GetWindowS| 00001040 74 61 74 65 22 2c 2c 77 69 6d 70 25 0a 53 59 53 |tate",,wimp%.SYS| 00001050 20 22 57 69 6d 70 5f 4f 70 65 6e 57 69 6e 64 6f | "Wimp_OpenWindo| 00001060 77 22 2c 2c 77 69 6d 70 25 0a 45 4e 44 50 52 4f |w",,wimp%.ENDPRO| 00001070 43 0a 3a 0a 50 52 4f 43 57 69 6d 70 5f 57 69 6e |C.:.PROCWimp_Win| 00001080 64 6f 77 49 6e 74 65 72 66 61 63 65 0a 53 59 53 |dowInterface.SYS| 00001090 22 57 69 6d 70 5f 42 6f 72 64 65 72 57 69 6e 64 |"Wimp_BorderWind| 000010a0 6f 77 22 2c 2c 77 69 6d 70 25 0a 45 4e 44 50 52 |ow",,wimp%.ENDPR| 000010b0 4f 43 0a 52 45 4d 7c 0a 52 45 4d 7c 0a 52 45 4d |OC.REM|.REM|.REM| 000010c0 7c 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 20 20 ||.REM| | 000010d0 20 20 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d | --------| 000010e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 000010f0 2d 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 20 20 |-.REM| | 00001100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001110 32 2e a0 49 63 6f 6e 73 0a 52 45 4d 7c 20 20 20 |2..Icons.REM| | 00001120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d | -| 00001130 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00001140 2d 2d 2d 2d 2d 2d 2d 2d 0a 52 45 4d 7c 0a 52 45 |--------.REM|.RE| 00001150 4d 7c 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 20 |M|.REM| | 00001160 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ------------| 00001170 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00001180 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 52 |--------------.R| 00001190 45 4d 7c 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 |EM|.REM| | 000011a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 72 | Pr| 000011b0 6f 63 65 64 75 72 65 73 20 3a 0a 52 45 4d 7c 0a |ocedures :.REM|.| 000011c0 52 45 4d 7c 20 20 20 20 20 20 20 20 20 20 20 20 |REM| | 000011d0 20 20 46 4e 57 69 6d 70 5f 49 63 6f 6e 42 61 72 | FNWimp_IconBar| 000011e0 28 53 70 72 69 74 65 24 29 0a 52 45 4d 7c 20 20 |(Sprite$).REM| | 000011f0 20 20 20 20 20 20 20 20 20 20 20 20 50 52 4f 43 | PROC| 00001200 57 69 6d 70 5f 49 63 6f 6e 43 61 72 65 74 28 77 |Wimp_IconCaret(w| 00001210 69 6e 64 6f 77 25 2c 69 63 6f 6e 25 2c 63 68 61 |indow%,icon%,cha| 00001220 72 73 25 29 0a 52 45 4d 7c 20 20 20 20 20 20 20 |rs%).REM| | 00001230 20 20 20 20 20 20 20 46 4e 57 69 6d 70 5f 49 63 | FNWimp_Ic| 00001240 6f 6e 54 65 78 74 28 77 69 6e 64 6f 77 25 2c 69 |onText(window%,i| 00001250 63 6f 6e 25 29 0a 52 45 4d 7c 20 20 20 20 20 20 |con%).REM| | 00001260 20 20 20 20 20 20 20 20 46 4e 57 69 6d 70 5f 49 | FNWimp_I| 00001270 63 6f 6e 56 61 6c 69 64 61 74 69 6f 6e 28 77 69 |conValidation(wi| 00001280 6e 64 6f 77 25 2c 69 63 6f 6e 25 29 0a 52 45 4d |ndow%,icon%).REM| 00001290 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 || P| 000012a0 52 4f 43 57 69 6d 70 5f 49 63 6f 6e 44 69 73 61 |ROCWimp_IconDisa| 000012b0 62 6c 65 28 77 69 6e 64 6f 77 25 2c 69 63 6f 6e |ble(window%,icon| 000012c0 25 29 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 20 |%).REM| | 000012d0 20 20 20 20 20 50 52 4f 43 57 69 6d 70 5f 49 63 | PROCWimp_Ic| 000012e0 6f 6e 45 6e 61 62 6c 65 28 77 69 6e 64 6f 77 25 |onEnable(window%| 000012f0 2c 69 63 6f 6e 25 29 0a 52 45 4d 7c 20 20 20 20 |,icon%).REM| | 00001300 20 20 20 20 20 20 20 20 20 20 46 4e 57 69 6d 70 | FNWimp| 00001310 5f 49 63 6f 6e 50 75 74 53 70 72 69 74 65 28 77 |_IconPutSprite(w| 00001320 69 6e 64 6f 77 25 2c 69 63 6f 6e 25 2c 73 70 72 |indow%,icon%,spr| 00001330 69 74 65 24 29 0a 52 45 4d 7c 20 20 20 20 20 20 |ite$).REM| | 00001340 20 20 20 20 20 20 20 20 50 52 4f 43 57 69 6d 70 | PROCWimp| 00001350 5f 49 63 6f 6e 50 75 74 54 65 78 74 28 77 69 6e |_IconPutText(win| 00001360 64 6f 77 25 2c 69 63 6f 6e 25 2c 74 65 78 74 24 |dow%,icon%,text$| 00001370 29 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 20 20 |).REM| | 00001380 20 20 20 20 50 52 4f 43 57 69 6d 70 5f 49 63 6f | PROCWimp_Ico| 00001390 6e 49 6e 74 65 72 66 61 63 65 53 74 61 72 74 0a |nInterfaceStart.| 000013a0 52 45 4d 7c 20 20 20 20 20 20 20 20 20 20 20 20 |REM| | 000013b0 20 20 50 52 4f 43 57 69 6d 70 5f 49 63 6f 6e 49 | PROCWimp_IconI| 000013c0 6e 74 65 72 66 61 63 65 46 69 6e 69 73 68 0a 52 |nterfaceFinish.R| 000013d0 45 4d 7c 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 |EM|.REM| | 000013e0 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -----------| 000013f0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00001400 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a |---------------.| 00001410 52 45 4d 7c 0a 3a 0a 44 45 46 20 46 4e 57 69 6d |REM|.:.DEF FNWim| 00001420 70 5f 49 63 6f 6e 42 61 72 28 53 70 72 69 74 65 |p_IconBar(Sprite| 00001430 24 29 0a 4c 4f 43 41 4c 20 69 63 6f 6e 25 0a 77 |$).LOCAL icon%.w| 00001440 69 6d 70 25 21 30 3d 2d 31 0a 77 69 6d 70 25 21 |imp%!0=-1.wimp%!| 00001450 34 3d 30 20 20 20 20 20 3a 20 77 69 6d 70 25 21 |4=0 : wimp%!| 00001460 38 3d 30 0a 77 69 6d 70 25 21 31 32 3d 36 38 20 |8=0.wimp%!12=68 | 00001470 3a 20 77 69 6d 70 25 21 31 36 3d 36 38 0a 77 69 |: wimp%!16=68.wi| 00001480 6d 70 25 21 32 30 3d 26 33 30 30 32 0a 24 28 77 |mp%!20=&3002.$(w| 00001490 69 6d 70 25 2b 32 34 29 3d 53 70 72 69 74 65 24 |imp%+24)=Sprite$| 000014a0 0a 53 59 53 20 22 57 69 6d 70 5f 43 72 65 61 74 |.SYS "Wimp_Creat| 000014b0 65 49 63 6f 6e 22 2c 2c 77 69 6d 70 25 20 54 4f |eIcon",,wimp% TO| 000014c0 20 69 63 6f 6e 25 0a 3d 69 63 6f 6e 25 0a 3a 0a | icon%.=icon%.:.| 000014d0 44 45 46 20 50 52 4f 43 57 69 6d 70 5f 49 63 6f |DEF PROCWimp_Ico| 000014e0 6e 43 61 72 65 74 28 77 69 6e 64 6f 77 25 2c 69 |nCaret(window%,i| 000014f0 63 6f 6e 25 2c 63 68 61 72 73 25 29 0a 53 59 53 |con%,chars%).SYS| 00001500 20 22 57 69 6d 70 5f 53 65 74 43 61 72 65 74 50 | "Wimp_SetCaretP| 00001510 6f 73 69 74 69 6f 6e 22 2c 77 69 6e 64 6f 77 25 |osition",window%| 00001520 2c 69 63 6f 6e 25 2c 2c 2c 2d 31 2c 63 68 61 72 |,icon%,,,-1,char| 00001530 73 25 0a 45 4e 44 50 52 4f 43 0a 3a 0a 44 45 46 |s%.ENDPROC.:.DEF| 00001540 20 46 4e 57 69 6d 70 5f 49 63 6f 6e 54 65 78 74 | FNWimp_IconText| 00001550 28 77 69 6e 64 6f 77 25 2c 69 63 6f 6e 25 29 0a |(window%,icon%).| 00001560 77 69 6d 70 25 21 30 3d 77 69 6e 64 6f 77 25 20 |wimp%!0=window% | 00001570 3a 20 77 69 6d 70 25 21 34 3d 69 63 6f 6e 25 0a |: wimp%!4=icon%.| 00001580 53 59 53 20 22 57 69 6d 70 5f 47 65 74 49 63 6f |SYS "Wimp_GetIco| 00001590 6e 53 74 61 74 65 22 2c 2c 77 69 6d 70 25 0a 49 |nState",,wimp%.I| 000015a0 46 20 28 28 77 69 6d 70 25 21 32 34 29 20 41 4e |F ((wimp%!24) AN| 000015b0 44 20 26 31 30 30 29 3d 30 20 45 52 52 4f 52 20 |D &100)=0 ERROR | 000015c0 31 2c 22 49 63 6f 6e 20 69 73 6e 27 74 20 69 6e |1,"Icon isn't in| 000015d0 64 69 72 65 63 74 65 64 22 0a 3d 24 28 77 69 6d |directed".=$(wim| 000015e0 70 25 21 32 38 29 0a 3a 0a 44 45 46 20 46 4e 57 |p%!28).:.DEF FNW| 000015f0 69 6d 70 5f 49 63 6f 6e 56 61 6c 69 64 61 74 69 |imp_IconValidati| 00001600 6f 6e 28 77 69 6e 64 6f 77 25 2c 69 63 6f 6e 25 |on(window%,icon%| 00001610 29 0a 77 69 6d 70 25 21 30 3d 77 69 6e 64 6f 77 |).wimp%!0=window| 00001620 25 20 3a 20 77 69 6d 70 25 21 34 3d 69 63 6f 6e |% : wimp%!4=icon| 00001630 25 0a 53 59 53 20 22 57 69 6d 70 5f 47 65 74 49 |%.SYS "Wimp_GetI| 00001640 63 6f 6e 53 74 61 74 65 22 2c 2c 77 69 6d 70 25 |conState",,wimp%| 00001650 0a 49 46 20 28 28 77 69 6d 70 25 21 32 34 29 20 |.IF ((wimp%!24) | 00001660 41 4e 44 20 26 31 30 30 29 3d 30 20 45 52 52 4f |AND &100)=0 ERRO| 00001670 52 20 31 2c 22 49 63 6f 6e 20 69 73 6e 27 74 20 |R 1,"Icon isn't | 00001680 69 6e 64 69 72 65 63 74 65 64 22 0a 3d 24 28 77 |indirected".=$(w| 00001690 69 6d 70 25 21 33 32 29 0a 3a 0a 44 45 46 20 50 |imp%!32).:.DEF P| 000016a0 52 4f 43 57 69 6d 70 5f 49 63 6f 6e 44 69 73 61 |ROCWimp_IconDisa| 000016b0 62 6c 65 28 77 69 6e 64 6f 77 25 2c 69 63 6f 6e |ble(window%,icon| 000016c0 25 29 0a 77 69 6d 70 25 21 30 3d 77 69 6e 64 6f |%).wimp%!0=windo| 000016d0 77 25 20 3a 20 77 69 6d 70 25 21 34 3d 69 63 6f |w% : wimp%!4=ico| 000016e0 6e 25 0a 77 69 6d 70 25 21 38 3d 31 3c 3c 32 32 |n%.wimp%!8=1<<22| 000016f0 20 20 20 3a 20 77 69 6d 70 25 21 31 32 3d 31 3c | : wimp%!12=1<| 00001700 3c 32 32 0a 53 59 53 20 22 57 69 6d 70 5f 53 65 |<22.SYS "Wimp_Se| 00001710 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c 77 69 6d |tIconState",,wim| 00001720 70 25 0a 45 4e 44 50 52 4f 43 0a 3a 0a 44 45 46 |p%.ENDPROC.:.DEF| 00001730 20 50 52 4f 43 57 69 6d 70 5f 49 63 6f 6e 45 6e | PROCWimp_IconEn| 00001740 61 62 6c 65 28 77 69 6e 64 6f 77 25 2c 69 63 6f |able(window%,ico| 00001750 6e 25 29 0a 77 69 6d 70 25 21 30 3d 77 69 6e 64 |n%).wimp%!0=wind| 00001760 6f 77 25 20 3a 20 77 69 6d 70 25 21 34 3d 69 63 |ow% : wimp%!4=ic| 00001770 6f 6e 25 0a 77 69 6d 70 25 21 38 3d 30 20 20 20 |on%.wimp%!8=0 | 00001780 20 20 20 20 3a 20 77 69 6d 70 25 21 31 32 3d 31 | : wimp%!12=1| 00001790 3c 3c 32 32 0a 53 59 53 20 22 57 69 6d 70 5f 53 |<<22.SYS "Wimp_S| 000017a0 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c 77 69 |etIconState",,wi| 000017b0 6d 70 25 0a 45 4e 44 50 52 4f 43 0a 3a 0a 44 45 |mp%.ENDPROC.:.DE| 000017c0 46 20 46 4e 57 69 6d 70 5f 49 63 6f 6e 50 75 74 |F FNWimp_IconPut| 000017d0 53 70 72 69 74 65 28 77 69 6e 64 6f 77 25 2c 69 |Sprite(window%,i| 000017e0 63 6f 6e 25 2c 73 70 72 69 74 65 24 29 0a 77 69 |con%,sprite$).wi| 000017f0 6d 70 25 21 30 3d 77 69 6e 64 6f 77 25 3a 77 69 |mp%!0=window%:wi| 00001800 6d 70 25 21 34 3d 69 63 6f 6e 25 0a 53 59 53 20 |mp%!4=icon%.SYS | 00001810 22 57 69 6d 70 5f 47 65 74 49 63 6f 6e 53 74 61 |"Wimp_GetIconSta| 00001820 74 65 22 2c 2c 77 69 6d 70 25 0a 53 59 53 20 22 |te",,wimp%.SYS "| 00001830 57 69 6d 70 5f 44 65 6c 65 74 65 49 63 6f 6e 22 |Wimp_DeleteIcon"| 00001840 2c 2c 77 69 6d 70 25 0a 77 69 6d 70 25 21 34 3d |,,wimp%.wimp%!4=| 00001850 77 69 6d 70 25 21 38 20 20 20 3a 20 77 69 6d 70 |wimp%!8 : wimp| 00001860 25 21 38 3d 77 69 6d 70 25 21 31 32 20 20 3a 20 |%!8=wimp%!12 : | 00001870 77 69 6d 70 25 21 31 32 3d 77 69 6d 70 25 21 31 |wimp%!12=wimp%!1| 00001880 36 0a 77 69 6d 70 25 21 31 36 3d 77 69 6d 70 25 |6.wimp%!16=wimp%| 00001890 21 32 30 20 3a 20 77 69 6d 70 25 21 32 30 3d 77 |!20 : wimp%!20=w| 000018a0 69 6d 70 25 21 32 34 20 3a 20 24 28 77 69 6d 70 |imp%!24 : $(wimp| 000018b0 25 2b 32 34 29 3d 73 70 72 69 74 65 24 0a 53 59 |%+24)=sprite$.SY| 000018c0 53 20 22 57 69 6d 70 5f 43 72 65 61 74 65 49 63 |S "Wimp_CreateIc| 000018d0 6f 6e 22 2c 2c 77 69 6d 70 25 20 54 4f 20 69 63 |on",,wimp% TO ic| 000018e0 6f 6e 25 0a 3d 69 63 6f 6e 25 0a 3a 0a 44 45 46 |on%.=icon%.:.DEF| 000018f0 20 50 52 4f 43 57 69 6d 70 5f 49 63 6f 6e 50 75 | PROCWimp_IconPu| 00001900 74 54 65 78 74 28 77 69 6e 64 6f 77 25 2c 69 63 |tText(window%,ic| 00001910 6f 6e 25 2c 74 65 78 74 24 29 0a 77 69 6d 70 25 |on%,text$).wimp%| 00001920 21 30 3d 77 69 6e 64 6f 77 25 20 3a 20 77 69 6d |!0=window% : wim| 00001930 70 25 21 34 3d 69 63 6f 6e 25 0a 53 59 53 20 22 |p%!4=icon%.SYS "| 00001940 57 69 6d 70 5f 47 65 74 49 63 6f 6e 53 74 61 74 |Wimp_GetIconStat| 00001950 65 22 2c 2c 77 69 6d 70 25 0a 49 46 20 28 28 77 |e",,wimp%.IF ((w| 00001960 69 6d 70 25 21 32 34 29 20 41 4e 44 20 26 31 30 |imp%!24) AND &10| 00001970 30 29 3d 30 20 45 52 52 4f 52 20 31 2c 22 49 63 |0)=0 ERROR 1,"Ic| 00001980 6f 6e 20 69 73 6e 27 74 20 69 6e 64 69 72 65 63 |on isn't indirec| 00001990 74 65 64 22 0a 24 28 77 69 6d 70 25 21 32 38 29 |ted".$(wimp%!28)| 000019a0 3d 74 65 78 74 24 0a 77 69 6d 70 25 21 30 3d 77 |=text$.wimp%!0=w| 000019b0 69 6e 64 6f 77 25 20 3a 20 77 69 6d 70 25 21 34 |indow% : wimp%!4| 000019c0 3d 69 63 6f 6e 25 0a 77 69 6d 70 25 21 38 3d 30 |=icon%.wimp%!8=0| 000019d0 20 3a 20 77 69 6d 70 25 21 31 32 3d 30 0a 53 59 | : wimp%!12=0.SY| 000019e0 53 20 22 57 69 6d 70 5f 53 65 74 49 63 6f 6e 53 |S "Wimp_SetIconS| 000019f0 74 61 74 65 22 2c 2c 77 69 6d 70 25 0a 45 4e 44 |tate",,wimp%.END| 00001a00 50 52 4f 43 0a 3a 0a 44 45 46 20 50 52 4f 43 57 |PROC.:.DEF PROCW| 00001a10 69 6d 70 5f 49 63 6f 6e 49 6e 74 65 72 66 61 63 |imp_IconInterfac| 00001a20 65 53 74 61 72 74 0a 53 59 53 22 57 69 6d 70 5f |eStart.SYS"Wimp_| 00001a30 42 6f 72 64 65 72 49 63 6f 6e 22 2c 2c 77 69 6d |BorderIcon",,wim| 00001a40 70 25 0a 45 4e 44 50 52 4f 43 0a 3a 0a 44 45 46 |p%.ENDPROC.:.DEF| 00001a50 20 50 52 4f 43 57 69 6d 70 5f 49 63 6f 6e 49 6e | PROCWimp_IconIn| 00001a60 74 65 72 66 61 63 65 46 69 6e 69 73 68 0a 77 69 |terfaceFinish.wi| 00001a70 6d 70 25 21 38 3d 30 0a 53 59 53 22 57 69 6d 70 |mp%!8=0.SYS"Wimp| 00001a80 5f 42 6f 72 64 65 72 49 63 6f 6e 22 2c 2c 77 69 |_BorderIcon",,wi| 00001a90 6d 70 25 0a 45 4e 44 50 52 4f 43 0a 3a 0a 52 45 |mp%.ENDPROC.:.RE| 00001aa0 4d 7c 0a 52 45 4d 7c 0a 52 45 4d 7c 0a 52 45 4d |M|.REM|.REM|.REM| 00001ab0 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 || | 00001ac0 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------| 00001ad0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 52 45 4d |------------.REM| 00001ae0 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 || | 00001af0 20 20 20 20 20 20 20 20 20 20 20 33 2e a0 4d 65 | 3..Me| 00001b00 6e 75 73 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 |nus.REM| | 00001b10 20 20 20 20 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d | ------| 00001b20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00001b30 2d 2d 2d 0a 52 45 4d 7c 0a 52 45 4d 7c 0a 52 45 |---.REM|.REM|.RE| 00001b40 4d 7c 20 20 20 20 20 20 20 20 20 20 20 2d 2d 2d |M| ---| 00001b50 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00001b70 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 52 45 4d 7c |-----------.REM|| 00001b80 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 20 20 20 |.REM| | 00001b90 20 20 20 20 20 20 20 20 20 20 20 50 72 6f 63 65 | Proce| 00001ba0 64 75 72 65 73 20 3a 0a 52 45 4d 7c 0a 52 45 4d |dures :.REM|.REM| 00001bb0 7c 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 20 20 ||.REM| | 00001bc0 20 20 50 52 4f 43 57 69 6d 70 5f 4d 65 6e 75 41 | PROCWimp_MenuA| 00001bd0 64 6a 75 73 74 4f 6e 28 6d 65 6e 75 25 29 0a 52 |djustOn(menu%).R| 00001be0 45 4d 7c 20 20 20 20 20 20 20 20 20 20 20 20 46 |EM| F| 00001bf0 4e 57 69 6d 70 5f 4d 65 6e 75 43 68 6f 69 63 65 |NWimp_MenuChoice| 00001c00 28 6c 65 76 65 6c 25 29 0a 52 45 4d 7c 20 20 20 |(level%).REM| | 00001c10 20 20 20 20 20 20 20 20 20 46 4e 57 69 6d 70 5f | FNWimp_| 00001c20 4d 65 6e 75 43 72 65 61 74 65 28 6d 65 6e 75 24 |MenuCreate(menu$| 00001c30 29 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 20 20 |).REM| | 00001c40 20 20 46 4e 57 69 6d 70 5f 4d 65 6e 75 43 6f 6c | FNWimp_MenuCol| 00001c50 6f 75 72 73 0a 52 45 4d 7c 20 20 20 20 20 20 20 |ours.REM| | 00001c60 20 20 20 20 20 46 4e 57 69 6d 70 5f 4d 65 6e 75 | FNWimp_Menu| 00001c70 43 72 65 61 74 65 43 6f 6c 6f 75 72 73 28 74 69 |CreateColours(ti| 00001c80 74 6c 65 24 29 0a 52 45 4d 7c 20 20 20 20 20 20 |tle$).REM| | 00001c90 20 20 20 20 20 20 46 4e 57 69 6d 70 5f 4d 65 6e | FNWimp_Men| 00001ca0 75 4e 6f 4f 66 45 6e 74 72 69 65 73 28 6d 65 6e |uNoOfEntries(men| 00001cb0 75 24 29 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 |u$).REM| | 00001cc0 20 20 20 20 50 52 4f 43 57 69 6d 70 5f 4d 65 6e | PROCWimp_Men| 00001cd0 75 42 61 63 6b 47 72 6f 75 6e 64 43 6f 6c 6f 75 |uBackGroundColou| 00001ce0 72 28 6d 65 6e 75 25 2c 69 74 65 6d 25 2c 63 6f |r(menu%,item%,co| 00001cf0 6c 6f 75 72 25 29 0a 52 45 4d 7c 20 20 20 20 20 |lour%).REM| | 00001d00 20 20 20 20 20 20 20 50 52 4f 43 57 69 6d 70 5f | PROCWimp_| 00001d10 4d 65 6e 75 43 65 6e 74 72 65 28 6d 65 6e 75 25 |MenuCentre(menu%| 00001d20 2c 69 74 65 6d 25 29 0a 52 45 4d 7c 20 20 20 20 |,item%).REM| | 00001d30 20 20 20 20 20 20 20 20 50 52 4f 43 57 69 6d 70 | PROCWimp| 00001d40 5f 4d 65 6e 75 43 6c 6f 73 65 0a 52 45 4d 7c 20 |_MenuClose.REM| | 00001d50 20 20 20 20 20 20 20 20 20 20 20 50 52 4f 43 57 | PROCW| 00001d60 69 6d 70 5f 4d 65 6e 75 44 69 73 61 62 6c 65 28 |imp_MenuDisable(| 00001d70 6d 65 6e 75 25 2c 69 74 65 6d 25 29 0a 52 45 4d |menu%,item%).REM| 00001d80 7c 20 20 20 20 20 20 20 20 20 20 20 20 50 52 4f || PRO| 00001d90 43 57 69 6d 70 5f 4d 65 6e 75 44 6f 74 74 65 64 |CWimp_MenuDotted| 00001da0 4c 69 6e 65 28 6d 65 6e 75 25 2c 69 74 65 6d 25 |Line(menu%,item%| 00001db0 29 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 20 20 |).REM| | 00001dc0 20 20 50 52 4f 43 57 69 6d 70 5f 4d 65 6e 75 45 | PROCWimp_MenuE| 00001dd0 6e 61 62 6c 65 28 6d 65 6e 75 25 2c 69 74 65 6d |nable(menu%,item| 00001de0 25 29 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 20 |%).REM| | 00001df0 20 20 20 50 52 4f 43 57 69 6d 70 5f 4d 65 6e 75 | PROCWimp_Menu| 00001e00 46 6f 72 65 67 72 6f 75 6e 64 43 6f 6c 6f 75 72 |ForegroundColour| 00001e10 28 6d 65 6e 75 25 2c 69 74 65 6d 25 2c 63 6f 6c |(menu%,item%,col| 00001e20 6f 75 72 25 29 0a 52 45 4d 7c 20 20 20 20 20 20 |our%).REM| | 00001e30 20 20 20 20 20 20 50 52 4f 43 57 69 6d 70 5f 4d | PROCWimp_M| 00001e40 65 6e 75 47 6c 75 65 28 6d 65 6e 75 31 25 2c 69 |enuGlue(menu1%,i| 00001e50 74 65 6d 25 2c 6d 65 6e 75 32 25 29 0a 52 45 4d |tem%,menu2%).REM| 00001e60 7c 20 20 20 20 20 20 20 20 20 20 20 20 50 52 4f || PRO| 00001e70 43 57 69 6d 70 5f 4d 65 6e 75 49 74 65 6d 28 6d |CWimp_MenuItem(m| 00001e80 65 6e 75 25 2c 69 74 65 6d 25 2c 69 74 65 6d 24 |enu%,item%,item$| 00001e90 29 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 20 20 |).REM| | 00001ea0 20 20 50 52 4f 43 57 69 6d 70 5f 4d 65 6e 75 4d | PROCWimp_MenuM| 00001eb0 65 73 73 61 67 65 28 6d 65 6e 75 25 2c 69 74 65 |essage(menu%,ite| 00001ec0 6d 25 29 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 |m%).REM| | 00001ed0 20 20 20 20 50 52 4f 43 57 69 6d 70 5f 4d 65 6e | PROCWimp_Men| 00001ee0 75 50 6f 70 55 70 28 4d 65 6e 75 25 2c 78 25 2c |uPopUp(Menu%,x%,| 00001ef0 79 25 29 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 |y%).REM| | 00001f00 20 20 20 20 50 52 4f 43 57 69 6d 70 5f 4d 65 6e | PROCWimp_Men| 00001f10 75 50 6f 70 55 70 42 61 72 28 78 25 2c 79 25 29 |uPopUpBar(x%,y%)| 00001f20 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 20 20 20 |.REM| | 00001f30 20 50 52 4f 43 57 69 6d 70 5f 4d 65 6e 75 54 69 | PROCWimp_MenuTi| 00001f40 63 6b 28 6d 65 6e 75 25 2c 69 74 65 6d 25 29 0a |ck(menu%,item%).| 00001f50 52 45 4d 7c 20 20 20 20 20 20 20 20 20 20 20 20 |REM| | 00001f60 50 52 4f 43 57 69 6d 70 5f 4d 65 6e 75 54 69 74 |PROCWimp_MenuTit| 00001f70 6c 65 28 6d 65 6e 75 25 2c 74 69 74 6c 65 24 29 |le(menu%,title$)| 00001f80 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 20 20 20 |.REM| | 00001f90 20 50 52 4f 43 57 69 6d 70 5f 4d 65 6e 75 57 72 | PROCWimp_MenuWr| 00001fa0 69 74 65 28 6d 65 6e 75 25 2c 69 74 65 6d 25 2c |ite(menu%,item%,| 00001fb0 62 75 66 66 65 72 25 2c 76 61 6c 25 2c 42 75 66 |buffer%,val%,Buf| 00001fc0 66 65 72 4c 65 6e 67 74 68 25 29 0a 52 45 4d 7c |ferLength%).REM|| 00001fd0 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 20 20 20 |.REM| | 00001fe0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00002000 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 52 |--------------.R| 00002010 45 4d 7c 0a 3a 0a 44 45 46 20 50 52 4f 43 57 69 |EM|.:.DEF PROCWi| 00002020 6d 70 5f 4d 65 6e 75 41 64 6a 75 73 74 4f 6e 28 |mp_MenuAdjustOn(| 00002030 6d 65 6e 75 25 29 0a 53 59 53 20 22 57 69 6d 70 |menu%).SYS "Wimp| 00002040 5f 47 65 74 50 6f 69 6e 74 65 72 49 6e 66 6f 22 |_GetPointerInfo"| 00002050 2c 2c 70 6f 69 6e 74 65 72 5f 62 6c 6f 63 6b 25 |,,pointer_block%| 00002060 0a 49 46 20 28 28 70 6f 69 6e 74 65 72 5f 62 6c |.IF ((pointer_bl| 00002070 6f 63 6b 25 21 38 29 41 4e 44 31 29 3d 31 20 54 |ock%!8)AND1)=1 T| 00002080 48 45 4e 20 53 59 53 20 22 57 69 6d 70 5f 43 72 |HEN SYS "Wimp_Cr| 00002090 65 61 74 65 4d 65 6e 75 22 2c 2c 6d 65 6e 75 25 |eateMenu",,menu%| 000020a0 2c 70 6f 69 6e 74 65 72 5f 62 6c 6f 63 6b 25 21 |,pointer_block%!| 000020b0 30 2c 70 6f 69 6e 74 65 72 5f 62 6c 6f 63 6b 25 |0,pointer_block%| 000020c0 21 34 0a 45 4e 44 50 52 4f 43 0a 3a 0a 44 45 46 |!4.ENDPROC.:.DEF| 000020d0 20 46 4e 57 69 6d 70 5f 4d 65 6e 75 43 68 6f 69 | FNWimp_MenuChoi| 000020e0 63 65 28 6c 65 76 65 6c 25 29 0a 3d 28 77 69 6d |ce(level%).=(wim| 000020f0 70 25 21 28 34 2a 6c 65 76 65 6c 25 29 29 2b 31 |p%!(4*level%))+1| 00002100 0a 3a 0a 44 45 46 20 46 4e 57 69 6d 70 5f 4d 65 |.:.DEF FNWimp_Me| 00002110 6e 75 43 72 65 61 74 65 28 6d 65 6e 75 24 29 0a |nuCreate(menu$).| 00002120 49 46 20 6d 65 6e 75 24 3d 22 43 6f 6c 6f 75 72 |IF menu$="Colour| 00002130 73 22 20 54 48 45 4e 3d 46 4e 57 69 6d 70 5f 4d |s" THEN=FNWimp_M| 00002140 65 6e 75 43 6f 6c 6f 75 72 73 0a 4c 4f 43 41 4c |enuColours.LOCAL| 00002150 20 6d 65 6e 75 25 2c 69 6e 64 65 78 25 2c 77 69 | menu%,index%,wi| 00002160 64 74 68 25 2c 6c 65 6e 67 74 68 25 2c 6b 25 2c |dth%,length%,k%,| 00002170 73 25 0a 44 49 4d 20 6d 65 6e 75 25 20 32 38 2b |s%.DIM menu% 28+| 00002180 46 4e 57 69 6d 70 5f 4d 65 6e 75 4e 6f 4f 66 45 |FNWimp_MenuNoOfE| 00002190 6e 74 72 69 65 73 28 6d 65 6e 75 24 29 2a 32 34 |ntries(menu$)*24| 000021a0 0a 6d 65 6e 75 25 3f 31 32 3d 37 20 20 20 3a 20 |.menu%?12=7 : | 000021b0 6d 65 6e 75 25 3f 31 33 3d 32 20 20 3a 20 6d 65 |menu%?13=2 : me| 000021c0 6e 75 25 3f 31 34 3d 37 20 3a 6d 65 6e 75 25 3f |nu%?14=7 :menu%?| 000021d0 31 35 3d 30 0a 6d 65 6e 75 25 21 31 36 3d 31 34 |15=0.menu%!16=14| 000021e0 30 20 3a 20 6d 65 6e 75 25 21 32 30 3d 34 34 20 |0 : menu%!20=44 | 000021f0 3a 20 6d 65 6e 75 25 21 32 34 3d 30 0a 69 6e 64 |: menu%!24=0.ind| 00002200 65 78 25 3d 6d 65 6e 75 25 2b 32 38 0a 24 6d 65 |ex%=menu%+28.$me| 00002210 6e 75 25 3d 4c 45 46 54 24 28 6d 65 6e 75 24 2c |nu%=LEFT$(menu$,| 00002220 49 4e 53 54 52 28 6d 65 6e 75 24 2c 22 5c 22 29 |INSTR(menu$,"\")| 00002230 2d 31 29 0a 77 69 64 74 68 25 3d 4c 45 4e 28 4c |-1).width%=LEN(L| 00002240 45 46 54 24 28 6d 65 6e 75 24 2c 49 4e 53 54 52 |EFT$(menu$,INSTR| 00002250 28 6d 65 6e 75 24 2c 22 5c 22 29 2d 31 29 29 0a |(menu$,"\")-1)).| 00002260 6d 65 6e 75 24 2b 3d 22 5c 22 20 3a 20 4d 65 6e |menu$+="\" : Men| 00002270 75 5f 4e 6f 4f 66 45 6e 74 72 69 65 73 25 3d 30 |u_NoOfEntries%=0| 00002280 0a 57 48 49 4c 45 20 6d 65 6e 75 24 3c 3e 22 22 |.WHILE menu$<>""| 00002290 0a 6d 65 6e 75 24 3d 4d 49 44 24 28 6d 65 6e 75 |.menu$=MID$(menu| 000022a0 24 2c 49 4e 53 54 52 28 6d 65 6e 75 24 2c 22 5c |$,INSTR(menu$,"\| 000022b0 22 29 2b 31 29 0a 43 41 53 45 20 6d 65 6e 75 24 |")+1).CASE menu$| 000022c0 20 4f 46 0a 20 57 48 45 4e 20 22 22 0a 20 4f 54 | OF. WHEN "". OT| 000022d0 48 45 52 57 49 53 45 20 3a 0a 20 20 21 69 6e 64 |HERWISE :. !ind| 000022e0 65 78 25 3d 30 20 3a 20 69 6e 64 65 78 25 21 34 |ex%=0 : index%!4| 000022f0 3d 2d 31 20 3a 20 69 6e 64 65 78 25 21 38 3d 26 |=-1 : index%!8=&| 00002300 37 30 30 30 30 32 31 0a 20 20 6c 65 6e 67 74 68 |7000021. length| 00002310 25 3d 49 4e 53 54 52 28 6d 65 6e 75 24 2c 22 5c |%=INSTR(menu$,"\| 00002320 22 29 2d 31 0a 20 20 6b 25 3d 49 4e 53 54 52 28 |")-1. k%=INSTR(| 00002330 4c 45 46 54 24 28 6d 65 6e 75 24 2c 6c 65 6e 67 |LEFT$(menu$,leng| 00002340 74 68 25 29 2c 22 3e 22 29 0a 20 20 43 41 53 45 |th%),">"). CASE| 00002350 20 6b 25 20 4f 46 0a 20 20 20 57 48 45 4e 20 30 | k% OF. WHEN 0| 00002360 0a 20 20 20 4f 54 48 45 52 57 49 53 45 0a 20 20 |. OTHERWISE. | 00002370 20 20 73 25 3d 45 56 41 4c 28 4d 49 44 24 28 6d | s%=EVAL(MID$(m| 00002380 65 6e 75 24 2c 6b 25 2b 31 2c 6c 65 6e 67 74 68 |enu$,k%+1,length| 00002390 25 2d 6b 25 29 29 0a 20 20 20 20 69 6e 64 65 78 |%-k%)). index| 000023a0 25 21 34 3d 73 25 0a 20 20 20 20 6c 65 6e 67 74 |%!4=s%. lengt| 000023b0 68 25 3d 6b 25 2d 31 0a 20 20 45 4e 44 43 41 53 |h%=k%-1. ENDCAS| 000023c0 45 0a 20 20 24 28 69 6e 64 65 78 25 2b 31 32 29 |E. $(index%+12)| 000023d0 3d 4c 45 46 54 24 28 6d 65 6e 75 24 2c 6c 65 6e |=LEFT$(menu$,len| 000023e0 67 74 68 25 29 0a 20 20 49 46 20 6c 65 6e 67 74 |gth%). IF lengt| 000023f0 68 25 3e 77 69 64 74 68 25 20 54 48 45 4e 20 77 |h%>width% THEN w| 00002400 69 64 74 68 25 3d 6c 65 6e 67 74 68 25 0a 20 20 |idth%=length%. | 00002410 69 6e 64 65 78 25 2b 3d 32 34 0a 45 4e 44 43 41 |index%+=24.ENDCA| 00002420 53 45 0a 45 4e 44 57 48 49 4c 45 0a 6d 65 6e 75 |SE.ENDWHILE.menu| 00002430 25 21 31 36 3d 31 36 2a 28 77 69 64 74 68 25 2b |%!16=16*(width%+| 00002440 31 29 0a 69 6e 64 65 78 25 21 2d 32 34 3d 69 6e |1).index%!-24=in| 00002450 64 65 78 25 21 2d 32 34 20 4f 52 20 26 38 30 20 |dex%!-24 OR &80 | 00002460 3a 20 3d 6d 65 6e 75 25 0a 3a 0a 44 45 46 20 46 |: =menu%.:.DEF F| 00002470 4e 57 69 6d 70 5f 4d 65 6e 75 43 6f 6c 6f 75 72 |NWimp_MenuColour| 00002480 73 0a 3d 46 4e 57 69 6d 70 5f 4d 65 6e 75 43 72 |s.=FNWimp_MenuCr| 00002490 65 61 74 65 43 6f 6c 6f 75 72 73 28 22 20 22 29 |eateColours(" ")| 000024a0 0a 3a 0a 44 45 46 20 46 4e 57 69 6d 70 5f 4d 65 |.:.DEF FNWimp_Me| 000024b0 6e 75 43 72 65 61 74 65 43 6f 6c 6f 75 72 73 28 |nuCreateColours(| 000024c0 74 69 74 6c 65 24 29 0a 4c 4f 43 41 4c 20 78 24 |title$).LOCAL x$| 000024d0 2c 6d 65 6e 25 2c 6a 25 2c 69 25 0a 78 24 3d 74 |,men%,j%,i%.x$=t| 000024e0 69 74 6c 65 24 2b 22 5c 30 5c 31 5c 32 5c 33 5c |itle$+"\0\1\2\3\| 000024f0 34 5c 35 5c 36 5c 37 5c 38 5c 39 5c 31 30 5c 31 |4\5\6\7\8\9\10\1| 00002500 31 5c 31 32 5c 31 33 5c 31 34 5c 31 35 22 0a 6d |1\12\13\14\15".m| 00002510 65 6e 25 3d 46 4e 57 69 6d 70 5f 4d 65 6e 75 43 |en%=FNWimp_MenuC| 00002520 72 65 61 74 65 28 78 24 29 0a 46 4f 52 20 69 25 |reate(x$).FOR i%| 00002530 3d 30 20 54 4f 20 31 35 0a 43 41 53 45 20 54 52 |=0 TO 15.CASE TR| 00002540 55 45 20 4f 46 0a 57 48 45 4e 20 69 25 3c 34 2c |UE OF.WHEN i%<4,| 00002550 69 25 3d 39 2c 69 25 3d 31 32 2c 69 25 3d 31 34 |i%=9,i%=12,i%=14| 00002560 2c 69 25 3d 31 35 20 3a 20 6a 25 3d 37 0a 4f 54 |,i%=15 : j%=7.OT| 00002570 48 45 52 57 49 53 45 20 3a 20 6a 25 3d 30 0a 45 |HERWISE : j%=0.E| 00002580 4e 44 43 41 53 45 0a 6d 65 6e 25 3f 28 33 39 2b |NDCASE.men%?(39+| 00002590 69 25 2a 32 34 29 3d 69 25 2a 31 36 2b 6a 25 0a |i%*24)=i%*16+j%.| 000025a0 50 52 4f 43 57 69 6d 70 5f 4d 65 6e 75 43 65 6e |PROCWimp_MenuCen| 000025b0 74 72 65 28 6d 65 6e 25 2c 69 25 2b 31 29 0a 4e |tre(men%,i%+1).N| 000025c0 45 58 54 0a 3d 6d 65 6e 25 0a 3a 0a 44 45 46 20 |EXT.=men%.:.DEF | 000025d0 46 4e 57 69 6d 70 5f 4d 65 6e 75 4e 6f 4f 66 45 |FNWimp_MenuNoOfE| 000025e0 6e 74 72 69 65 73 28 6d 65 6e 75 24 29 0a 4c 4f |ntries(menu$).LO| 000025f0 43 41 4c 20 6e 25 20 2c 6a 25 20 3a 20 6e 25 3d |CAL n% ,j% : n%=| 00002600 30 20 3a 20 6a 25 3d 30 0a 52 45 50 45 41 54 0a |0 : j%=0.REPEAT.| 00002610 6a 25 3d 49 4e 53 54 52 28 6d 65 6e 75 24 2c 22 |j%=INSTR(menu$,"| 00002620 5c 22 2c 6a 25 2b 31 29 0a 49 46 20 6a 25 3c 3e |\",j%+1).IF j%<>| 00002630 30 20 54 48 45 4e 20 6e 25 2b 3d 31 0a 55 4e 54 |0 THEN n%+=1.UNT| 00002640 49 4c 20 6a 25 3d 30 0a 3d 6e 25 0a 3a 0a 44 45 |IL j%=0.=n%.:.DE| 00002650 46 20 50 52 4f 43 57 69 6d 70 5f 4d 65 6e 75 42 |F PROCWimp_MenuB| 00002660 61 63 6b 47 72 6f 75 6e 64 43 6f 6c 6f 75 72 28 |ackGroundColour(| 00002670 6d 65 6e 75 25 2c 69 74 65 6d 25 2c 63 6f 6c 6f |menu%,item%,colo| 00002680 75 72 25 29 0a 4c 4f 43 41 4c 20 66 6f 72 65 25 |ur%).LOCAL fore%| 00002690 2c 69 25 0a 66 6f 72 65 25 3d 28 6d 65 6e 75 25 |,i%.fore%=(menu%| 000026a0 3f 28 33 39 2b 28 69 74 65 6d 25 2d 31 29 2a 32 |?(39+(item%-1)*2| 000026b0 34 29 29 4d 4f 44 31 36 0a 69 25 3d 28 28 6d 65 |4))MOD16.i%=((me| 000026c0 6e 75 25 3f 28 33 39 2b 28 69 74 65 6d 25 2d 31 |nu%?(39+(item%-1| 000026d0 29 2a 32 34 29 29 44 49 56 31 36 29 4d 4f 44 31 |)*24))DIV16)MOD1| 000026e0 36 0a 6d 65 6e 75 25 3f 28 33 39 2b 28 69 74 65 |6.menu%?(39+(ite| 000026f0 6d 25 2d 31 29 2a 32 34 29 3d 66 6f 72 65 25 2b |m%-1)*24)=fore%+| 00002700 31 36 2a 63 6f 6c 6f 75 72 25 2b 69 25 0a 45 4e |16*colour%+i%.EN| 00002710 44 50 52 4f 43 0a 3a 0a 44 45 46 20 50 52 4f 43 |DPROC.:.DEF PROC| 00002720 57 69 6d 70 5f 4d 65 6e 75 43 65 6e 74 72 65 28 |Wimp_MenuCentre(| 00002730 6d 65 6e 75 25 2c 69 74 65 6d 25 29 0a 6d 65 6e |menu%,item%).men| 00002740 75 25 21 28 33 36 2b 28 69 74 65 6d 25 2d 31 29 |u%!(36+(item%-1)| 00002750 2a 32 34 29 3d 6d 65 6e 75 25 21 28 33 36 2b 28 |*24)=menu%!(36+(| 00002760 69 74 65 6d 25 2d 31 29 2a 32 34 29 4f 52 28 31 |item%-1)*24)OR(1| 00002770 3c 3c 33 29 0a 45 4e 44 50 52 4f 43 0a 3a 0a 44 |<<3).ENDPROC.:.D| 00002780 45 46 20 50 52 4f 43 57 69 6d 70 5f 4d 65 6e 75 |EF PROCWimp_Menu| 00002790 43 6c 6f 73 65 0a 53 59 53 20 22 57 69 6d 70 5f |Close.SYS "Wimp_| 000027a0 43 72 65 61 74 65 4d 65 6e 75 22 2c 2d 31 0a 45 |CreateMenu",-1.E| 000027b0 4e 44 50 52 4f 43 0a 3a 0a 44 45 46 20 50 52 4f |NDPROC.:.DEF PRO| 000027c0 43 57 69 6d 70 5f 4d 65 6e 75 44 69 73 61 62 6c |CWimp_MenuDisabl| 000027d0 65 28 6d 65 6e 75 25 2c 69 74 65 6d 25 29 0a 6d |e(menu%,item%).m| 000027e0 65 6e 75 25 21 28 33 36 2b 28 69 74 65 6d 25 2d |enu%!(36+(item%-| 000027f0 31 29 2a 32 34 29 3d 6d 65 6e 75 25 21 28 33 36 |1)*24)=menu%!(36| 00002800 2b 28 69 74 65 6d 25 2d 31 29 2a 32 34 29 4f 52 |+(item%-1)*24)OR| 00002810 28 31 3c 3c 32 32 29 0a 45 4e 44 50 52 4f 43 0a |(1<<22).ENDPROC.| 00002820 3a 0a 44 45 46 20 50 52 4f 43 57 69 6d 70 5f 4d |:.DEF PROCWimp_M| 00002830 65 6e 75 44 6f 74 74 65 64 4c 69 6e 65 28 6d 65 |enuDottedLine(me| 00002840 6e 75 25 2c 69 74 65 6d 25 29 0a 6d 65 6e 75 25 |nu%,item%).menu%| 00002850 21 28 32 38 2b 28 69 74 65 6d 25 2d 31 29 2a 32 |!(28+(item%-1)*2| 00002860 34 29 3d 28 6d 65 6e 75 25 21 28 32 38 2b 28 69 |4)=(menu%!(28+(i| 00002870 74 65 6d 25 2d 31 29 2a 32 34 29 29 4f 52 32 0a |tem%-1)*24))OR2.| 00002880 45 4e 44 50 52 4f 43 0a 3a 0a 44 45 46 20 50 52 |ENDPROC.:.DEF PR| 00002890 4f 43 57 69 6d 70 5f 4d 65 6e 75 45 6e 61 62 6c |OCWimp_MenuEnabl| 000028a0 65 28 6d 65 6e 75 25 2c 69 74 65 6d 25 29 0a 50 |e(menu%,item%).P| 000028b0 52 4f 43 57 69 6d 70 5f 4d 65 6e 75 44 69 73 61 |ROCWimp_MenuDisa| 000028c0 62 6c 65 28 6d 65 6e 75 25 2c 69 74 65 6d 25 29 |ble(menu%,item%)| 000028d0 0a 6d 65 6e 75 25 21 28 33 36 2b 28 69 74 65 6d |.menu%!(36+(item| 000028e0 25 2d 31 29 2a 32 34 29 3d 6d 65 6e 75 25 21 28 |%-1)*24)=menu%!(| 000028f0 33 36 2b 28 69 74 65 6d 25 2d 31 29 2a 32 34 29 |36+(item%-1)*24)| 00002900 45 4f 52 28 31 3c 3c 32 32 29 0a 45 4e 44 50 52 |EOR(1<<22).ENDPR| 00002910 4f 43 0a 3a 0a 44 45 46 20 50 52 4f 43 57 69 6d |OC.:.DEF PROCWim| 00002920 70 5f 4d 65 6e 75 46 6f 72 65 67 72 6f 75 6e 64 |p_MenuForeground| 00002930 43 6f 6c 6f 75 72 28 6d 65 6e 75 25 2c 69 74 65 |Colour(menu%,ite| 00002940 6d 25 2c 63 6f 6c 6f 75 72 25 29 0a 6d 65 6e 75 |m%,colour%).menu| 00002950 25 3f 28 33 39 2b 28 69 74 65 6d 25 2d 31 29 2a |%?(39+(item%-1)*| 00002960 32 34 29 3d 63 6f 6c 6f 75 72 25 2b 31 36 2a 28 |24)=colour%+16*(| 00002970 28 6d 65 6e 75 25 3f 28 33 39 2b 28 69 74 65 6d |(menu%?(39+(item| 00002980 25 2d 31 29 2a 32 34 29 29 44 49 56 31 36 29 0a |%-1)*24))DIV16).| 00002990 45 4e 44 50 52 4f 43 0a 3a 0a 44 45 46 20 50 52 |ENDPROC.:.DEF PR| 000029a0 4f 43 57 69 6d 70 5f 4d 65 6e 75 47 6c 75 65 28 |OCWimp_MenuGlue(| 000029b0 6d 65 6e 75 31 25 2c 69 74 65 6d 25 2c 6d 65 6e |menu1%,item%,men| 000029c0 75 32 25 29 0a 6d 65 6e 75 31 25 21 28 38 2b 69 |u2%).menu1%!(8+i| 000029d0 74 65 6d 25 2a 32 34 29 3d 6d 65 6e 75 32 25 0a |tem%*24)=menu2%.| 000029e0 45 4e 44 50 52 4f 43 0a 3a 0a 44 45 46 20 50 52 |ENDPROC.:.DEF PR| 000029f0 4f 43 57 69 6d 70 5f 4d 65 6e 75 49 74 65 6d 28 |OCWimp_MenuItem(| 00002a00 6d 65 6e 75 25 2c 69 74 65 6d 25 2c 69 74 65 6d |menu%,item%,item| 00002a10 24 29 0a 24 28 6d 65 6e 75 25 2b 28 34 30 2b 28 |$).$(menu%+(40+(| 00002a20 69 74 65 6d 25 2d 31 29 2a 32 34 29 29 3d 4c 45 |item%-1)*24))=LE| 00002a30 46 54 24 28 69 74 65 6d 24 2c 31 32 29 2b 43 48 |FT$(item$,12)+CH| 00002a40 52 24 30 0a 45 4e 44 50 52 4f 43 0a 3a 0a 44 45 |R$0.ENDPROC.:.DE| 00002a50 46 20 50 52 4f 43 57 69 6d 70 5f 4d 65 6e 75 4d |F PROCWimp_MenuM| 00002a60 65 73 73 61 67 65 28 6d 65 6e 75 25 2c 69 74 65 |essage(menu%,ite| 00002a70 6d 25 29 0a 6d 65 6e 75 25 21 28 32 38 2b 28 69 |m%).menu%!(28+(i| 00002a80 74 65 6d 25 2d 31 29 2a 32 34 29 3d 28 6d 65 6e |tem%-1)*24)=(men| 00002a90 75 25 21 28 32 38 2b 28 69 74 65 6d 25 2d 31 29 |u%!(28+(item%-1)| 00002aa0 2a 32 34 29 29 45 4f 52 28 31 3c 3c 33 29 0a 45 |*24))EOR(1<<3).E| 00002ab0 4e 44 50 52 4f 43 0a 3a 0a 44 45 46 20 50 52 4f |NDPROC.:.DEF PRO| 00002ac0 43 57 69 6d 70 5f 4d 65 6e 75 50 6f 70 55 70 28 |CWimp_MenuPopUp(| 00002ad0 4d 65 6e 75 25 2c 78 25 2c 79 25 29 0a 6d 65 6e |Menu%,x%,y%).men| 00002ae0 75 25 3d 4d 65 6e 75 25 0a 53 59 53 20 22 57 69 |u%=Menu%.SYS "Wi| 00002af0 6d 70 5f 43 72 65 61 74 65 4d 65 6e 75 22 2c 2c |mp_CreateMenu",,| 00002b00 6d 65 6e 75 25 2c 78 25 2d 36 34 2c 79 25 2b 32 |menu%,x%-64,y%+2| 00002b10 30 0a 45 4e 44 50 52 4f 43 0a 3a 0a 44 45 46 20 |0.ENDPROC.:.DEF | 00002b20 50 52 4f 43 57 69 6d 70 5f 4d 65 6e 75 50 6f 70 |PROCWimp_MenuPop| 00002b30 55 70 42 61 72 28 78 25 2c 79 25 29 0a 4c 4f 43 |UpBar(x%,y%).LOC| 00002b40 41 4c 20 6e 25 20 3a 20 6e 25 3d 30 0a 57 48 49 |AL n% : n%=0.WHI| 00002b50 4c 45 20 28 28 42 61 72 5f 4d 65 6e 75 25 21 28 |LE ((Bar_Menu%!(| 00002b60 32 38 2b 6e 25 2a 32 34 29 29 41 4e 44 25 31 30 |28+n%*24))AND%10| 00002b70 30 30 30 30 30 30 29 3d 30 0a 6e 25 2b 3d 31 0a |000000)=0.n%+=1.| 00002b80 45 4e 44 57 48 49 4c 45 0a 53 59 53 20 22 57 69 |ENDWHILE.SYS "Wi| 00002b90 6d 70 5f 43 72 65 61 74 65 4d 65 6e 75 22 2c 2c |mp_CreateMenu",,| 00002ba0 42 61 72 5f 4d 65 6e 75 25 2c 78 25 2d 36 34 2c |Bar_Menu%,x%-64,| 00002bb0 39 36 2b 6e 25 2a 34 34 0a 6d 65 6e 75 25 3d 42 |96+n%*44.menu%=B| 00002bc0 61 72 5f 4d 65 6e 75 25 0a 45 4e 44 50 52 4f 43 |ar_Menu%.ENDPROC| 00002bd0 0a 3a 0a 44 45 46 20 50 52 4f 43 57 69 6d 70 5f |.:.DEF PROCWimp_| 00002be0 4d 65 6e 75 54 69 63 6b 28 6d 65 6e 75 25 2c 69 |MenuTick(menu%,i| 00002bf0 74 65 6d 25 29 0a 6d 65 6e 75 25 21 28 32 38 2b |tem%).menu%!(28+| 00002c00 28 69 74 65 6d 25 2d 31 29 2a 32 34 29 3d 28 6d |(item%-1)*24)=(m| 00002c10 65 6e 75 25 21 28 32 38 2b 28 69 74 65 6d 25 2d |enu%!(28+(item%-| 00002c20 31 29 2a 32 34 29 29 45 4f 52 31 0a 45 4e 44 50 |1)*24))EOR1.ENDP| 00002c30 52 4f 43 0a 3a 0a 44 45 46 20 50 52 4f 43 57 69 |ROC.:.DEF PROCWi| 00002c40 6d 70 5f 4d 65 6e 75 54 69 74 6c 65 28 6d 65 6e |mp_MenuTitle(men| 00002c50 75 25 2c 74 69 74 6c 65 24 29 0a 24 6d 65 6e 75 |u%,title$).$menu| 00002c60 25 3d 4c 45 46 54 24 28 74 69 74 6c 65 24 2c 31 |%=LEFT$(title$,1| 00002c70 32 29 2b 43 48 52 24 30 0a 45 4e 44 50 52 4f 43 |2)+CHR$0.ENDPROC| 00002c80 0a 3a 0a 44 45 46 20 50 52 4f 43 57 69 6d 70 5f |.:.DEF PROCWimp_| 00002c90 4d 65 6e 75 57 72 69 74 65 28 6d 65 6e 75 25 2c |MenuWrite(menu%,| 00002ca0 69 74 65 6d 25 2c 62 75 66 66 65 72 25 2c 76 61 |item%,buffer%,va| 00002cb0 6c 25 2c 42 75 66 66 65 72 4c 65 6e 67 74 68 25 |l%,BufferLength%| 00002cc0 29 0a 6d 65 6e 75 25 21 28 32 38 2b 28 69 74 65 |).menu%!(28+(ite| 00002cd0 6d 25 2d 31 29 2a 32 34 29 3d 28 6d 65 6e 75 25 |m%-1)*24)=(menu%| 00002ce0 21 28 32 38 2b 28 69 74 65 6d 25 2d 31 29 2a 32 |!(28+(item%-1)*2| 00002cf0 34 29 29 4f 52 34 0a 6d 65 6e 75 25 21 28 33 36 |4))OR4.menu%!(36| 00002d00 2b 28 69 74 65 6d 25 2d 31 29 2a 32 34 29 3d 6d |+(item%-1)*24)=m| 00002d10 65 6e 75 25 21 28 33 36 2b 28 69 74 65 6d 25 2d |enu%!(36+(item%-| 00002d20 31 29 2a 32 34 29 4f 52 26 31 30 30 0a 6d 65 6e |1)*24)OR&100.men| 00002d30 75 25 21 28 34 30 2b 28 69 74 65 6d 25 2d 31 29 |u%!(40+(item%-1)| 00002d40 2a 32 34 29 3d 62 75 66 66 65 72 25 0a 6d 65 6e |*24)=buffer%.men| 00002d50 75 25 21 28 34 34 2b 28 69 74 65 6d 25 2d 31 29 |u%!(44+(item%-1)| 00002d60 2a 32 34 29 3d 76 61 6c 25 0a 6d 65 6e 75 25 21 |*24)=val%.menu%!| 00002d70 28 34 38 2b 28 69 74 65 6d 25 2d 31 29 2a 32 34 |(48+(item%-1)*24| 00002d80 29 3d 42 75 66 66 65 72 4c 65 6e 67 74 68 25 0a |)=BufferLength%.| 00002d90 45 4e 44 50 52 4f 43 0a 3a 0a 52 45 4d 7c 0a 52 |ENDPROC.:.REM|.R| 00002da0 45 4d 7c 0a 52 45 4d 7c 0a 52 45 4d 7c 20 20 20 |EM|.REM|.REM| | 00002db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d | -| 00002dc0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00002dd0 2d 2d 2d 2d 2d 2d 2d 2d 0a 52 45 4d 7c 20 20 20 |--------.REM| | 00002de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002df0 20 20 20 20 20 20 20 34 2e a0 53 70 72 69 74 65 | 4..Sprite| 00002e00 73 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 20 20 |s.REM| | 00002e10 20 20 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d | --------| 00002e20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00002e30 2d 0a 52 45 4d 7c 0a 52 45 4d 7c 0a 52 45 4d 7c |-.REM|.REM|.REM|| 00002e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002e50 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00002e70 2d 2d 2d 2d 0a 52 45 4d 7c 0a 52 45 4d 7c 20 20 |----.REM|.REM| | 00002e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002e90 20 20 20 20 50 72 6f 63 65 64 75 72 65 73 20 3a | Procedures :| 00002ea0 0a 52 45 4d 7c 0a 52 45 4d 7c 0a 52 45 4d 7c 20 |.REM|.REM|.REM| | 00002eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002ec0 20 50 52 4f 43 57 69 6d 70 5f 53 70 72 69 74 65 | PROCWimp_Sprite| 00002ed0 73 4c 6f 61 64 0a 52 45 4d 7c 20 20 20 20 20 20 |sLoad.REM| | 00002ee0 20 20 20 20 20 20 20 20 20 20 20 20 50 52 4f 43 | PROC| 00002ef0 57 69 6d 70 5f 53 70 72 69 74 65 73 50 61 74 68 |Wimp_SpritesPath| 00002f00 4c 6f 61 64 28 70 61 74 68 6e 61 6d 65 24 0a 52 |Load(pathname$.R| 00002f10 45 4d 7c 0a 52 45 4d 7c 0a 52 45 4d 7c 0a 52 45 |EM|.REM|.REM|.RE| 00002f20 4d 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |M| | 00002f30 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | --------------| 00002f40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00002f50 2d 2d 2d 2d 2d 2d 0a 52 45 4d 7c 0a 3a 0a 44 45 |------.REM|.:.DE| 00002f60 46 20 50 52 4f 43 57 69 6d 70 5f 53 70 72 69 74 |F PROCWimp_Sprit| 00002f70 65 73 4c 6f 61 64 0a 50 52 4f 43 57 69 6d 70 5f |esLoad.PROCWimp_| 00002f80 53 70 72 69 74 65 73 50 61 74 68 4c 6f 61 64 28 |SpritesPathLoad(| 00002f90 22 3c 4f 62 65 79 24 44 69 72 3e 2e 53 70 72 69 |"<Obey$Dir>.Spri| 00002fa0 74 65 73 22 29 0a 64 69 72 65 63 74 5f 73 70 72 |tes").direct_spr| 00002fb0 69 74 65 73 25 3d 73 70 72 69 74 65 73 25 0a 45 |ites%=sprites%.E| 00002fc0 4e 44 50 52 4f 43 0a 3a 0a 44 45 46 20 50 52 4f |NDPROC.:.DEF PRO| 00002fd0 43 57 69 6d 70 5f 53 70 72 69 74 65 73 50 61 74 |CWimp_SpritesPat| 00002fe0 68 4c 6f 61 64 28 70 61 74 68 6e 61 6d 65 24 29 |hLoad(pathname$)| 00002ff0 0a 4c 4f 43 41 4c 53 25 2c 54 25 0a 53 25 3d 4f |.LOCALS%,T%.S%=O| 00003000 50 45 4e 49 4e 22 3c 4f 62 65 79 24 44 69 72 3e |PENIN"<Obey$Dir>| 00003010 2e 53 70 72 69 74 65 73 22 3a 54 25 3d 45 58 54 |.Sprites":T%=EXT| 00003020 23 53 25 2b 31 36 3a 43 4c 4f 53 45 23 53 25 0a |#S%+16:CLOSE#S%.| 00003030 44 49 4d 73 70 72 69 74 65 73 25 54 25 2c 73 70 |DIMsprites%T%,sp| 00003040 6e 61 6d 65 25 31 32 0a 21 73 70 72 69 74 65 73 |name%12.!sprites| 00003050 25 3d 54 25 3a 73 70 72 69 74 65 73 25 21 38 3d |%=T%:sprites%!8=| 00003060 30 0a 53 59 53 22 4f 53 5f 53 70 72 69 74 65 4f |0.SYS"OS_SpriteO| 00003070 70 22 2c 26 31 30 39 2c 73 70 72 69 74 65 73 25 |p",&109,sprites%| 00003080 0a 53 59 53 22 4f 53 5f 53 70 72 69 74 65 4f 70 |.SYS"OS_SpriteOp| 00003090 22 2c 26 31 30 41 2c 73 70 72 69 74 65 73 25 2c |",&10A,sprites%,| 000030a0 70 61 74 68 6e 61 6d 65 24 0a 45 4e 44 50 52 4f |pathname$.ENDPRO| 000030b0 43 0a 3a 0a 52 45 4d 7c 0a 52 45 4d 7c 0a 52 45 |C.:.REM|.REM|.RE| 000030c0 4d 7c 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 20 |M|.REM| | 000030d0 20 20 20 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d | -------| 000030e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 000030f0 2d 2d 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 20 |--.REM| | 00003100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00003110 20 35 2e a0 46 69 6c 65 73 0a 52 45 4d 7c 20 20 | 5..Files.REM| | 00003120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00003130 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00003140 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 52 45 4d 7c 0a 52 |---------.REM|.R| 00003150 45 4d 7c 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 |EM|.REM| | 00003160 20 20 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d | --------| 00003170 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00003180 2d 2d 2d 2d 2d 2d 2d 0a 52 45 4d 7c 0a 52 45 4d |-------.REM|.REM| 00003190 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 || | 000031a0 20 20 20 20 20 20 20 50 72 6f 63 65 64 75 72 65 | Procedure| 000031b0 73 20 3a 0a 52 45 4d 7c 0a 52 45 4d 7c 0a 52 45 |s :.REM|.REM|.RE| 000031c0 4d 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |M| | 000031d0 20 20 20 20 46 4e 57 69 6d 70 5f 46 69 6c 65 54 | FNWimp_FileT| 000031e0 79 70 65 28 74 79 70 65 25 29 0a 52 45 4d 7c 20 |ype(type%).REM| | 000031f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00003200 20 46 4e 57 69 6d 70 5f 47 65 74 46 69 6c 65 50 | FNWimp_GetFileP| 00003210 61 74 68 4e 61 6d 65 0a 52 45 4d 7c 20 20 20 20 |athName.REM| | 00003220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 4e | FN| 00003230 57 69 6d 70 5f 46 69 6c 65 4c 6f 61 64 28 70 61 |Wimp_FileLoad(pa| 00003240 74 68 6e 61 6d 65 24 29 0a 52 45 4d 7c 20 20 20 |thname$).REM| | 00003250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 | F| 00003260 4e 57 69 6d 70 5f 47 65 74 53 74 72 69 6e 67 41 |NWimp_GetStringA| 00003270 74 41 64 64 72 65 73 73 28 61 72 72 61 79 25 29 |tAddress(array%)| 00003280 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 20 20 20 |.REM| | 00003290 20 20 20 20 20 20 20 46 4e 57 69 6d 70 5f 47 65 | FNWimp_Ge| 000032a0 74 46 69 6c 65 46 72 6f 6d 50 61 74 68 6e 61 6d |tFileFromPathnam| 000032b0 65 28 66 24 29 0a 52 45 4d 7c 20 20 20 20 20 20 |e(f$).REM| | 000032c0 20 20 20 20 20 20 20 20 20 20 20 20 50 52 4f 43 | PROC| 000032d0 57 69 6d 70 5f 53 65 6e 64 54 6f 45 64 69 74 28 |Wimp_SendToEdit(| 000032e0 66 69 6c 65 24 29 0a 52 45 4d 7c 0a 52 45 4d 7c |file$).REM|.REM|| 000032f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00003300 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00003310 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a |---------------.| 00003320 52 45 4d 7c 0a 52 45 4d 7c 0a 52 45 4d 7c 0a 3a |REM|.REM|.REM|.:| 00003330 0a 44 45 46 20 46 4e 57 69 6d 70 5f 46 69 6c 65 |.DEF FNWimp_File| 00003340 54 79 70 65 28 74 79 70 65 25 29 0a 43 41 53 45 |Type(type%).CASE| 00003350 74 79 70 65 25 4f 46 0a 57 48 45 4e 26 46 46 46 |type%OF.WHEN&FFF| 00003360 3a 3d 22 54 65 78 74 22 0a 57 48 45 4e 26 46 46 |:="Text".WHEN&FF| 00003370 44 3a 3d 22 44 61 74 61 22 0a 57 48 45 4e 26 46 |D:="Data".WHEN&F| 00003380 46 42 3a 3d 22 42 61 73 69 63 22 0a 57 48 45 4e |FB:="Basic".WHEN| 00003390 26 46 46 39 3a 3d 22 53 70 72 69 74 65 22 0a 57 |&FF9:="Sprite".W| 000033a0 48 45 4e 26 46 45 44 3a 3d 22 50 61 6c 65 74 74 |HEN&FED:="Palett| 000033b0 65 22 0a 57 48 45 4e 26 46 45 43 3a 3d 22 54 65 |e".WHEN&FEC:="Te| 000033c0 6d 70 6c 61 74 65 22 0a 57 48 45 4e 26 41 46 46 |mplate".WHEN&AFF| 000033d0 3a 3d 22 44 72 61 77 22 0a 57 48 45 4e 26 31 30 |:="Draw".WHEN&10| 000033e0 30 30 3a 3d 22 46 6f 6c 64 65 72 22 0a 57 48 45 |00:="Folder".WHE| 000033f0 4e 26 32 30 30 30 3a 3d 22 41 70 70 6c 69 63 61 |N&2000:="Applica| 00003400 74 69 6f 6e 22 0a 4f 54 48 45 52 57 49 53 45 3d |tion".OTHERWISE=| 00003410 53 54 52 24 7e 28 74 79 70 65 25 29 0a 45 4e 44 |STR$~(type%).END| 00003420 43 41 53 45 0a 3a 0a 44 45 46 20 46 4e 57 69 6d |CASE.:.DEF FNWim| 00003430 70 5f 47 65 74 46 69 6c 65 50 61 74 68 4e 61 6d |p_GetFilePathNam| 00003440 65 0a 3d 46 4e 57 69 6d 70 5f 47 65 74 53 74 72 |e.=FNWimp_GetStr| 00003450 69 6e 67 41 74 41 64 64 72 65 73 73 28 77 69 6d |ingAtAddress(wim| 00003460 70 25 2b 34 34 29 0a 3a 0a 44 45 46 20 46 4e 57 |p%+44).:.DEF FNW| 00003470 69 6d 70 5f 46 69 6c 65 4c 6f 61 64 28 70 61 74 |imp_FileLoad(pat| 00003480 68 6e 61 6d 65 24 29 0a 4c 4f 43 41 4c 53 25 2c |hname$).LOCALS%,| 00003490 54 25 2c 66 69 6c 65 25 0a 53 25 3d 4f 50 45 4e |T%,file%.S%=OPEN| 000034a0 49 4e 70 61 74 68 6e 61 6d 65 24 0a 54 25 3d 45 |INpathname$.T%=E| 000034b0 58 54 23 53 25 2b 31 36 0a 43 4c 4f 53 45 23 53 |XT#S%+16.CLOSE#S| 000034c0 25 0a 44 49 4d 66 69 6c 65 25 54 25 0a 4f 53 43 |%.DIMfile%T%.OSC| 000034d0 4c 49 28 22 4c 4f 41 44 22 2b 70 61 74 68 6e 61 |LI("LOAD"+pathna| 000034e0 6d 65 24 2b 22 22 2b 53 54 52 24 7e 66 69 6c 65 |me$+""+STR$~file| 000034f0 25 29 0a 3d 66 69 6c 65 25 0a 3b 0a 44 45 46 20 |%).=file%.;.DEF | 00003500 46 4e 57 69 6d 70 5f 47 65 74 53 74 72 69 6e 67 |FNWimp_GetString| 00003510 41 74 41 64 64 72 65 73 73 28 61 72 72 61 79 25 |AtAddress(array%| 00003520 29 0a 4c 4f 43 41 4c 73 24 3a 73 24 3d 22 22 0a |).LOCALs$:s$="".| 00003530 57 48 49 4c 45 28 3f 61 72 72 61 79 25 3c 3e 31 |WHILE(?array%<>1| 00003540 33 29 41 4e 44 28 3f 61 72 72 61 79 25 3c 3e 30 |3)AND(?array%<>0| 00003550 29 3a 73 24 2b 3d 43 48 52 24 28 3f 61 72 72 61 |):s$+=CHR$(?arra| 00003560 79 25 29 3a 61 72 72 61 79 25 2b 3d 31 3a 45 4e |y%):array%+=1:EN| 00003570 44 57 48 49 4c 45 3a 0a 3d 73 24 0a 3a 0a 44 45 |DWHILE:.=s$.:.DE| 00003580 46 20 46 4e 57 69 6d 70 5f 47 65 74 46 69 6c 65 |F FNWimp_GetFile| 00003590 46 72 6f 6d 50 61 74 68 6e 61 6d 65 28 66 24 29 |FromPathname(f$)| 000035a0 0a 43 41 53 45 20 49 4e 53 54 52 28 66 24 2c 22 |.CASE INSTR(f$,"| 000035b0 2e 22 29 20 4f 46 0a 20 57 48 45 4e 20 30 20 20 |.") OF. WHEN 0 | 000035c0 20 20 3a 3d 66 24 0a 20 4f 54 48 45 52 57 49 53 | :=f$. OTHERWIS| 000035d0 45 20 3a 3d 46 4e 57 69 6d 70 5f 47 65 74 46 69 |E :=FNWimp_GetFi| 000035e0 6c 65 46 72 6f 6d 50 61 74 68 6e 61 6d 65 28 52 |leFromPathname(R| 000035f0 49 47 48 54 24 28 66 24 2c 4c 45 4e 28 66 24 29 |IGHT$(f$,LEN(f$)| 00003600 2d 49 4e 53 54 52 28 66 24 2c 22 2e 22 29 29 29 |-INSTR(f$,".")))| 00003610 0a 45 4e 44 43 41 53 45 0a 3a 0a 44 45 46 20 50 |.ENDCASE.:.DEF P| 00003620 52 4f 43 57 69 6d 70 5f 53 65 6e 64 54 6f 45 64 |ROCWimp_SendToEd| 00003630 69 74 28 66 69 6c 65 24 29 0a 4c 4f 43 41 4c 20 |it(file$).LOCAL | 00003640 6e 25 0a 77 69 6d 70 25 21 34 3d 26 36 43 43 30 |n%.wimp%!4=&6CC0| 00003650 31 43 30 43 0a 77 69 6d 70 25 21 31 36 3d 35 0a |1C0C.wimp%!16=5.| 00003660 77 69 6d 70 25 21 33 36 3d 30 0a 77 69 6d 70 25 |wimp%!36=0.wimp%| 00003670 21 34 30 3d 26 46 46 46 0a 24 28 77 69 6d 70 25 |!40=&FFF.$(wimp%| 00003680 2b 34 34 29 3d 66 69 6c 65 24 2b 43 48 52 24 30 |+44)=file$+CHR$0| 00003690 0a 6e 25 3d 4c 45 4e 66 69 6c 65 24 2b 34 35 0a |.n%=LENfile$+45.| 000036a0 49 46 20 6e 25 4d 4f 44 34 20 54 48 45 4e 20 21 |IF n%MOD4 THEN !| 000036b0 77 69 6d 70 25 3d 34 2b 28 6e 25 3e 3e 32 29 3c |wimp%=4+(n%>>2)<| 000036c0 3c 32 20 45 4c 53 45 20 21 77 69 6d 70 25 3d 6e |<2 ELSE !wimp%=n| 000036d0 25 0a 53 59 53 20 22 57 69 6d 70 5f 53 65 6e 64 |%.SYS "Wimp_Send| 000036e0 4d 65 73 73 61 67 65 22 2c 31 37 2c 77 69 6d 70 |Message",17,wimp| 000036f0 25 2c 30 0a 45 4e 44 50 52 4f 43 0a 3a 0a 52 45 |%,0.ENDPROC.:.RE| 00003700 4d 7c 0a 52 45 4d 7c 0a 52 45 4d 7c 0a 52 45 4d |M|.REM|.REM|.REM| 00003710 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 || | 00003720 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------| 00003730 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 52 45 4d |------------.REM| 00003740 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 || | 00003750 20 20 20 20 20 20 20 35 2e a0 4d 69 73 63 65 6c | 5..Miscel| 00003760 6c 61 6e 65 6f 75 73 0a 52 45 4d 7c 20 20 20 20 |laneous.REM| | 00003770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 2d | --| 00003780 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00003790 2d 2d 2d 2d 2d 2d 2d 0a 52 45 4d 7c 0a 52 45 4d |-------.REM|.REM| 000037a0 7c 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 20 20 ||.REM| | 000037b0 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ----------| 000037c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 000037d0 2d 2d 2d 2d 2d 0a 52 45 4d 7c 0a 52 45 4d 7c 20 |-----.REM|.REM| | 000037e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000037f0 20 20 20 20 20 50 72 6f 63 65 64 75 72 65 73 20 | Procedures | 00003800 3a 0a 52 45 4d 7c 0a 52 45 4d 7c 0a 52 45 4d 7c |:.REM|.REM|.REM|| 00003810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00003820 20 20 50 52 4f 43 57 69 6d 70 5f 53 74 61 72 74 | PROCWimp_Start| 00003830 28 54 61 73 6b 4e 61 6d 65 24 29 0a 52 45 4d 7c |(TaskName$).REM|| 00003840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00003850 20 20 46 4e 57 69 6d 70 5f 42 41 53 49 43 50 61 | FNWimp_BASICPa| 00003860 72 61 6d 65 74 65 72 73 0a 52 45 4d 7c 20 20 20 |rameters.REM| | 00003870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 | P| 00003880 52 4f 43 57 69 6d 70 5f 53 65 74 45 76 65 6e 74 |ROCWimp_SetEvent| 00003890 56 61 72 69 61 62 6c 65 73 0a 52 45 4d 7c 20 20 |Variables.REM| | 000038a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000038b0 50 52 4f 43 57 69 6d 70 5f 45 72 72 6f 72 28 74 |PROCWimp_Error(t| 000038c0 61 73 6b 25 2c 54 61 73 6b 4e 61 6d 65 24 29 0a |ask%,TaskName$).| 000038d0 52 45 4d 7c 20 20 20 20 20 20 20 20 20 20 20 20 |REM| | 000038e0 20 20 20 20 20 20 50 52 4f 43 57 69 6d 70 5f 43 | PROCWimp_C| 000038f0 6c 6f 73 65 44 6f 77 6e 0a 52 45 4d 7c 20 20 20 |loseDown.REM| | 00003900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 | P| 00003910 52 4f 43 57 69 6d 70 5f 51 75 69 74 0a 52 45 4d |ROCWimp_Quit.REM| 00003920 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 || | 00003930 20 20 20 46 4e 57 69 6d 70 5f 52 65 61 64 56 61 | FNWimp_ReadVa| 00003940 72 69 61 62 6c 65 28 56 61 72 69 61 62 6c 65 24 |riable(Variable$| 00003950 29 0a 52 45 4d 7c 0a 52 45 4d 7c 0a 52 45 4d 7c |).REM|.REM|.REM|| 00003960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00003970 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00003980 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a |---------------.| 00003990 52 45 4d 7c 0a 3a 0a 44 45 46 20 50 52 4f 43 57 |REM|.:.DEF PROCW| 000039a0 69 6d 70 5f 53 74 61 72 74 28 54 61 73 6b 4e 61 |imp_Start(TaskNa| 000039b0 6d 65 24 2c 77 69 6d 70 5f 6d 65 6d 6f 72 79 25 |me$,wimp_memory%| 000039c0 2c 69 63 6f 6e 25 29 0a 44 49 4d 20 77 69 6d 70 |,icon%).DIM wimp| 000039d0 25 20 77 69 6d 70 5f 6d 65 6d 6f 72 79 25 2c 69 |% wimp_memory%,i| 000039e0 63 6f 6e 73 25 20 69 63 6f 6e 25 0a 49 46 20 77 |cons% icon%.IF w| 000039f0 69 6d 70 5f 6d 65 6d 6f 72 79 25 3c 32 35 36 20 |imp_memory%<256 | 00003a00 54 48 45 4e 20 77 69 6d 70 5f 6d 65 6d 6f 72 79 |THEN wimp_memory| 00003a10 25 3d 32 35 36 0a 69 63 6f 6e 5f 6d 65 6d 6f 72 |%=256.icon_memor| 00003a20 79 25 3d 69 63 6f 6e 73 25 2b 69 63 6f 6e 25 0a |y%=icons%+icon%.| 00003a30 74 61 73 6b 24 3d 54 61 73 6b 4e 61 6d 65 24 0a |task$=TaskName$.| 00003a40 69 6e 64 69 72 65 63 74 5f 73 70 72 69 74 65 73 |indirect_sprites| 00003a50 25 3d 31 20 3a 20 64 69 72 65 63 74 5f 73 70 72 |%=1 : direct_spr| 00003a60 69 74 65 73 25 3d 31 0a 50 52 4f 43 57 69 6d 70 |ites%=1.PROCWimp| 00003a70 5f 53 65 74 45 76 65 6e 74 56 61 72 69 61 62 6c |_SetEventVariabl| 00003a80 65 73 0a 4f 4e 20 45 52 52 4f 52 20 50 52 4f 43 |es.ON ERROR PROC| 00003a90 57 69 6d 70 5f 45 72 72 6f 72 3a 45 4e 44 0a 53 |Wimp_Error:END.S| 00003aa0 59 53 22 57 69 6d 70 5f 49 6e 69 74 69 61 6c 69 |YS"Wimp_Initiali| 00003ab0 73 65 22 2c 32 30 30 2c 26 34 42 35 33 34 31 35 |se",200,&4B53415| 00003ac0 34 2c 54 61 73 6b 4e 61 6d 65 24 20 54 4f 20 76 |4,TaskName$ TO v| 00003ad0 65 72 73 69 6f 6e 25 2c 74 61 73 6b 25 0a 45 4e |ersion%,task%.EN| 00003ae0 44 50 52 4f 43 0a 3a 0a 44 45 46 20 46 4e 57 69 |DPROC.:.DEF FNWi| 00003af0 6d 70 5f 42 41 53 49 43 50 61 72 61 6d 65 74 65 |mp_BASICParamete| 00003b00 72 73 0a 20 4c 4f 43 41 4c 20 63 6f 6d 24 2c 70 |rs. LOCAL com$,p| 00003b10 61 72 61 6d 24 2c 49 25 0a 20 53 59 53 20 22 4f |aram$,I%. SYS "O| 00003b20 53 5f 47 65 74 45 6e 76 22 20 54 4f 20 63 6f 6d |S_GetEnv" TO com| 00003b30 24 0a 20 70 61 72 61 6d 73 24 3d 22 22 0a 20 49 |$. params$="". I| 00003b40 25 3d 49 4e 53 54 52 28 63 6f 6d 24 2c 22 20 2d |%=INSTR(com$," -| 00003b50 71 75 69 74 20 22 29 0a 20 49 46 20 49 25 20 54 |quit "). IF I% T| 00003b60 48 45 4e 20 70 61 72 61 6d 73 24 3d 4d 49 44 24 |HEN params$=MID$| 00003b70 28 63 6f 6d 24 2c 49 4e 53 54 52 28 63 6f 6d 24 |(com$,INSTR(com$| 00003b80 2c 22 20 22 2c 49 25 2b 4c 45 4e 22 20 2d 71 75 |," ",I%+LEN" -qu| 00003b90 69 74 20 22 29 2b 31 29 0a 3d 70 61 72 61 6d 73 |it ")+1).=params| 00003ba0 24 0a 3a 0a 44 45 46 20 50 52 4f 43 57 69 6d 70 |$.:.DEF PROCWimp| 00003bb0 5f 53 65 74 45 76 65 6e 74 56 61 72 69 61 62 6c |_SetEventVariabl| 00003bc0 65 73 0a 44 49 4d 20 70 6f 69 6e 74 65 72 5f 62 |es.DIM pointer_b| 00003bd0 6c 6f 63 6b 25 20 32 30 0a 69 6e 74 65 72 66 61 |lock% 20.interfa| 00003be0 63 65 25 3d 46 41 4c 53 45 0a 6e 75 6c 6c 25 3d |ce%=FALSE.null%=| 00003bf0 31 20 20 3a 64 72 61 77 25 3d 32 20 3a 20 20 70 |1 :draw%=2 : p| 00003c00 6f 69 6e 74 65 72 5f 6c 65 61 76 69 6e 67 25 3d |ointer_leaving%=| 00003c10 31 3c 3c 34 0a 70 6f 69 6e 74 65 72 5f 65 6e 74 |1<<4.pointer_ent| 00003c20 65 72 69 6e 67 25 3d 31 3c 3c 35 3a 6d 6f 75 73 |ering%=1<<5:mous| 00003c30 65 25 3d 31 3c 3c 36 3a 64 72 61 67 25 3d 31 3c |e%=1<<6:drag%=1<| 00003c40 3c 37 0a 6b 65 79 25 3d 31 3c 3c 38 3a 6d 65 6e |<7.key%=1<<8:men| 00003c50 75 25 3d 31 3c 3c 39 3a 73 63 72 6f 6c 6c 25 3d |u%=1<<9:scroll%=| 00003c60 31 3c 3c 31 30 0a 6c 6f 73 65 5f 63 61 72 65 74 |1<<10.lose_caret| 00003c70 25 3d 31 3c 3c 31 31 3a 67 61 69 6e 5f 63 61 72 |%=1<<11:gain_car| 00003c80 65 74 25 3d 31 3c 3c 31 32 3a 6d 65 73 73 61 67 |et%=1<<12:messag| 00003c90 65 25 3d 28 31 3c 3c 31 37 29 2b 28 31 3c 3c 31 |e%=(1<<17)+(1<<1| 00003ca0 38 29 0a 72 65 63 6f 72 64 65 72 25 3d 31 3c 3c |8).recorder%=1<<| 00003cb0 31 38 3a 61 63 6b 6e 6f 77 6c 65 64 67 65 25 3d |18:acknowledge%=| 00003cc0 31 3c 3c 31 39 3a 77 69 6e 64 6f 77 25 3d 30 0a |1<<19:window%=0.| 00003cd0 73 70 72 69 74 65 73 25 3d 31 3a 76 65 72 73 69 |sprites%=1:versi| 00003ce0 6f 6e 25 3d 30 3a 74 61 73 6b 25 3d 30 0a 42 61 |on%=0:task%=0.Ba| 00003cf0 72 5f 57 69 6e 64 6f 77 25 3d 2d 32 3a 42 61 72 |r_Window%=-2:Bar| 00003d00 5f 49 63 6f 6e 25 3d 30 3a 42 61 72 5f 4d 65 6e |_Icon%=0:Bar_Men| 00003d10 75 25 3d 30 0a 78 5f 6f 72 69 67 69 6e 25 3d 30 |u%=0.x_origin%=0| 00003d20 3a 79 5f 6f 72 69 67 69 6e 25 3d 30 3a 53 61 76 |:y_origin%=0:Sav| 00003d30 65 57 69 6e 64 6f 77 25 3d 2d 33 0a 6d 65 73 73 |eWindow%=-3.mess| 00003d40 61 67 65 5f 71 75 69 74 25 3d 30 3a 6d 65 73 73 |age_quit%=0:mess| 00003d50 61 67 65 5f 73 61 76 65 25 3d 32 3a 6d 65 73 73 |age_save%=2:mess| 00003d60 61 67 65 5f 6c 6f 61 64 25 3d 33 0a 6d 6f 75 73 |age_load%=3.mous| 00003d70 65 5f 62 75 74 74 6f 6e 25 3d 32 3a 73 61 76 65 |e_button%=2:save| 00003d80 5f 65 76 65 6e 74 25 3d 30 0a 74 6f 70 5f 6c 69 |_event%=0.top_li| 00003d90 6e 65 25 3d 30 20 3a 20 62 6f 74 74 6f 6d 5f 6c |ne%=0 : bottom_l| 00003da0 69 6e 65 25 3d 30 0a 45 4e 44 50 52 4f 43 0a 3a |ine%=0.ENDPROC.:| 00003db0 0a 44 45 46 20 50 52 4f 43 57 69 6d 70 5f 45 72 |.DEF PROCWimp_Er| 00003dc0 72 6f 72 0a 4c 4f 43 41 4c 58 24 2c 78 25 0a 4f |ror.LOCALX$,x%.O| 00003dd0 4e 20 45 52 52 4f 52 20 4f 46 46 0a 78 25 3d 45 |N ERROR OFF.x%=E| 00003de0 52 4c 0a 58 24 3d 52 45 50 4f 52 54 24 2b 22 61 |RL.X$=REPORT$+"a| 00003df0 74 6c 69 6e 65 22 2b 53 54 52 24 28 78 25 44 49 |tline"+STR$(x%DI| 00003e00 56 31 30 29 0a 44 49 4d 45 72 72 6f 72 4d 73 67 |V10).DIMErrorMsg| 00003e10 25 33 36 0a 45 72 72 6f 72 4d 73 67 25 21 30 3d |%36.ErrorMsg%!0=| 00003e20 33 36 3a 45 72 72 6f 72 4d 73 67 25 21 31 32 3d |36:ErrorMsg%!12=| 00003e30 30 3a 45 72 72 6f 72 4d 73 67 25 21 31 36 3d 26 |0:ErrorMsg%!16=&| 00003e40 38 31 30 38 30 3a 45 72 72 6f 72 4d 73 67 25 21 |81080:ErrorMsg%!| 00003e50 32 30 3d 78 25 0a 24 28 45 72 72 6f 72 4d 73 67 |20=x%.$(ErrorMsg| 00003e60 25 2b 32 34 29 3d 22 21 52 75 6e 49 6d 61 67 65 |%+24)="!RunImage| 00003e70 22 0a 53 59 53 22 57 69 6d 70 5f 53 65 6e 64 4d |".SYS"Wimp_SendM| 00003e80 65 73 73 61 67 65 22 2c 31 37 2c 45 72 72 6f 72 |essage",17,Error| 00003e90 4d 73 67 25 0a 50 52 4f 43 57 69 6d 70 5f 57 69 |Msg%.PROCWimp_Wi| 00003ea0 6e 64 6f 77 41 6c 65 72 74 28 74 61 73 6b 24 2c |ndowAlert(task$,| 00003eb0 58 24 29 0a 50 52 4f 43 57 69 6d 70 5f 43 6c 6f |X$).PROCWimp_Clo| 00003ec0 73 65 44 6f 77 6e 0a 45 4e 44 50 52 4f 43 0a 3a |seDown.ENDPROC.:| 00003ed0 0a 44 45 46 20 50 52 4f 43 57 69 6d 70 5f 43 6c |.DEF PROCWimp_Cl| 00003ee0 6f 73 65 44 6f 77 6e 0a 53 59 53 22 57 69 6d 70 |oseDown.SYS"Wimp| 00003ef0 5f 43 6c 6f 73 65 44 6f 77 6e 22 2c 74 61 73 6b |_CloseDown",task| 00003f00 25 2c 22 54 41 53 4b 22 0a 45 4e 44 50 52 4f 43 |%,"TASK".ENDPROC| 00003f10 0a 3a 0a 44 45 46 20 50 52 4f 43 57 69 6d 70 5f |.:.DEF PROCWimp_| 00003f20 51 75 69 74 0a 66 69 6e 69 73 68 65 64 25 3d 54 |Quit.finished%=T| 00003f30 52 55 45 0a 45 4e 44 50 52 4f 43 0a 3a 0a 44 45 |RUE.ENDPROC.:.DE| 00003f40 46 20 46 4e 57 69 6d 70 5f 52 65 61 64 56 61 72 |F FNWimp_ReadVar| 00003f50 69 61 62 6c 65 28 56 61 72 69 61 62 6c 65 24 29 |iable(Variable$)| 00003f60 0a 4c 4f 43 41 4c 6c 65 6e 25 2c 72 65 73 75 6c |.LOCALlen%,resul| 00003f70 74 25 2c 76 61 72 69 61 62 6c 65 25 0a 24 77 69 |t%,variable%.$wi| 00003f80 6d 70 25 3d 56 61 72 69 61 62 6c 65 24 0a 53 59 |mp%=Variable$.SY| 00003f90 53 22 4f 53 5f 52 65 61 64 56 61 72 56 61 6c 22 |S"OS_ReadVarVal"| 00003fa0 2c 77 69 6d 70 25 2c 77 69 6d 70 25 2b 32 35 35 |,wimp%,wimp%+255| 00003fb0 2c 32 35 35 2c 2c 33 54 4f 2c 2c 6c 65 6e 25 0a |,255,,3TO,,len%.| 00003fc0 77 69 6d 70 25 3f 28 6c 65 6e 25 2b 32 35 35 29 |wimp%?(len%+255)| 00003fd0 3d 31 33 0a 3d 24 28 77 69 6d 70 25 2b 32 35 35 |=13.=$(wimp%+255| 00003fe0 29 0a 3a 0a 3a 0a 52 45 4d 7c 0a 52 45 4d 7c 0a |).:.:.REM|.REM|.| 00003ff0 52 45 4d 7c 0a 52 45 4d 7c 0a 52 45 4d 7c 20 20 |REM|.REM|.REM| | 00004000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00004010 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ---------------| 00004020 2d 0a 52 45 4d 7c 20 20 20 20 20 20 20 20 20 20 |-.REM| | 00004030 20 20 20 20 20 20 20 20 20 20 20 57 69 6d 70 20 | Wimp | 00004040 50 6f 6c 6c 69 6e 67 0a 52 45 4d 7c 20 20 20 20 |Polling.REM| | 00004050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d | -| 00004060 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a |---------------.| 00004070 52 45 4d 7c 0a 52 45 4d 7c 0a 3a 0a 44 45 46 20 |REM|.REM|.:.DEF | 00004080 50 52 4f 43 57 69 6d 70 5f 57 61 69 74 46 6f 72 |PROCWimp_WaitFor| 00004090 45 76 65 6e 74 0a 4c 4f 43 41 4c 20 6d 61 73 6b |Event.LOCAL mask| 000040a0 25 2c 65 76 65 6e 74 25 0a 66 69 6e 69 73 68 65 |%,event%.finishe| 000040b0 64 25 3d 46 41 4c 53 45 0a 6d 61 73 6b 25 3d 25 |d%=FALSE.mask%=%| 000040c0 31 31 31 30 30 30 30 31 31 30 30 31 0a 52 45 50 |111000011001.REP| 000040d0 45 41 54 0a 20 53 59 53 22 57 69 6d 70 5f 50 6f |EAT. SYS"Wimp_Po| 000040e0 6c 6c 22 2c 6d 61 73 6b 25 2c 77 69 6d 70 25 20 |ll",mask%,wimp% | 000040f0 54 4f 20 65 76 65 6e 74 25 0a 20 43 41 53 45 20 |TO event%. CASE | 00004100 65 76 65 6e 74 25 20 4f 46 0a 20 20 57 48 45 4e |event% OF. WHEN| 00004110 30 20 3a 0a 20 20 57 48 45 4e 31 20 3a 20 50 52 |0 :. WHEN1 : PR| 00004120 4f 43 57 69 6d 70 5f 50 6f 6c 6c 44 72 61 77 57 |OCWimp_PollDrawW| 00004130 69 6e 64 6f 77 0a 20 20 57 48 45 4e 32 20 3a 20 |indow. WHEN2 : | 00004140 53 59 53 20 22 57 69 6d 70 5f 4f 70 65 6e 57 69 |SYS "Wimp_OpenWi| 00004150 6e 64 6f 77 22 2c 2c 77 69 6d 70 25 0a 20 20 57 |ndow",,wimp%. W| 00004160 48 45 4e 33 20 3a 20 50 52 4f 43 57 69 6d 70 5f |HEN3 : PROCWimp_| 00004170 50 6f 6c 6c 43 6c 6f 73 65 57 69 6e 64 6f 77 0a |PollCloseWindow.| 00004180 20 20 57 48 45 4e 34 20 3a 0a 20 20 57 48 45 4e | WHEN4 :. WHEN| 00004190 35 20 3a 0a 20 20 57 48 45 4e 36 20 3a 20 50 52 |5 :. WHEN6 : PR| 000041a0 4f 43 57 69 6d 70 5f 50 6f 6c 6c 4d 6f 75 73 65 |OCWimp_PollMouse| 000041b0 43 6c 69 63 6b 0a 20 20 57 48 45 4e 37 20 3a 20 |Click. WHEN7 : | 000041c0 50 52 4f 43 57 69 6d 70 5f 50 6f 6c 6c 53 61 76 |PROCWimp_PollSav| 000041d0 65 4d 65 73 73 61 67 65 0a 20 20 57 48 45 4e 38 |eMessage. WHEN8| 000041e0 20 3a 20 50 52 4f 43 57 69 6d 70 5f 50 6f 6c 6c | : PROCWimp_Poll| 000041f0 4b 65 79 50 72 65 73 73 0a 20 20 57 48 45 4e 39 |KeyPress. WHEN9| 00004200 20 3a 20 50 52 4f 43 45 76 65 6e 74 5f 4d 65 6e | : PROCEvent_Men| 00004210 75 43 68 6f 69 63 65 28 6d 65 6e 75 25 29 0a 20 |uChoice(menu%). | 00004220 20 57 48 45 4e 31 30 3a 0a 20 20 57 48 45 4e 31 | WHEN10:. WHEN1| 00004230 31 3a 0a 20 20 57 48 45 4e 31 32 3a 0a 20 20 57 |1:. WHEN12:. W| 00004240 48 45 4e 31 37 2c 31 38 3a 20 50 52 4f 43 57 69 |HEN17,18: PROCWi| 00004250 6d 70 5f 50 6f 6c 6c 4d 65 73 73 61 67 65 73 0a |mp_PollMessages.| 00004260 20 20 57 48 45 4e 31 39 3a 0a 20 45 4e 44 43 41 | WHEN19:. ENDCA| 00004270 53 45 0a 55 4e 54 49 4c 20 66 69 6e 69 73 68 65 |SE.UNTIL finishe| 00004280 64 25 0a 45 4e 44 50 52 4f 43 0a 3a 0a 44 45 46 |d%.ENDPROC.:.DEF| 00004290 20 50 52 4f 43 57 69 6d 70 5f 50 6f 6c 6c 44 72 | PROCWimp_PollDr| 000042a0 61 77 57 69 6e 64 6f 77 0a 4c 4f 43 41 4c 20 6d |awWindow.LOCAL m| 000042b0 6f 72 65 25 0a 53 59 53 22 57 69 6d 70 5f 52 65 |ore%.SYS"Wimp_Re| 000042c0 64 72 61 77 57 69 6e 64 6f 77 22 2c 2c 77 69 6d |drawWindow",,wim| 000042d0 70 25 54 4f 6d 6f 72 65 25 0a 77 69 6e 64 6f 77 |p%TOmore%.window| 000042e0 25 3d 77 69 6d 70 25 21 30 0a 78 5f 6f 72 69 67 |%=wimp%!0.x_orig| 000042f0 69 6e 25 3d 31 36 2b 77 69 6d 70 25 21 34 2d 77 |in%=16+wimp%!4-w| 00004300 69 6d 70 25 21 32 30 3a 79 5f 6f 72 69 67 69 6e |imp%!20:y_origin| 00004310 25 3d 2d 31 36 2b 77 69 6d 70 25 21 31 36 2d 77 |%=-16+wimp%!16-w| 00004320 69 6d 70 25 21 32 34 0a 57 48 49 4c 45 6d 6f 72 |imp%!24.WHILEmor| 00004330 65 25 0a 20 49 46 20 69 6e 74 65 72 66 61 63 65 |e%. IF interface| 00004340 25 20 54 48 45 4e 20 53 59 53 22 57 69 6d 70 5f |% THEN SYS"Wimp_| 00004350 42 6f 72 64 65 72 57 69 6e 64 6f 77 22 2c 2c 77 |BorderWindow",,w| 00004360 69 6d 70 25 0a 20 50 52 4f 43 45 76 65 6e 74 5f |imp%. PROCEvent_| 00004370 44 72 61 77 28 77 69 6e 64 6f 77 25 2c 78 5f 6f |Draw(window%,x_o| 00004380 72 69 67 69 6e 25 2c 79 5f 6f 72 69 67 69 6e 25 |rigin%,y_origin%| 00004390 29 0a 20 53 59 53 22 57 69 6d 70 5f 47 65 74 52 |). SYS"Wimp_GetR| 000043a0 65 63 74 61 6e 67 6c 65 22 2c 2c 77 69 6d 70 25 |ectangle",,wimp%| 000043b0 54 4f 6d 6f 72 65 25 0a 45 4e 44 57 48 49 4c 45 |TOmore%.ENDWHILE| 000043c0 0a 45 4e 44 50 52 4f 43 0a 3a 0a 44 45 46 20 50 |.ENDPROC.:.DEF P| 000043d0 52 4f 43 57 69 6d 70 5f 50 6f 6c 6c 43 6c 6f 73 |ROCWimp_PollClos| 000043e0 65 57 69 6e 64 6f 77 0a 20 20 53 59 53 20 22 57 |eWindow. SYS "W| 000043f0 69 6d 70 5f 47 65 74 50 6f 69 6e 74 65 72 49 6e |imp_GetPointerIn| 00004400 66 6f 22 2c 2c 77 69 6d 70 25 0a 20 20 77 69 6e |fo",,wimp%. win| 00004410 64 6f 77 25 3d 77 69 6d 70 25 21 31 32 20 3a 20 |dow%=wimp%!12 : | 00004420 62 75 74 74 6f 6e 73 25 3d 77 69 6d 70 25 21 38 |buttons%=wimp%!8| 00004430 0a 20 50 52 4f 43 45 76 65 6e 74 5f 57 69 6e 64 |. PROCEvent_Wind| 00004440 6f 77 43 6c 6f 73 65 28 77 69 6e 64 6f 77 25 2c |owClose(window%,| 00004450 62 75 74 74 6f 6e 73 25 29 0a 20 21 77 69 6d 70 |buttons%). !wimp| 00004460 25 3d 77 69 6e 64 6f 77 25 20 3a 20 53 59 53 20 |%=window% : SYS | 00004470 22 57 69 6d 70 5f 43 6c 6f 73 65 57 69 6e 64 6f |"Wimp_CloseWindo| 00004480 77 22 2c 2c 77 69 6d 70 25 0a 45 4e 44 50 52 4f |w",,wimp%.ENDPRO| 00004490 43 0a 3a 0a 44 45 46 20 50 52 4f 43 57 69 6d 70 |C.:.DEF PROCWimp| 000044a0 5f 50 6f 6c 6c 4d 6f 75 73 65 43 6c 69 63 6b 0a |_PollMouseClick.| 000044b0 20 62 75 74 74 6f 6e 25 3d 77 69 6d 70 25 21 38 | button%=wimp%!8| 000044c0 3a 77 69 6e 64 6f 77 25 3d 77 69 6d 70 25 21 31 |:window%=wimp%!1| 000044d0 32 3a 69 63 6f 6e 25 3d 77 69 6d 70 25 21 31 36 |2:icon%=wimp%!16| 000044e0 3a 78 25 3d 77 69 6d 70 25 21 30 3a 79 25 3d 77 |:x%=wimp%!0:y%=w| 000044f0 69 6d 70 25 21 34 0a 20 43 41 53 45 20 62 75 74 |imp%!4. CASE but| 00004500 74 6f 6e 25 20 4f 46 0a 20 20 20 57 48 45 4e 32 |ton% OF. WHEN2| 00004510 20 20 20 20 3a 20 50 52 4f 43 57 69 6d 70 5f 50 | : PROCWimp_P| 00004520 6f 6c 6c 4d 65 6e 75 50 6f 70 55 70 0a 20 20 20 |ollMenuPopUp. | 00004530 4f 54 48 45 52 57 49 53 45 3a 20 43 41 53 45 20 |OTHERWISE: CASE | 00004540 46 4e 45 76 65 6e 74 5f 53 61 76 65 28 77 69 6e |FNEvent_Save(win| 00004550 64 6f 77 25 29 20 4f 46 0a 20 20 20 20 20 20 20 |dow%) OF. | 00004560 20 20 20 20 20 20 20 20 57 48 45 4e 20 54 52 55 | WHEN TRU| 00004570 45 20 3a 20 50 52 4f 43 57 69 6d 70 5f 50 6f 6c |E : PROCWimp_Pol| 00004580 6c 4d 6f 75 73 65 53 61 76 65 0a 20 20 20 20 20 |lMouseSave. | 00004590 20 20 20 20 20 20 20 20 20 20 57 48 45 4e 20 46 | WHEN F| 000045a0 41 4c 53 45 3a 20 50 52 4f 43 57 69 6d 70 5f 50 |ALSE: PROCWimp_P| 000045b0 6f 6c 6c 45 76 65 6e 74 4d 6f 75 73 65 43 6c 69 |ollEventMouseCli| 000045c0 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 |ck. | 000045d0 20 45 4e 44 43 41 53 45 0a 20 45 4e 44 43 41 53 | ENDCASE. ENDCAS| 000045e0 45 0a 45 4e 44 50 52 4f 43 0a 3a 0a 44 45 46 20 |E.ENDPROC.:.DEF | 000045f0 50 52 4f 43 57 69 6d 70 5f 50 6f 6c 6c 4d 65 6e |PROCWimp_PollMen| 00004600 75 50 6f 70 55 70 0a 6d 65 6e 75 25 3d 46 4e 45 |uPopUp.menu%=FNE| 00004610 76 65 6e 74 5f 4d 65 6e 75 28 77 69 6e 64 6f 77 |vent_Menu(window| 00004620 25 29 0a 20 20 43 41 53 45 20 6d 65 6e 75 25 20 |%). CASE menu% | 00004630 20 4f 46 0a 20 20 20 57 48 45 4e 20 46 41 4c 53 | OF. WHEN FALS| 00004640 45 3a 0a 20 20 20 4f 54 48 45 52 57 49 53 45 20 |E:. OTHERWISE | 00004650 3a 0a 20 20 20 20 20 43 41 53 45 20 77 69 6e 64 |:. CASE wind| 00004660 6f 77 25 20 4f 46 0a 20 20 20 20 20 20 57 48 45 |ow% OF. WHE| 00004670 4e 20 2d 32 20 20 20 3a 20 6e 25 3d 30 0a 20 20 |N -2 : n%=0. | 00004680 20 20 20 20 20 20 57 48 49 4c 45 20 28 28 42 61 | WHILE ((Ba| 00004690 72 5f 4d 65 6e 75 25 21 28 32 38 2b 6e 25 2a 32 |r_Menu%!(28+n%*2| 000046a0 34 29 29 41 4e 44 25 31 30 30 30 30 30 30 30 29 |4))AND%10000000)| 000046b0 3d 30 0a 20 20 20 20 20 20 20 20 20 6e 25 2b 3d |=0. n%+=| 000046c0 31 0a 20 20 20 20 20 20 20 20 45 4e 44 57 48 49 |1. ENDWHI| 000046d0 4c 45 0a 20 20 20 20 20 20 20 20 53 59 53 20 22 |LE. SYS "| 000046e0 57 69 6d 70 5f 43 72 65 61 74 65 4d 65 6e 75 22 |Wimp_CreateMenu"| 000046f0 2c 2c 42 61 72 5f 4d 65 6e 75 25 2c 78 25 2d 36 |,,Bar_Menu%,x%-6| 00004700 34 2c 39 36 2b 6e 25 2a 34 34 0a 20 20 20 20 20 |4,96+n%*44. | 00004710 20 4f 54 48 45 52 57 49 53 45 20 3a 20 53 59 53 | OTHERWISE : SYS| 00004720 22 57 69 6d 70 5f 43 72 65 61 74 65 4d 65 6e 75 |"Wimp_CreateMenu| 00004730 22 2c 2c 6d 65 6e 75 25 2c 78 25 2d 36 34 2c 79 |",,menu%,x%-64,y| 00004740 25 2b 32 30 0a 20 20 20 20 20 45 4e 44 43 41 53 |%+20. ENDCAS| 00004750 45 0a 20 20 45 4e 44 43 41 53 45 0a 45 4e 44 50 |E. ENDCASE.ENDP| 00004760 52 4f 43 0a 3a 0a 44 45 46 20 50 52 4f 43 57 69 |ROC.:.DEF PROCWi| 00004770 6d 70 5f 50 6f 6c 6c 4d 6f 75 73 65 53 61 76 65 |mp_PollMouseSave| 00004780 0a 20 43 41 53 45 20 69 63 6f 6e 25 20 4f 46 0a |. CASE icon% OF.| 00004790 20 20 57 48 45 4e 20 30 20 3a 20 49 46 20 62 75 | WHEN 0 : IF bu| 000047a0 74 74 6f 6e 25 20 41 4e 44 20 26 35 30 20 54 48 |tton% AND &50 TH| 000047b0 45 4e 20 50 52 4f 43 57 69 6d 70 5f 50 6f 6c 6c |EN PROCWimp_Poll| 000047c0 44 72 61 67 42 6f 78 28 77 69 6e 64 6f 77 25 29 |DragBox(window%)| 000047d0 0a 20 20 57 48 45 4e 20 32 20 3a 20 49 46 20 62 |. WHEN 2 : IF b| 000047e0 75 74 74 6f 6e 25 20 41 4e 44 20 35 20 54 48 45 |utton% AND 5 THE| 000047f0 4e 20 20 50 52 4f 43 57 69 6d 70 5f 50 6f 6c 6c |N PROCWimp_Poll| 00004800 53 61 76 65 46 69 6c 65 28 77 69 6e 64 6f 77 25 |SaveFile(window%| 00004810 29 0a 20 45 4e 44 43 41 53 45 0a 45 4e 44 50 52 |). ENDCASE.ENDPR| 00004820 4f 43 0a 3a 0a 44 45 46 20 50 52 4f 43 57 69 6d |OC.:.DEF PROCWim| 00004830 70 5f 50 6f 6c 6c 45 76 65 6e 74 4d 6f 75 73 65 |p_PollEventMouse| 00004840 43 6c 69 63 6b 0a 20 49 46 20 69 6e 74 65 72 66 |Click. IF interf| 00004850 61 63 65 25 20 54 48 45 4e 20 53 59 53 22 57 69 |ace% THEN SYS"Wi| 00004860 6d 70 5f 42 6f 72 64 65 72 49 63 6f 6e 22 2c 2c |mp_BorderIcon",,| 00004870 77 69 6d 70 25 0a 20 50 52 4f 43 45 76 65 6e 74 |wimp%. PROCEvent| 00004880 5f 4d 6f 75 73 65 43 6c 69 63 6b 28 77 69 6e 64 |_MouseClick(wind| 00004890 6f 77 25 2c 69 63 6f 6e 25 2c 62 75 74 74 6f 6e |ow%,icon%,button| 000048a0 25 2c 78 25 2c 79 25 29 0a 20 43 41 53 45 20 20 |%,x%,y%). CASE | 000048b0 69 6e 74 65 72 66 61 63 65 25 20 4f 46 0a 20 20 |interface% OF. | 000048c0 57 48 45 4e 20 54 52 55 45 20 3a 0a 20 20 20 77 |WHEN TRUE :. w| 000048d0 69 6d 70 25 21 30 3d 78 25 3a 77 69 6d 70 25 21 |imp%!0=x%:wimp%!| 000048e0 34 3d 79 25 20 3a 20 77 69 6d 70 25 21 38 3d 30 |4=y% : wimp%!8=0| 000048f0 20 0a 20 20 20 77 69 6d 70 25 21 31 32 3d 77 69 | . wimp%!12=wi| 00004900 6e 64 6f 77 25 20 3a 20 77 69 6d 70 25 21 31 36 |ndow% : wimp%!16| 00004910 3d 69 63 6f 6e 25 0a 20 20 20 53 59 53 22 57 69 |=icon%. SYS"Wi| 00004920 6d 70 5f 42 6f 72 64 65 72 49 63 6f 6e 22 2c 2c |mp_BorderIcon",,| 00004930 77 69 6d 70 25 0a 20 45 4e 44 43 41 53 45 0a 45 |wimp%. ENDCASE.E| 00004940 4e 44 50 52 4f 43 0a 3a 0a 44 45 46 20 50 52 4f |NDPROC.:.DEF PRO| 00004950 43 57 69 6d 70 5f 50 6f 6c 6c 53 61 76 65 46 69 |CWimp_PollSaveFi| 00004960 6c 65 28 77 69 6e 64 6f 77 25 29 0a 4c 4f 43 41 |le(window%).LOCA| 00004970 4c 66 69 6c 65 24 0a 20 77 69 6d 70 25 21 30 3d |Lfile$. wimp%!0=| 00004980 77 69 6e 64 6f 77 25 20 3a 20 77 69 6d 70 25 21 |window% : wimp%!| 00004990 34 3d 31 20 3a 20 53 59 53 20 22 57 69 6d 70 5f |4=1 : SYS "Wimp_| 000049a0 47 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c 77 |GetIconState",,w| 000049b0 69 6d 70 25 0a 20 66 69 6c 65 24 3d 24 28 77 69 |imp%. file$=$(wi| 000049c0 6d 70 25 21 32 38 29 0a 20 43 41 53 45 20 49 4e |mp%!28). CASE IN| 000049d0 53 54 52 28 66 69 6c 65 24 2c 22 2e 22 29 20 4f |STR(file$,".") O| 000049e0 46 0a 20 20 57 48 45 4e 20 30 20 20 20 3a 0a 20 |F. WHEN 0 :. | 000049f0 20 20 24 28 77 69 6d 70 25 2b 34 29 3d 22 54 6f | $(wimp%+4)="To| 00004a00 20 73 61 76 65 2c 20 64 72 61 67 20 74 68 65 20 | save, drag the | 00004a10 69 63 6f 6e 20 74 6f 20 61 20 64 69 72 65 63 74 |icon to a direct| 00004a20 6f 72 79 20 77 69 6e 64 6f 77 22 0a 20 20 20 53 |ory window". S| 00004a30 59 53 20 22 57 69 6d 70 5f 52 65 70 6f 72 74 45 |YS "Wimp_ReportE| 00004a40 72 72 6f 72 22 2c 77 69 6d 70 25 2c 31 36 2c 74 |rror",wimp%,16,t| 00004a50 61 73 6b 24 0a 20 20 4f 54 48 45 52 57 49 53 45 |ask$. OTHERWISE| 00004a60 3a 0a 20 20 20 50 52 4f 43 45 76 65 6e 74 5f 53 |:. PROCEvent_S| 00004a70 61 76 65 46 69 6c 65 28 66 69 6c 65 24 2c 77 69 |aveFile(file$,wi| 00004a80 6e 64 6f 77 25 29 0a 20 45 4e 44 43 41 53 45 0a |ndow%). ENDCASE.| 00004a90 20 53 59 53 22 57 69 6d 70 5f 43 72 65 61 74 65 | SYS"Wimp_Create| 00004aa0 4d 65 6e 75 22 2c 2d 31 0a 45 4e 44 50 52 4f 43 |Menu",-1.ENDPROC| 00004ab0 0a 3a 0a 44 45 46 20 50 52 4f 43 57 69 6d 70 5f |.:.DEF PROCWimp_| 00004ac0 50 6f 6c 6c 44 72 61 67 42 6f 78 28 77 69 6e 64 |PollDragBox(wind| 00004ad0 6f 77 25 29 0a 4c 4f 43 41 4c 78 25 2c 79 25 0a |ow%).LOCALx%,y%.| 00004ae0 20 73 61 76 65 25 3d 77 69 6e 64 6f 77 25 0a 20 | save%=window%. | 00004af0 21 77 69 6d 70 25 3d 77 69 6e 64 6f 77 25 0a 20 |!wimp%=window%. | 00004b00 53 59 53 22 57 69 6d 70 5f 47 65 74 57 69 6e 64 |SYS"Wimp_GetWind| 00004b10 6f 77 53 74 61 74 65 22 2c 2c 77 69 6d 70 25 0a |owState",,wimp%.| 00004b20 20 78 25 3d 77 69 6d 70 25 21 34 2d 77 69 6d 70 | x%=wimp%!4-wimp| 00004b30 25 21 32 30 3a 79 25 3d 77 69 6d 70 25 21 31 36 |%!20:y%=wimp%!16| 00004b40 2d 77 69 6d 70 25 21 32 34 0a 20 77 69 6d 70 25 |-wimp%!24. wimp%| 00004b50 21 34 3d 30 0a 20 53 59 53 22 57 69 6d 70 5f 47 |!4=0. SYS"Wimp_G| 00004b60 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c 77 69 |etIconState",,wi| 00004b70 6d 70 25 0a 20 21 77 69 6d 70 25 3d 77 69 6e 64 |mp%. !wimp%=wind| 00004b80 6f 77 25 0a 20 77 69 6d 70 25 21 34 3d 35 0a 20 |ow%. wimp%!4=5. | 00004b90 77 69 6d 70 25 21 38 3d 78 25 2b 77 69 6d 70 25 |wimp%!8=x%+wimp%| 00004ba0 21 38 3a 77 69 6d 70 25 21 31 32 3d 79 25 2b 77 |!8:wimp%!12=y%+w| 00004bb0 69 6d 70 25 21 31 32 0a 20 77 69 6d 70 25 21 31 |imp%!12. wimp%!1| 00004bc0 36 3d 78 25 2b 77 69 6d 70 25 21 31 36 3a 77 69 |6=x%+wimp%!16:wi| 00004bd0 6d 70 25 21 32 30 3d 79 25 2b 77 69 6d 70 25 21 |mp%!20=y%+wimp%!| 00004be0 32 30 0a 20 77 69 6d 70 25 21 32 34 3d 30 3a 77 |20. wimp%!24=0:w| 00004bf0 69 6d 70 25 21 32 38 3d 30 0a 20 77 69 6d 70 25 |imp%!28=0. wimp%| 00004c00 21 33 32 3d 26 37 46 46 46 46 46 46 46 3a 77 69 |!32=&7FFFFFFF:wi| 00004c10 6d 70 25 21 33 36 3d 26 37 46 46 46 46 46 46 46 |mp%!36=&7FFFFFFF| 00004c20 0a 20 53 59 53 22 57 69 6d 70 5f 44 72 61 67 42 |. SYS"Wimp_DragB| 00004c30 6f 78 22 2c 2c 77 69 6d 70 25 0a 45 4e 44 50 52 |ox",,wimp%.ENDPR| 00004c40 4f 43 0a 3a 0a 44 45 46 20 50 52 4f 43 57 69 6d |OC.:.DEF PROCWim| 00004c50 70 5f 50 6f 6c 6c 4b 65 79 50 72 65 73 73 0a 20 |p_PollKeyPress. | 00004c60 20 77 69 6e 64 6f 77 25 3d 77 69 6d 70 25 21 30 | window%=wimp%!0| 00004c70 3a 69 63 6f 6e 25 3d 77 69 6d 70 25 21 34 3a 6b |:icon%=wimp%!4:k| 00004c80 65 79 25 3d 77 69 6d 70 25 21 32 34 0a 20 20 43 |ey%=wimp%!24. C| 00004c90 41 53 45 20 46 4e 45 76 65 6e 74 5f 53 61 76 65 |ASE FNEvent_Save| 00004ca0 28 77 69 6e 64 6f 77 25 29 20 4f 46 0a 20 20 20 |(window%) OF. | 00004cb0 57 48 45 4e 20 54 52 55 45 20 3a 20 50 52 4f 43 |WHEN TRUE : PROC| 00004cc0 57 69 6d 70 50 6f 6c 6c 5f 53 61 76 65 46 69 6c |WimpPoll_SaveFil| 00004cd0 65 28 77 69 6e 64 6f 77 25 29 0a 20 20 20 57 48 |e(window%). WH| 00004ce0 45 4e 20 46 41 4c 53 45 3a 20 50 52 4f 43 45 76 |EN FALSE: PROCEv| 00004cf0 65 6e 74 5f 4b 65 79 50 72 65 73 73 28 77 69 6e |ent_KeyPress(win| 00004d00 64 6f 77 25 2c 69 63 6f 6e 25 2c 6b 65 79 25 29 |dow%,icon%,key%)| 00004d10 0a 20 20 45 4e 44 43 41 53 45 0a 45 4e 44 50 52 |. ENDCASE.ENDPR| 00004d20 4f 43 0a 3a 0a 44 45 46 20 50 52 4f 43 57 69 6d |OC.:.DEF PROCWim| 00004d30 70 5f 50 6f 6c 6c 53 61 76 65 4d 65 73 73 61 67 |p_PollSaveMessag| 00004d40 65 0a 4c 4f 43 41 4c 66 69 6c 65 24 2c 77 69 6e |e.LOCALfile$,win| 00004d50 64 6f 77 25 2c 69 63 6f 6e 25 2c 78 25 2c 79 25 |dow%,icon%,x%,y%| 00004d60 0a 20 53 59 53 22 57 69 6d 70 5f 47 65 74 50 6f |. SYS"Wimp_GetPo| 00004d70 69 6e 74 65 72 49 6e 66 6f 22 2c 2c 77 69 6d 70 |interInfo",,wimp| 00004d80 25 0a 20 77 69 6e 64 6f 77 25 3d 77 69 6d 70 25 |%. window%=wimp%| 00004d90 21 31 32 3a 69 63 6f 6e 25 3d 77 69 6d 70 25 21 |!12:icon%=wimp%!| 00004da0 31 36 3a 78 25 3d 77 69 6d 70 25 21 30 3a 79 25 |16:x%=wimp%!0:y%| 00004db0 3d 77 69 6d 70 25 21 34 0a 20 77 69 6d 70 25 21 |=wimp%!4. wimp%!| 00004dc0 30 3d 73 61 76 65 25 20 3a 20 77 69 6d 70 25 21 |0=save% : wimp%!| 00004dd0 34 3d 31 20 3a 20 53 59 53 20 22 57 69 6d 70 5f |4=1 : SYS "Wimp_| 00004de0 47 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c 77 |GetIconState",,w| 00004df0 69 6d 70 25 0a 20 66 69 6c 65 24 3d 24 28 77 69 |imp%. file$=$(wi| 00004e00 6d 70 25 21 32 38 29 0a 20 66 69 6c 65 24 3d 46 |mp%!28). file$=F| 00004e10 4e 57 69 6d 70 5f 47 65 74 46 69 6c 65 46 72 6f |NWimp_GetFileFro| 00004e20 6d 50 61 74 68 6e 61 6d 65 28 66 69 6c 65 24 29 |mPathname(file$)| 00004e30 0a 20 77 69 6d 70 25 21 32 30 3d 77 69 6e 64 6f |. wimp%!20=windo| 00004e40 77 25 0a 20 77 69 6d 70 25 21 32 34 3d 69 63 6f |w%. wimp%!24=ico| 00004e50 6e 25 0a 20 77 69 6d 70 25 21 32 38 3d 78 25 3a |n%. wimp%!28=x%:| 00004e60 77 69 6d 70 25 21 33 32 3d 79 25 0a 20 77 69 6d |wimp%!32=y%. wim| 00004e70 70 25 21 33 36 3d 6c 65 6e 67 74 68 25 0a 20 77 |p%!36=length%. w| 00004e80 69 6d 70 25 21 30 3d 36 34 0a 20 77 69 6d 70 25 |imp%!0=64. wimp%| 00004e90 21 31 32 3d 30 0a 20 77 69 6d 70 25 21 31 36 3d |!12=0. wimp%!16=| 00004ea0 31 0a 20 77 69 6d 70 25 21 34 30 3d 26 46 46 46 |1. wimp%!40=&FFF| 00004eb0 0a 20 24 28 77 69 6d 70 25 2b 34 34 29 3d 66 69 |. $(wimp%+44)=fi| 00004ec0 6c 65 24 0a 20 53 59 53 22 57 69 6d 70 5f 53 65 |le$. SYS"Wimp_Se| 00004ed0 6e 64 4d 65 73 73 61 67 65 22 2c 31 37 2c 77 69 |ndMessage",17,wi| 00004ee0 6d 70 25 2c 77 69 6d 70 25 21 32 30 2c 77 69 6d |mp%,wimp%!20,wim| 00004ef0 70 25 21 32 34 0a 45 4e 44 50 52 4f 43 0a 3a 0a |p%!24.ENDPROC.:.| 00004f00 44 45 46 20 50 52 4f 43 57 69 6d 70 5f 50 6f 6c |DEF PROCWimp_Pol| 00004f10 6c 4d 65 73 73 61 67 65 73 0a 4c 4f 43 41 4c 20 |lMessages.LOCAL | 00004f20 66 69 6c 65 24 0a 66 69 6c 65 24 3d 46 4e 57 69 |file$.file$=FNWi| 00004f30 6d 70 5f 47 65 74 53 74 72 69 6e 67 41 74 41 64 |mp_GetStringAtAd| 00004f40 64 72 65 73 73 28 77 69 6d 70 25 2b 34 34 29 0a |dress(wimp%+44).| 00004f50 20 20 20 20 43 41 53 45 20 77 69 6d 70 25 21 31 | CASE wimp%!1| 00004f60 36 20 4f 46 0a 20 20 20 20 20 57 48 45 4e 20 30 |6 OF. WHEN 0| 00004f70 20 3a 20 66 69 6e 69 73 68 65 64 25 3d 54 52 55 | : finished%=TRU| 00004f80 45 0a 20 20 20 20 20 57 48 45 4e 20 31 20 3a 0a |E. WHEN 1 :.| 00004f90 20 20 20 20 20 57 48 45 4e 20 32 20 3a 0a 20 20 | WHEN 2 :. | 00004fa0 20 20 20 20 52 45 4d 20 50 52 4f 43 57 69 6d 70 | REM PROCWimp| 00004fb0 5f 49 63 6f 6e 50 75 74 54 65 78 74 28 73 61 76 |_IconPutText(sav| 00004fc0 65 25 2c 31 2c 66 69 6c 65 24 29 0a 20 20 20 20 |e%,1,file$). | 00004fd0 20 20 77 69 6d 70 25 21 30 3d 73 61 76 65 25 20 | wimp%!0=save% | 00004fe0 3a 20 77 69 6d 70 25 21 34 3d 31 20 3a 20 53 59 |: wimp%!4=1 : SY| 00004ff0 53 20 22 57 69 6d 70 5f 47 65 74 49 63 6f 6e 53 |S "Wimp_GetIconS| 00005000 74 61 74 65 22 2c 2c 77 69 6d 70 25 0a 20 20 20 |tate",,wimp%. | 00005010 20 20 20 24 28 77 69 6d 70 25 21 32 38 29 3d 66 | $(wimp%!28)=f| 00005020 69 6c 65 24 0a 20 20 20 20 20 20 77 69 6d 70 25 |ile$. wimp%| 00005030 21 30 3d 73 61 76 65 25 20 3a 20 77 69 6d 70 25 |!0=save% : wimp%| 00005040 21 34 3d 31 20 3a 20 77 69 6d 70 25 21 38 3d 30 |!4=1 : wimp%!8=0| 00005050 20 3a 20 77 69 6d 70 25 21 31 32 3d 30 0a 20 20 | : wimp%!12=0. | 00005060 20 20 20 20 53 59 53 20 22 57 69 6d 70 5f 53 65 | SYS "Wimp_Se| 00005070 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c 77 69 6d |tIconState",,wim| 00005080 70 25 0a 20 20 20 20 20 20 52 45 4d 20 50 52 4f |p%. REM PRO| 00005090 43 57 69 6d 70 5f 49 63 6f 6e 43 61 72 65 74 28 |CWimp_IconCaret(| 000050a0 73 61 76 65 25 2c 31 2c 4c 45 4e 66 69 6c 65 24 |save%,1,LENfile$| 000050b0 29 0a 20 20 20 20 20 20 53 59 53 20 22 57 69 6d |). SYS "Wim| 000050c0 70 5f 53 65 74 43 61 72 65 74 50 6f 73 69 74 69 |p_SetCaretPositi| 000050d0 6f 6e 22 2c 73 61 76 65 25 2c 31 2c 2c 2c 2d 31 |on",save%,1,,,-1| 000050e0 2c 4c 45 4e 66 69 6c 65 24 0a 20 20 20 20 20 20 |,LENfile$. | 000050f0 50 52 4f 43 45 76 65 6e 74 5f 53 61 76 65 46 69 |PROCEvent_SaveFi| 00005100 6c 65 28 66 69 6c 65 24 2c 73 61 76 65 25 29 0a |le(file$,save%).| 00005110 20 20 20 20 20 57 48 45 4e 20 33 0a 20 20 20 20 | WHEN 3. | 00005120 20 20 74 79 70 65 24 3d 46 4e 57 69 6d 70 5f 46 | type$=FNWimp_F| 00005130 69 6c 65 54 79 70 65 28 77 69 6d 70 25 21 34 30 |ileType(wimp%!40| 00005140 29 20 3a 20 50 52 4f 43 45 76 65 6e 74 5f 4c 6f |) : PROCEvent_Lo| 00005150 61 64 46 69 6c 65 28 66 69 6c 65 24 2c 74 79 70 |adFile(file$,typ| 00005160 65 24 29 0a 20 20 20 20 45 4e 44 43 41 53 45 0a |e$). ENDCASE.| 00005170 45 4e 44 50 52 4f 43 0a 3a 0a 44 45 46 20 46 4e |ENDPROC.:.DEF FN| 00005180 57 69 6d 70 5f 47 65 74 53 74 72 69 6e 67 41 74 |Wimp_GetStringAt| 00005190 41 64 64 72 65 73 73 28 61 72 72 61 79 25 29 0a |Address(array%).| 000051a0 4c 4f 43 41 4c 73 24 3a 73 24 3d 22 22 0a 57 48 |LOCALs$:s$="".WH| 000051b0 49 4c 45 28 3f 61 72 72 61 79 25 3c 3e 31 33 29 |ILE(?array%<>13)| 000051c0 41 4e 44 28 3f 61 72 72 61 79 25 3c 3e 30 29 3a |AND(?array%<>0):| 000051d0 73 24 2b 3d 43 48 52 24 28 3f 61 72 72 61 79 25 |s$+=CHR$(?array%| 000051e0 29 3a 61 72 72 61 79 25 2b 3d 31 3a 45 4e 44 57 |):array%+=1:ENDW| 000051f0 48 49 4c 45 3a 0a 3d 73 24 0a 3a 0a 44 45 46 20 |HILE:.=s$.:.DEF | 00005200 46 4e 57 69 6d 70 5f 47 65 74 46 69 6c 65 46 72 |FNWimp_GetFileFr| 00005210 6f 6d 50 61 74 68 6e 61 6d 65 28 66 24 29 0a 43 |omPathname(f$).C| 00005220 41 53 45 20 49 4e 53 54 52 28 66 24 2c 22 2e 22 |ASE INSTR(f$,"."| 00005230 29 20 4f 46 0a 20 57 48 45 4e 20 30 20 20 20 20 |) OF. WHEN 0 | 00005240 3a 3d 66 24 0a 20 4f 54 48 45 52 57 49 53 45 20 |:=f$. OTHERWISE | 00005250 3a 3d 46 4e 57 69 6d 70 5f 47 65 74 46 69 6c 65 |:=FNWimp_GetFile| 00005260 46 72 6f 6d 50 61 74 68 6e 61 6d 65 28 52 49 47 |FromPathname(RIG| 00005270 48 54 24 28 66 24 2c 4c 45 4e 28 66 24 29 2d 49 |HT$(f$,LEN(f$)-I| 00005280 4e 53 54 52 28 66 24 2c 22 2e 22 29 29 29 0a 45 |NSTR(f$,"."))).E| 00005290 4e 44 43 41 53 45 0a 3a 0a 44 45 46 20 46 4e 57 |NDCASE.:.DEF FNW| 000052a0 69 6d 70 5f 46 69 6c 65 54 79 70 65 28 74 79 70 |imp_FileType(typ| 000052b0 65 25 29 0a 43 41 53 45 74 79 70 65 25 4f 46 0a |e%).CASEtype%OF.| 000052c0 57 48 45 4e 26 46 46 46 3a 3d 22 54 65 78 74 22 |WHEN&FFF:="Text"| 000052d0 0a 57 48 45 4e 26 46 46 44 3a 3d 22 44 61 74 61 |.WHEN&FFD:="Data| 000052e0 22 0a 57 48 45 4e 26 46 46 42 3a 3d 22 42 61 73 |".WHEN&FFB:="Bas| 000052f0 69 63 22 0a 57 48 45 4e 26 46 46 39 3a 3d 22 53 |ic".WHEN&FF9:="S| 00005300 70 72 69 74 65 22 0a 57 48 45 4e 26 46 45 44 3a |prite".WHEN&FED:| 00005310 3d 22 50 61 6c 65 74 74 65 22 0a 57 48 45 4e 26 |="Palette".WHEN&| 00005320 46 45 43 3a 3d 22 54 65 6d 70 6c 61 74 65 22 0a |FEC:="Template".| 00005330 57 48 45 4e 26 41 46 46 3a 3d 22 44 72 61 77 22 |WHEN&AFF:="Draw"| 00005340 0a 57 48 45 4e 26 31 30 30 30 3a 3d 22 46 6f 6c |.WHEN&1000:="Fol| 00005350 64 65 72 22 0a 57 48 45 4e 26 32 30 30 30 3a 3d |der".WHEN&2000:=| 00005360 22 41 70 70 6c 69 63 61 74 69 6f 6e 22 0a 4f 54 |"Application".OT| 00005370 48 45 52 57 49 53 45 3d 53 54 52 24 7e 28 74 79 |HERWISE=STR$~(ty| 00005380 70 65 25 29 0a 45 4e 44 43 41 53 45 0a 3a 0a 0a |pe%).ENDCASE.:..| 00005390