Home » Archimedes archive » Acorn Computing » 1994 08 subscription disc.adf » 9408s » Shareware/Event/Documents/Examples/!Redraw/FWindow

Shareware/Event/Documents/Examples/!Redraw/FWindow

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 » Acorn Computing » 1994 08 subscription disc.adf » 9408s
Filename: Shareware/Event/Documents/Examples/!Redraw/FWindow
Read OK:
File size: 053E bytes
Load address: 0000
Exec address: 0000
File contents
    1DEF FNshell_WimpInit_I(Version%,TaskName$)
    2SYS "Wimp_Initialise",Version%,&4B534154,TaskName$ TO Version%,Taskid%
    3_U%!148=Taskid%
    4SYS "Interface_Initialise",Taskid%
    5SYS "FontWindow_Initialise",Taskid%,0,0,0,0,0,_U%!232,100 OR 0,0
    6=Taskid%
    7:
    8DEF PROCshell_WimpCloseDown_I(Taskid%)
    9PROCshell_LoseFonts
   10IF _U%!240<>-1 THEN SYS "FontMenu_Release"  
   11SYS "Wimp_CloseDown",Taskid%,&4B534154
   12SYS "Interface_CloseDown",Taskid%
   13SYS "FontWindow_CloseDown",Taskid%,TRUE,FALSE
   14ENDPROC
   15:
   16DEF PROCshell_CreateWindow(ident$,RETURN handle%)
   17LOCAL wb_ptr%
   18wb_ptr%=FNshell_GetWB(ident$)
   19REM set 'sprite area' pointer to usersprites area
   20wb_ptr%!64=_U%!16
   21SYS "FontWindow_CreateWindow",_U%!148,wb_ptr%,0 TO handle%
   22ENDPROC
   23:
   24DEF PROCshell_MenuWarnDBox(addr%,x%,y%)
   25LOCAL temp%,h%,void%
   26LOCAL ERROR
   27ON ERROR LOCAL:RESTORE ERROR:ENDPROC
   28temp%=addr%!4
   29PROCshell_CreateWindow($temp%!0,h%)
   30RESTORE ERROR
   31PROCshell_Tracef0("MenuWarnDBox:Creating new dynamic dbox (handle=&"+STR$~h%+")")
   32IF $temp%!4<>"" THEN
   33  PROCshell_Tracef0("MenuWarnDBox:Calling preopen FN '"+$temp%!4+"'")
   34  void%=EVAL("FN"+$temp%!4+"("+STR$h%+")")
   35ENDIF
   36IF $temp%!8<>"" THEN
   37  PROCshell_Tracef0("MenuWarnDBox:Calling postopen FN '"+$temp%!8+"'")
   38  void%=EVAL("FN"+$temp%!8+"("+STR$h%+")")
   39ENDIF  
   40REM h% is new window handle....
   41SYS "FontWindow_UpdateWindow",_U%!148,h%
   42SYS "Wimp_CreateSubMenu",,h%,x%,y%
   43_U%!20=h%
   44ENDPROC
   45:
+� �shell_WimpInit_I(Version%,TaskName$)
Hș "Wimp_Initialise",Version%,&4B534154,TaskName$ � Version%,Taskid%
_U%!148=Taskid%
%ș "Interface_Initialise",Taskid%
Bș "FontWindow_Initialise",Taskid%,0,0,0,0,0,_U%!232,100 � 0,0
=Taskid%
:
%� �shell_WimpCloseDown_I(Taskid%)
	�shell_LoseFonts

+� _U%!240<>-1 � ș "FontMenu_Release"  
)ș "Wimp_CloseDown",Taskid%,&4B534154
$ș "Interface_CloseDown",Taskid%

)ș "FontWindow_CloseDown",Taskid%,�,�
�
:
+� �shell_CreateWindow(ident$,� handle%)

� wb_ptr%
 wb_ptr%=�shell_GetWB(ident$)
3� set 'sprite area' pointer to usersprites area
wb_ptr%!64=_U%!16
<ș "FontWindow_CreateWindow",_U%!148,wb_ptr%,0 � handle%
�
:
&� �shell_MenuWarnDBox(addr%,x%,y%)
� temp%,h%,void%
� �
� � �:� �:�
temp%=addr%!4
$�shell_CreateWindow($temp%!0,h%)
� �
O�shell_Tracef0("MenuWarnDBox:Creating new dynamic dbox (handle=&"+�~h%+")")
 � $temp%!4<>"" �
!F  �shell_Tracef0("MenuWarnDBox:Calling preopen FN '"+$temp%!4+"'")
"(  void%=�("FN"+$temp%!4+"("+�h%+")")
#�
$� $temp%!8<>"" �
%G  �shell_Tracef0("MenuWarnDBox:Calling postopen FN '"+$temp%!8+"'")
&(  void%=�("FN"+$temp%!8+"("+�h%+")")
'�  
(!� h% is new window handle....
)+ș "FontWindow_UpdateWindow",_U%!148,h%
*%ș "Wimp_CreateSubMenu",,h%,x%,y%
+
_U%!20=h%
,�
-:
�
00000000  0d 00 01 2b dd 20 a4 73  68 65 6c 6c 5f 57 69 6d  |...+. .shell_Wim|
00000010  70 49 6e 69 74 5f 49 28  56 65 72 73 69 6f 6e 25  |pInit_I(Version%|
00000020  2c 54 61 73 6b 4e 61 6d  65 24 29 0d 00 02 48 c8  |,TaskName$)...H.|
00000030  99 20 22 57 69 6d 70 5f  49 6e 69 74 69 61 6c 69  |. "Wimp_Initiali|
00000040  73 65 22 2c 56 65 72 73  69 6f 6e 25 2c 26 34 42  |se",Version%,&4B|
00000050  35 33 34 31 35 34 2c 54  61 73 6b 4e 61 6d 65 24  |534154,TaskName$|
00000060  20 b8 20 56 65 72 73 69  6f 6e 25 2c 54 61 73 6b  | . Version%,Task|
00000070  69 64 25 0d 00 03 13 5f  55 25 21 31 34 38 3d 54  |id%...._U%!148=T|
00000080  61 73 6b 69 64 25 0d 00  04 25 c8 99 20 22 49 6e  |askid%...%.. "In|
00000090  74 65 72 66 61 63 65 5f  49 6e 69 74 69 61 6c 69  |terface_Initiali|
000000a0  73 65 22 2c 54 61 73 6b  69 64 25 0d 00 05 42 c8  |se",Taskid%...B.|
000000b0  99 20 22 46 6f 6e 74 57  69 6e 64 6f 77 5f 49 6e  |. "FontWindow_In|
000000c0  69 74 69 61 6c 69 73 65  22 2c 54 61 73 6b 69 64  |itialise",Taskid|
000000d0  25 2c 30 2c 30 2c 30 2c  30 2c 30 2c 5f 55 25 21  |%,0,0,0,0,0,_U%!|
000000e0  32 33 32 2c 31 30 30 20  84 20 30 2c 30 0d 00 06  |232,100 . 0,0...|
000000f0  0c 3d 54 61 73 6b 69 64  25 0d 00 07 05 3a 0d 00  |.=Taskid%....:..|
00000100  08 25 dd 20 f2 73 68 65  6c 6c 5f 57 69 6d 70 43  |.%. .shell_WimpC|
00000110  6c 6f 73 65 44 6f 77 6e  5f 49 28 54 61 73 6b 69  |loseDown_I(Taski|
00000120  64 25 29 0d 00 09 14 f2  73 68 65 6c 6c 5f 4c 6f  |d%).....shell_Lo|
00000130  73 65 46 6f 6e 74 73 0d  00 0a 2b e7 20 5f 55 25  |seFonts...+. _U%|
00000140  21 32 34 30 3c 3e 2d 31  20 8c 20 c8 99 20 22 46  |!240<>-1 . .. "F|
00000150  6f 6e 74 4d 65 6e 75 5f  52 65 6c 65 61 73 65 22  |ontMenu_Release"|
00000160  20 20 0d 00 0b 29 c8 99  20 22 57 69 6d 70 5f 43  |  ...).. "Wimp_C|
00000170  6c 6f 73 65 44 6f 77 6e  22 2c 54 61 73 6b 69 64  |loseDown",Taskid|
00000180  25 2c 26 34 42 35 33 34  31 35 34 0d 00 0c 24 c8  |%,&4B534154...$.|
00000190  99 20 22 49 6e 74 65 72  66 61 63 65 5f 43 6c 6f  |. "Interface_Clo|
000001a0  73 65 44 6f 77 6e 22 2c  54 61 73 6b 69 64 25 0d  |seDown",Taskid%.|
000001b0  00 0d 29 c8 99 20 22 46  6f 6e 74 57 69 6e 64 6f  |..).. "FontWindo|
000001c0  77 5f 43 6c 6f 73 65 44  6f 77 6e 22 2c 54 61 73  |w_CloseDown",Tas|
000001d0  6b 69 64 25 2c b9 2c a3  0d 00 0e 05 e1 0d 00 0f  |kid%,.,.........|
000001e0  05 3a 0d 00 10 2b dd 20  f2 73 68 65 6c 6c 5f 43  |.:...+. .shell_C|
000001f0  72 65 61 74 65 57 69 6e  64 6f 77 28 69 64 65 6e  |reateWindow(iden|
00000200  74 24 2c f8 20 68 61 6e  64 6c 65 25 29 0d 00 11  |t$,. handle%)...|
00000210  0d ea 20 77 62 5f 70 74  72 25 0d 00 12 20 77 62  |.. wb_ptr%... wb|
00000220  5f 70 74 72 25 3d a4 73  68 65 6c 6c 5f 47 65 74  |_ptr%=.shell_Get|
00000230  57 42 28 69 64 65 6e 74  24 29 0d 00 13 33 f4 20  |WB(ident$)...3. |
00000240  73 65 74 20 27 73 70 72  69 74 65 20 61 72 65 61  |set 'sprite area|
00000250  27 20 70 6f 69 6e 74 65  72 20 74 6f 20 75 73 65  |' pointer to use|
00000260  72 73 70 72 69 74 65 73  20 61 72 65 61 0d 00 14  |rsprites area...|
00000270  15 77 62 5f 70 74 72 25  21 36 34 3d 5f 55 25 21  |.wb_ptr%!64=_U%!|
00000280  31 36 0d 00 15 3c c8 99  20 22 46 6f 6e 74 57 69  |16...<.. "FontWi|
00000290  6e 64 6f 77 5f 43 72 65  61 74 65 57 69 6e 64 6f  |ndow_CreateWindo|
000002a0  77 22 2c 5f 55 25 21 31  34 38 2c 77 62 5f 70 74  |w",_U%!148,wb_pt|
000002b0  72 25 2c 30 20 b8 20 68  61 6e 64 6c 65 25 0d 00  |r%,0 . handle%..|
000002c0  16 05 e1 0d 00 17 05 3a  0d 00 18 26 dd 20 f2 73  |.......:...&. .s|
000002d0  68 65 6c 6c 5f 4d 65 6e  75 57 61 72 6e 44 42 6f  |hell_MenuWarnDBo|
000002e0  78 28 61 64 64 72 25 2c  78 25 2c 79 25 29 0d 00  |x(addr%,x%,y%)..|
000002f0  19 14 ea 20 74 65 6d 70  25 2c 68 25 2c 76 6f 69  |... temp%,h%,voi|
00000300  64 25 0d 00 1a 07 ea 20  85 0d 00 1b 0f ee 20 85  |d%..... ...... .|
00000310  20 ea 3a f7 20 85 3a e1  0d 00 1c 11 74 65 6d 70  | .:. .:.....temp|
00000320  25 3d 61 64 64 72 25 21  34 0d 00 1d 24 f2 73 68  |%=addr%!4...$.sh|
00000330  65 6c 6c 5f 43 72 65 61  74 65 57 69 6e 64 6f 77  |ell_CreateWindow|
00000340  28 24 74 65 6d 70 25 21  30 2c 68 25 29 0d 00 1e  |($temp%!0,h%)...|
00000350  07 f7 20 85 0d 00 1f 4f  f2 73 68 65 6c 6c 5f 54  |.. ....O.shell_T|
00000360  72 61 63 65 66 30 28 22  4d 65 6e 75 57 61 72 6e  |racef0("MenuWarn|
00000370  44 42 6f 78 3a 43 72 65  61 74 69 6e 67 20 6e 65  |DBox:Creating ne|
00000380  77 20 64 79 6e 61 6d 69  63 20 64 62 6f 78 20 28  |w dynamic dbox (|
00000390  68 61 6e 64 6c 65 3d 26  22 2b c3 7e 68 25 2b 22  |handle=&"+.~h%+"|
000003a0  29 22 29 0d 00 20 14 e7  20 24 74 65 6d 70 25 21  |)").. .. $temp%!|
000003b0  34 3c 3e 22 22 20 8c 0d  00 21 46 20 20 f2 73 68  |4<>"" ...!F  .sh|
000003c0  65 6c 6c 5f 54 72 61 63  65 66 30 28 22 4d 65 6e  |ell_Tracef0("Men|
000003d0  75 57 61 72 6e 44 42 6f  78 3a 43 61 6c 6c 69 6e  |uWarnDBox:Callin|
000003e0  67 20 70 72 65 6f 70 65  6e 20 46 4e 20 27 22 2b  |g preopen FN '"+|
000003f0  24 74 65 6d 70 25 21 34  2b 22 27 22 29 0d 00 22  |$temp%!4+"'").."|
00000400  28 20 20 76 6f 69 64 25  3d a0 28 22 46 4e 22 2b  |(  void%=.("FN"+|
00000410  24 74 65 6d 70 25 21 34  2b 22 28 22 2b c3 68 25  |$temp%!4+"("+.h%|
00000420  2b 22 29 22 29 0d 00 23  05 cd 0d 00 24 14 e7 20  |+")")..#....$.. |
00000430  24 74 65 6d 70 25 21 38  3c 3e 22 22 20 8c 0d 00  |$temp%!8<>"" ...|
00000440  25 47 20 20 f2 73 68 65  6c 6c 5f 54 72 61 63 65  |%G  .shell_Trace|
00000450  66 30 28 22 4d 65 6e 75  57 61 72 6e 44 42 6f 78  |f0("MenuWarnDBox|
00000460  3a 43 61 6c 6c 69 6e 67  20 70 6f 73 74 6f 70 65  |:Calling postope|
00000470  6e 20 46 4e 20 27 22 2b  24 74 65 6d 70 25 21 38  |n FN '"+$temp%!8|
00000480  2b 22 27 22 29 0d 00 26  28 20 20 76 6f 69 64 25  |+"'")..&(  void%|
00000490  3d a0 28 22 46 4e 22 2b  24 74 65 6d 70 25 21 38  |=.("FN"+$temp%!8|
000004a0  2b 22 28 22 2b c3 68 25  2b 22 29 22 29 0d 00 27  |+"("+.h%+")")..'|
000004b0  07 cd 20 20 0d 00 28 21  f4 20 68 25 20 69 73 20  |..  ..(!. h% is |
000004c0  6e 65 77 20 77 69 6e 64  6f 77 20 68 61 6e 64 6c  |new window handl|
000004d0  65 2e 2e 2e 2e 0d 00 29  2b c8 99 20 22 46 6f 6e  |e......)+.. "Fon|
000004e0  74 57 69 6e 64 6f 77 5f  55 70 64 61 74 65 57 69  |tWindow_UpdateWi|
000004f0  6e 64 6f 77 22 2c 5f 55  25 21 31 34 38 2c 68 25  |ndow",_U%!148,h%|
00000500  0d 00 2a 25 c8 99 20 22  57 69 6d 70 5f 43 72 65  |..*%.. "Wimp_Cre|
00000510  61 74 65 53 75 62 4d 65  6e 75 22 2c 2c 68 25 2c  |ateSubMenu",,h%,|
00000520  78 25 2c 79 25 0d 00 2b  0d 5f 55 25 21 32 30 3d  |x%,y%..+._U%!20=|
00000530  68 25 0d 00 2c 05 e1 0d  00 2d 05 3a 0d ff        |h%..,....-.:..|
0000053e