Home » Archimedes archive » Acorn User » AU 1996-05.adf » Regulars » StarInfo/Whitehouse/!Hneftafl/!RunImage

StarInfo/Whitehouse/!Hneftafl/!RunImage

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

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

Tape/disk: Home » Archimedes archive » Acorn User » AU 1996-05.adf » Regulars
Filename: StarInfo/Whitehouse/!Hneftafl/!RunImage
Read OK:
File size: 25E7 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM
   20REM Hneftafl by Stuart Whitehouse
   30REM
   40REM
   50REM
   60PROCstartup
   70PROCpoll_loop
   80PROCclosedown
   90END
  100:
  110:                *** startup sequence ***
  120:
  130DEFPROCstartup
  140LIBRARY "<Obey$Dir>.Hneftafl"
  150LIBRARY "<Obey$Dir>.IcnDefs" : REM header file generated by Tempest
  160appname$="Hneftafl":indir_size%=10000
  170
  180DIM b% 3300, tb% 2048, indirect% indir_size%, temp% 48:pb%=temp%
  190DIM font_array% 256
  200FOR w%=0 TO 255:font_array%?w%=0:NEXT
  210
  220ON ERROR ON ERROR OFF:PROCerror("Can't start "+appname$+" - "+REPORT$+" at line "+STR$(ERL)):PROCclosedown:END
  230
  240DIM w% 4:w%!0=0
  250SYS "Wimp_Initialise",310,&4B534154,appname$,w% TO ,taskhandle%
  260
  270SYS "Tempest_Hello",,4+16+32+256,tb%,2048,appname$
  280SYS "Tempest_MiscOp",11,"",tb%,"IBAR"
  290: REM installs i-bar icon "!<appname$>", with i.active help IBAR
  300
  310REM load templates - sprite link first; windows; menus; I-help
  320REM all this is loaded into indirect% (inc. WinSprs, Text)
  330REM windows - module calls Wimp_CreateWindow, & sets the sprite areas
  340
  350SYS "Tempest_RegisterIndirectArea",indirect%,indirect%+indir_size%,tb%,3300
  360SYS "Tempest_OpenFile","<Obey$Dir>.Templates",,tb%
  370SYS "Tempest_LoadObject","SpriteLink",b%,tb%,-1,0
  380
  390SYS "Tempest_LoadObject","IconBar",b%,tb%,font_array%,0 TO ibarmenu%
  400SYS "Tempest_LoadObject","MainMenu",b%,tb%,font_array%,0 TO mainmenu%
  410
  420SYS "Tempest_LoadObject","ProgInfo",b%,tb%,font_array%,0 TO infohandle%
  430SYS "Tempest_LoadObject","BigWindow",b%,tb%,font_array%,0 TO bighandle%
  440SYS "Tempest_LoadObject","SmallWindow",b%,tb%,font_array%,0 TO smallhandle%
  450SYS "Tempest_LoadObject","GenAlert",b%,tb%,font_array%,0 TO alerthandle%
  460SYS "Tempest_LoadObject","Options",b%,tb%,font_array%,0 TO optionhandle%
  470SYS "Tempest_LoadObject","SaveBox",b%,tb%,font_array%,0 TO savehandle%
  480
  490SYS "Tempest_LoadObject","HelpText",b%,tb%,-1,0 TO help%
  500REM load text file, and install for interactive help.
  510
  520SYS "Tempest_CloseFile",,,tb%
  530SYS "Tempest_LinkMenus",,0,tb%
  540
  550mainhandle%=bighandle%
  560
  570PROCiconnumbers
  580PROChnft_init
  590PROCio_init
  600PROChnft_newgame
  610PROCassem
  620ENDPROC
  630:
  640:
  650:                *** wimp poll ***
  660:
  670:
  680DEFPROCpoll_loop
  690ON ERROR LOCAL PROCerror("Error in "+appname$+" - "+REPORT$+" ["+STR$ERL+"]  OK=Continue/Cancel=Quit"):IF err_result%<>1 THEN PROCclosedown:END
  700quit%=FALSE
  710REPEAT
  720  SYS "Wimp_Poll",&3831,b% TO reason%
  730  SYS "Tempest_PreProcess",reason%,b%,tb% TO reason%
  740  CASE reason% OF
  750    WHEN 2 : SYS "Tempest_OpenWindow",,b%,tb%
  760    WHEN 3 : SYS "Tempest_CloseWindow",,b%,tb%
  770    WHEN 6 : PROCmouse_click
  780    WHEN 7 : PROCuser_drag_box
  790    WHEN 8 : IF b%!24=&1B THEN SYS "Wimp_DragBox",,-1
  800    SYS "Wimp_ProcessKey",b%!24
  810    WHEN 9 : PROCmenuselect
  820    WHEN 17,18 : PROCmessage
  830  ENDCASE
  840UNTIL quit%=TRUE
  850ENDPROC
  860:
  870:
  880:               *** mouse click ***
  890:
  900DEFPROCmouse_click
  910REM b%!12 = window, b%!8 = button state
  920
  930CASE b%!12 OF
  940 
  950  WHEN -2 : REM click on icon bar icon
  960  CASE b%!8 OF
  970    WHEN 2 : SYS "Tempest_ShowMenu",0,,tb%,ibarmenu%
  980    WHEN 4 : !temp%=mainhandle%
  990    SYS "Tempest_ShowWindow",&33C01,temp%,tb%,0 : REM open to front
 1000  ENDCASE
 1010 
 1020  WHEN mainhandle% : REM click on main window
 1030  CASE tb%!0 OF
 1040    WHEN 2 : SYS "Tempest_ShowMenu",1,,tb%,mainmenu% : REM pop-up menu
 1050    WHEN 64,16 : PROCdrag_piece(b%!16)
 1060  ENDCASE
 1070 
 1080  WHEN optionhandle% :
 1090  CASE b%!16 OF
 1100    WHEN opt_ok% : PROCopt_ok
 1110  ENDCASE
 1120 
 1130  WHEN savehandle% : PROCsaveclick
 1140 
 1150ENDCASE
 1160ENDPROC
 1170:
 1180:                   *** drag box ***
 1190:
 1200DEFPROCuser_drag_box
 1210LOCAL window%, icon%
 1220SYS "Wimp_GetPointerInfo",,pb%
 1230window%=pb%!12:icon%=pb%!16
 1240CASE drag_type% OF
 1250  WHEN _MOVE :
 1260  icon%-=first_square%
 1270  IF window%=mainhandle% AND icon%>=0 AND icon%<=80 THEN
 1280    PROCdrop_piece(icon%)
 1290  ENDIF
 1300 
 1310  WHEN _SAVE : PROCsave_dragresult
 1320ENDCASE
 1330drag_type%=_NULL
 1340ENDPROC
 1350:
 1360:                  *** menu select ***
 1370:
 1380DEFPROCmenuselect : REM tb%!8 is last menu created
 1390CASE tb%!8 OF
 1400 
 1410  WHEN ibarmenu% :
 1420  CASE b%!0 OF
 1430    WHEN ibar_info% : SYS "Tempest_ShowMenu",1,,tb%,infohandle%
 1440    WHEN ibar_opt% : PROCopen_options
 1450    WHEN ibar_instr% : *SET Browzer$HelpFile <Hneftafl$Dir>.Instr
 1460    *Filer_Run <Browzer$Dir>.!Run
 1470    WHEN ibar_quit% : IF turn%>1 AND to_play%>0 THEN IF FNgenalert("Quit")=2 ELSE quit%=TRUE
 1480  ENDCASE
 1490 
 1500  WHEN mainmenu% :
 1510  CASE b%!0 OF
 1520    WHEN menu_new% : IF turn%>1 AND to_play%>0 IF FNgenalert("NewG")=2 ELSE PROChnft_newgame
 1530    WHEN menu_opt% : PROCopen_options
 1540    WHEN menu_save% : REM save header. Ignore
 1550  ENDCASE
 1560 
 1570 
 1580ENDCASE
 1590SYS "Tempest_ShowMenu",7,,tb%,0 : REM redisplays last menu on ADJUST
 1600ENDPROC
 1610:
 1620:                 *** messages ***
 1630:
 1640DEFPROCmessage
 1650ref%=b%!8:from%=b%!4
 1660REM 2,4,6,7,&502,10 are being done by Tempest.
 1670CASE b%!16 OF
 1680  WHEN 0 : quit%=TRUE
 1690  WHEN 3,5 :
 1700  IF b%!4=taskhandle% THEN ENDPROC
 1710  IF b%!40<>&4F THEN ENDPROC
 1720  IF b%!16=5 THEN SYS "Tempest_MiscOp",20,b%,tb%
 1730  IF to_play%>0 AND turn%>1 THEN
 1740    IF FNgenalert("LODQ")=2 THEN loadok%=FALSE ELSE loadok%=TRUE
 1750  ELSE
 1760    loadok%=TRUE
 1770  ENDIF
 1780  IF loadok% THEN
 1790    PROCloadfile(FNzero(b%+44))
 1800    IF b%!16=3 THEN
 1810    !b%=20:b%!12=ref%:b%!16=4
 1820    SYS "Wimp_SendMessage",17,b%,from%
 1830    ENDIF
 1840  ENDIF
 1850
 1860  WHEN &4B481 : PROCpreparedata
 1870  WHEN &4B480 : PROCsave_result
 1880ENDCASE
 1890ENDPROC
 1900:
 1910:                 <<< end of poll responses >>>
 1920:                 *** miscellaneous routines ***
 1930:
 1940DEFFNzero(A%):LOCAL w$:w$="":WHILE ?A%>13:w$=w$+CHR$?A%:A%+=1:ENDWHILE:=w$
 1950:
 1960DEFPROCerror(err$)
 1970!b%=255
 1980$(b%+4)=err$+CHR$0
 1990SYS "Wimp_ReportError",b%,3,appname$ TO ,err_result%
 2000ENDPROC
 2010:
 2020DEFPROCclosedown
 2030ON ERROR OFF
 2040SYS "Tempest_ReduceFontArray",0,font_array%,tb%
 2050: REM loses all fonts in window and menus (none at the moment)
 2060SYS "Tempest_MiscOp",10,,tb%
 2070SYS "Wimp_CloseDown"
 2080ENDPROC
 2090:
 2100:
 2110:
 2120:
 2130:
 2140: ******************* I/O ******************
 2150:
 2160DEFPROCio_init
 2170_NULL=0:_MOVE=1:_SAVE=2
 2180
 2190drag_type%=_NULL
 2200first_square%=2
 2210
 2220save_nameptr%=FNget(savehandle%,save_field%)
 2230
 2240DIM alert_block% 56
 2250alert_block%!0=alerthandle%
 2260alert_block%!4=0
 2270alert_block%!8=help%
 2280alert_block%!12=0
 2290alert_block%!16=0
 2300ENDPROC
 2310:
 2320:
 2330DEFFNgenalert(str$)
 2340LOCAL w%
 2350$pb%=str$
 2360SYS "Tempest_GeneralAlert",&10021,alert_block%,tb%,!pb%,0 TO w%
 2370CALL w%
 2380=tb%!48
 2390
 2400DEFPROCreport(str$)
 2410LOCAL w%
 2420SYS "Tempest_GeneralAlert",&10011,alert_block%,tb%,str$,"Cancel" TO w%
 2430CALL w%
 2440ENDPROC
 2450:
 2460:
 2470DEFPROCredrawboard
 2480LOCAL square%
 2490FOR square%=0 TO 80
 2500  PROCsetsquare(square%,board%?square%)
 2510NEXT
 2520ENDPROC
 2530:
 2540DEFPROCsetsquare(square%,type%)
 2550LOCAL spr$
 2560board%?square%=type%
 2570CASE board%?square% OF
 2580  WHEN _king% : spr$="chief"
 2590  WHEN _muskovit% : spr$="muskovit"
 2600  WHEN _swede% : spr$="swede"
 2610  OTHERWISE : spr$=""
 2620ENDCASE
 2630SYS "Tempest_SetIconText",mainhandle%,square%+first_square%,tb%,spr$
 2640ENDPROC
 2650REM in theory the squares of the board could be DIRECT icons rather than indirect.  None of the Tempest commands accessing them care.
 2660:
 2670:
 2680:
 2690DEFPROCdrag_piece(icon%)
 2700LOCAL square%, player%
 2710square%=icon%-first_square%
 2720player%=FNplayer(board%?square%)
 2730IF player%<>to_play% THEN ENDPROC
 2740
 2750drag_type%=_MOVE
 2760!pb%=mainhandle%:pb%!4=icon%
 2770SYS "Tempest_DragAnIcon",-(mainhandle%=smallhandle%),pb%,tb%
 2780REM use outline drag in the small window
 2790
 2800start_square%=square%
 2810ENDPROC
 2820:
 2830:
 2840DEFPROCdrop_piece(square%)
 2850LOCAL ptr%, match%, type%
 2860IF square%=start_square% THEN ENDPROC
 2870PROChnft_makemove(start_square%,square%)
 2880ENDPROC
 2890:
 2900:
 2910DEFPROCopen_options
 2920PROCseticon(optionhandle%,opt_large%,(mainhandle%=bighandle%))
 2930PROCseticon(optionhandle%,opt_small%,(mainhandle%=smallhandle%))
 2940
 2950!pb%=optionhandle% : SYS "Tempest_ShowWindow",&33C11,pb%,tb%,0
 2960REM screen(whole)(inc ctrls), centre, centre, focus(gen), front
 2970ENDPROC
 2980:
 2990:
 3000DEFPROCstatus
 3010LOCAL a$,b$
 3020IF to_play%>0 THEN a$="To move :" ELSE a$="Winner : "
 3030IF ABS(to_play%)=1 THEN b$="Swedes" ELSE b$="Muskovits"
 3040SYS "Tempest_SetIconText",mainhandle%,main_display1%,tb%,a$
 3050SYS "Tempest_SetIconText",mainhandle%,main_player%,tb%,b$
 3060ENDPROC
 3070:
 3080DEFPROCopt_ok
 3090!pb%=mainhandle%:SYS "Tempest_CloseWindow",,pb%,tb%
 3100IF FNreadicon(optionhandle%,opt_small%) THEN
 3110  mainhandle%=smallhandle%
 3120ELSE
 3130  mainhandle%=bighandle%
 3140ENDIF
 3150PROCstatus
 3160PROCredrawboard
 3170!pb%=mainhandle%:SYS "Tempest_ShowWindow",1,pb%,tb%
 3180!pb%=optionhandle%:SYS "Tempest_CloseWindow",,pb%,tb%
 3190ENDPROC
 3200:
 3210:
 3220DEFPROCseticon(pb%!0,pb%!4,state%)
 3230IF state% THEN pb%!8=1<<21 ELSE pb%!8=0
 3240pb%!12=1<<21
 3250SYS "Tempest_EnsureIconState",,pb%,tb%
 3260ENDPROC
 3270:
 3280:
 3290DEFFNreadicon(pb%!0,pb%!4)
 3300SYS "Tempest_GetEntityInfo",,pb%,tb%
 3310=((pb%!24 AND (1<<21))>0)
 3320:
 3330DEFFNget(pb%!0,pb%!4)
 3340SYS "Tempest_GetEntityInfo",,pb%,tb%
 3350=tb%!44 : REM extra return param / guaranteed text ptr
 3360:
 3370
 3380REM ***** saving protocols ***
 3390REM module performs all messages, the actual save to disc or by RAMtransfer
 3400REM file name validation etc...
 3410
 3420DEFPROCsaveclick
 3430LOCAL w%, flags%
 3440CASE b%!16 OF
 3450  WHEN save_ok% : SYS "XTempest_SaveButton",save_nameptr%,b%,tb%,,&4F TO w%;flags%
 3460  IF (flags% AND 1) THEN PROCreport(FNzero(w%+4))
 3470  WHEN save_icon% :
 3480  IF (tb%!0 AND (16+64)) THEN
 3490    SYS "Tempest_DragAnIcon",0,b%+12,tb%
 3500    drag_type%=_SAVE
 3510  ENDIF
 3520ENDCASE
 3530ENDPROC
 3540:
 3550DEFPROCsave_dragresult
 3560LOCAL w%, flags%
 3570SYS "XTempest_StartSaveSequence",save_nameptr%,b%+32,tb%,100,&4F TO w%;flags%
 3580IF (flags% AND 1) THEN PROCreport(FNzero(w%+4))
 3590ENDPROC
 3600:
 3610DEFPROCpreparedata
 3620board%!84=to_play%
 3630board%!88=(mainhandle%=bighandle%) : REM TRUE/FALSE
 3640board%!92=turn%
 3650SYS "Tempest_DataIsReady",0,b%,tb%,board%,100
 3660ENDPROC
 3670:
 3680DEFPROCsave_result
 3690IF b%!20=1 THEN $save_nameptr%=FNzero(b%+28)
 3700: REM save successful & secure & name in b%+28 (for OK(=3) name already in window)
 3710ENDPROC
 3720:
 3730DEFPROCloadfile(name$)
 3740!pb%=mainhandle%:SYS "Tempest_CloseWindow",,pb%,tb%
 3750OSCLI("Load "+name$+" "+STR$~board%)
 3760to_play%=board%!84
 3770IF board%!88 THEN mainhandle%=bighandle% ELSE mainhandle%=smallhandle%
 3780turn%=board%!92
 3790
 3800!pb%=optionhandle%:SYS "Tempest_CloseWindow",,pb%
 3810!pb%=mainhandle%:SYS "Tempest_ShowWindow",1,pb%,tb%
 3820PROCredrawboard
 3830PROCstatus
 3840ENDPROC
 3850:
 3860
 3870

�
#� Hneftafl by Stuart Whitehouse
�
(�
2�
<�startup
F�poll_loop
P�closedown
Z�
d:
n-:                *** startup sequence ***
x:
�
��startup
�ț "<Obey$Dir>.Hneftafl"
�@ț "<Obey$Dir>.IcnDefs" : � header file generated by Tempest
�)appname$="Hneftafl":indir_size%=10000
�
�B� b% 3300, tb% 2048, indirect% indir_size%, temp% 48:pb%=temp%
�� font_array% 256
�#� w%=0 � 255:font_array%?w%=0:�
�
�T� � � � �:�error("Can't start "+appname$+" - "+�$+" at line "+�(�)):�closedown:�
�
�� w% 4:w%!0=0
�Aș "Wimp_Initialise",310,&4B534154,appname$,w% � ,taskhandle%

5ș "Tempest_Hello",,4+16+32+256,tb%,2048,appname$
(ș "Tempest_MiscOp",11,"",tb%,"IBAR"
"B: � installs i-bar icon "!<appname$>", with i.active help IBAR
,
6@� load templates - sprite link first; windows; menus; I-help
@<� all this is loaded into indirect% (inc. WinSprs, Text)
JG� windows - module calls Wimp_CreateWindow, & sets the sprite areas
T
^Nș "Tempest_RegisterIndirectArea",indirect%,indirect%+indir_size%,tb%,3300
h5ș "Tempest_OpenFile","<Obey$Dir>.Templates",,tb%
r4ș "Tempest_LoadObject","SpriteLink",b%,tb%,-1,0
|
�Fș "Tempest_LoadObject","IconBar",b%,tb%,font_array%,0 � ibarmenu%
�Gș "Tempest_LoadObject","MainMenu",b%,tb%,font_array%,0 � mainmenu%
�
�Iș "Tempest_LoadObject","ProgInfo",b%,tb%,font_array%,0 � infohandle%
�Iș "Tempest_LoadObject","BigWindow",b%,tb%,font_array%,0 � bighandle%
�Mș "Tempest_LoadObject","SmallWindow",b%,tb%,font_array%,0 � smallhandle%
�Jș "Tempest_LoadObject","GenAlert",b%,tb%,font_array%,0 � alerthandle%
�Jș "Tempest_LoadObject","Options",b%,tb%,font_array%,0 � optionhandle%
�Hș "Tempest_LoadObject","SaveBox",b%,tb%,font_array%,0 � savehandle%
�
�:ș "Tempest_LoadObject","HelpText",b%,tb%,-1,0 � help%
�7� load text file, and install for interactive help.
�
 ș "Tempest_CloseFile",,,tb%
!ș "Tempest_LinkMenus",,0,tb%

&mainhandle%=bighandle%
0
:�iconnumbers
D�hnft_init
N�io_init
X�hnft_newgame
b
�assem
l�
v:
�:
�&:                *** wimp poll ***
�:
�:
���poll_loop
�t� � � �error("Error in "+appname$+" - "+�$+" ["+Þ+"]  OK=Continue/Cancel=Quit"):� err_result%<>1 � �closedown:�
�quit%=�
��
�'  ș "Wimp_Poll",&3831,b% � reason%
�6  ș "Tempest_PreProcess",reason%,b%,tb% � reason%
�  Ȏ reason% �
�-    � 2 : ș "Tempest_OpenWindow",,b%,tb%
�.    � 3 : ș "Tempest_CloseWindow",,b%,tb%
    � 6 : �mouse_click
    � 7 : �user_drag_box
1    � 8 : � b%!24=&1B � ș "Wimp_DragBox",,-1
 "    ș "Wimp_ProcessKey",b%!24
*    � 9 : �menuselect
4    � 17,18 : �message
>  �
H
� quit%=�
R�
\:
f:
p':               *** mouse click ***
z:
���mouse_click
�)� b%!12 = window, b%!8 = button state
�
�Ȏ b%!12 �
� 
�%  � -2 : � click on icon bar icon
�  Ȏ b%!8 �
�4    � 2 : ș "Tempest_ShowMenu",0,,tb%,ibarmenu%
�     � 4 : !temp%=mainhandle%
�D    ș "Tempest_ShowWindow",&33C01,temp%,tb%,0 : � open to front
�  �
� 
�,  � mainhandle% : � click on main window
  Ȏ tb%!0 �
D    � 2 : ș "Tempest_ShowMenu",1,,tb%,mainmenu% : � pop-up menu
$    � 64,16 : �drag_piece(b%!16)
$  �
. 
8  � optionhandle% :
B  Ȏ b%!16 �
L    � opt_ok% : �opt_ok
V  �
` 
j   � savehandle% : �saveclick
t 
~�
��
�:
�(:                   *** drag box ***
�:
���user_drag_box
�� window%, icon%
�!ș "Wimp_GetPointerInfo",,pb%
�window%=pb%!12:icon%=pb%!16
�Ȏ drag_type% �
�  � _MOVE :
�  icon%-=first_square%
�4  � window%=mainhandle% � icon%>=0 � icon%<=80 �
    �drop_piece(icon%)

  �
 
   � _SAVE : �save_dragresult
(�
2drag_type%=_NULL
<�
F:
P*:                  *** menu select ***
Z:
d/��menuselect : � tb%!8 is last menu created
nȎ tb%!8 �
x 
�  � ibarmenu% :
�  Ȏ b%!0 �
�?    � ibar_info% : ș "Tempest_ShowMenu",1,,tb%,infohandle%
�#    � ibar_opt% : �open_options
�B    � ibar_instr% : *SET Browzer$HelpFile <Hneftafl$Dir>.Instr
�%    *Filer_Run <Browzer$Dir>.!Run
�O    � ibar_quit% : � turn%>1 � to_play%>0 � � �genalert("Quit")=2 � quit%=�
�  �
� 
�  � mainmenu% :
�  Ȏ b%!0 �
�R    � menu_new% : � turn%>1 � to_play%>0 � �genalert("NewG")=2 � �hnft_newgame
�#    � menu_opt% : �open_options
,    � menu_save% : � save header. Ignore
  �
 
" 
,�
6Eș "Tempest_ShowMenu",7,,tb%,0 : � redisplays last menu on ADJUST
@�
J:
T&:                 *** messages ***
^:
h
��message
rref%=b%!8:from%=b%!4
|0� 2,4,6,7,&502,10 are being done by Tempest.
�Ȏ b%!16 �
�  � 0 : quit%=�
�
  � 3,5 :
�  � b%!4=taskhandle% � �
�  � b%!40<>&4F � �
�/  � b%!16=5 � ș "Tempest_MiscOp",20,b%,tb%
�  � to_play%>0 � turn%>1 �
�5    � �genalert("LODQ")=2 � loadok%=� � loadok%=�
�  �
�    loadok%=�
�  �
�  � loadok% �
�    �loadfile(�zero(b%+44))
    � b%!16=3 �
!    !b%=20:b%!12=ref%:b%!16=4
)    ș "Wimp_SendMessage",17,b%,from%
&	    �
0  �
:
D  � &4B481 : �preparedata
N  � &4B480 : �save_result
X�
b�
l:
v3:                 <<< end of poll responses >>>
�4:                 *** miscellaneous routines ***
�:
�:ݤzero(A%):� w$:w$="":ȕ ?A%>13:w$=w$+�?A%:A%+=1:�:=w$
�:
���error(err$)
�!b%=255
�$(b%+4)=err$+�0
�6ș "Wimp_ReportError",b%,3,appname$ � ,err_result%
��
�:
���closedown
�	� � �
�2ș "Tempest_ReduceFontArray",0,font_array%,tb%
@: � loses all fonts in window and menus (none at the moment)
ș "Tempest_MiscOp",10,,tb%
ș "Wimp_CloseDown"
 �
*:
4:
>:
H:
R:
\0: ******************* I/O ******************
f:
p
��io_init
z_NULL=0:_MOVE=1:_SAVE=2
�
�drag_type%=_NULL
�first_square%=2
�
�/save_nameptr%=�get(savehandle%,save_field%)
�
�� alert_block% 56
�alert_block%!0=alerthandle%
�alert_block%!4=0
�alert_block%!8=help%
�alert_block%!12=0
�alert_block%!16=0
��
	:
	:
	ݤgenalert(str$)
	$� w%
	.
$pb%=str$
	8Aș "Tempest_GeneralAlert",&10021,alert_block%,tb%,!pb%,0 � w%
	B� w%
	L=tb%!48
	V
	`��report(str$)
	j� w%
	tHș "Tempest_GeneralAlert",&10011,alert_block%,tb%,str$,"Cancel" � w%
	~� w%
	��
	�:
	�:
	���redrawboard
	�
� square%
	�� square%=0 � 80
	�(  �setsquare(square%,board%?square%)
	��
	��
	�:
	���setsquare(square%,type%)
	�
� spr$
board%?square%=type%

Ȏ board%?square% �
  � _king% : spr$="chief"
$  � _muskovit% : spr$="muskovit"
(  � _swede% : spr$="swede"
2   : spr$=""
<�
FGș "Tempest_SetIconText",mainhandle%,square%+first_square%,tb%,spr$
P�
Z�� in theory the squares of the board could be DIRECT icons rather than indirect.  None of the Tempest commands accessing them care.
d:
n:
x:
���drag_piece(icon%)
�� square%, player%
�square%=icon%-first_square%
�#player%=�player(board%?square%)
�� player%<>to_play% � �
�
�drag_type%=_MOVE
� !pb%=mainhandle%:pb%!4=icon%
�?ș "Tempest_DragAnIcon",-(mainhandle%=smallhandle%),pb%,tb%
�*� use outline drag in the small window
�
�start_square%=square%
��
:
:
��drop_piece(square%)
"� ptr%, match%, type%
,� square%=start_square% � �
6)�hnft_makemove(start_square%,square%)
@�
J:
T:
^��open_options
h?�seticon(optionhandle%,opt_large%,(mainhandle%=bighandle%))
rA�seticon(optionhandle%,opt_small%,(mainhandle%=smallhandle%))
|
�A!pb%=optionhandle% : ș "Tempest_ShowWindow",&33C11,pb%,tb%,0
�A� screen(whole)(inc ctrls), centre, centre, focus(gen), front
��
�:
�:
���status
�� a$,b$
�2� to_play%>0 � a$="To move :" � a$="Winner : "
�2� �(to_play%)=1 � b$="Swedes" � b$="Muskovits"
�>ș "Tempest_SetIconText",mainhandle%,main_display1%,tb%,a$
�<ș "Tempest_SetIconText",mainhandle%,main_player%,tb%,b$
��
�:
��opt_ok
6!pb%=mainhandle%:ș "Tempest_CloseWindow",,pb%,tb%
+� �readicon(optionhandle%,opt_small%) �
&  mainhandle%=smallhandle%
0�
:  mainhandle%=bighandle%
D�
N�status
X�redrawboard
b6!pb%=mainhandle%:ș "Tempest_ShowWindow",1,pb%,tb%
l8!pb%=optionhandle%:ș "Tempest_CloseWindow",,pb%,tb%
v�
�:
�:
�!��seticon(pb%!0,pb%!4,state%)
�$� state% � pb%!8=1<<21 � pb%!8=0
�pb%!12=1<<21
�)ș "Tempest_EnsureIconState",,pb%,tb%
��
�:
�:
�ݤreadicon(pb%!0,pb%!4)
�'ș "Tempest_GetEntityInfo",,pb%,tb%
�=((pb%!24 � (1<<21))>0)
�:

ݤget(pb%!0,pb%!4)

'ș "Tempest_GetEntityInfo",,pb%,tb%

8=tb%!44 : � extra return param / guaranteed text ptr

 :

*

4 � ***** saving protocols ***

>M� module performs all messages, the actual save to disc or by RAMtransfer

H!� file name validation etc...

R

\��saveclick

f� w%, flags%

pȎ b%!16 �

zQ  � save_ok% : ș "XTempest_SaveButton",save_nameptr%,b%,tb%,,&4F � w%;flags%

�+  � (flags% � 1) � �report(�zero(w%+4))

�  � save_icon% :

�  � (tb%!0 � (16+64)) �

�+    ș "Tempest_DragAnIcon",0,b%+12,tb%

�    drag_type%=_SAVE

�  �

��

��

�:

���save_dragresult

�� w%, flags%

�Oș "XTempest_StartSaveSequence",save_nameptr%,b%+32,tb%,100,&4F � w%;flags%

�)� (flags% � 1) � �report(�zero(w%+4))
�
:
��preparedata
$board%!84=to_play%
.5board%!88=(mainhandle%=bighandle%) : � TRUE/FALSE
8board%!92=turn%
B0ș "Tempest_DataIsReady",0,b%,tb%,board%,100
L�
V:
`��save_result
j+� b%!20=1 � $save_nameptr%=�zero(b%+28)
tT: � save successful & secure & name in b%+28 (for OK(=3) name already in window)
~�
�:
���loadfile(name$)
�6!pb%=mainhandle%:ș "Tempest_CloseWindow",,pb%,tb%
�!�("Load "+name$+" "+�~board%)
�to_play%=board%!84
�C� board%!88 � mainhandle%=bighandle% � mainhandle%=smallhandle%
�turn%=board%!92
�
�4!pb%=optionhandle%:ș "Tempest_CloseWindow",,pb%
�6!pb%=mainhandle%:ș "Tempest_ShowWindow",1,pb%,tb%
��redrawboard
��status
�

:


�
00000000  0d 00 0a 05 f4 0d 00 14  23 f4 20 48 6e 65 66 74  |........#. Hneft|
00000010  61 66 6c 20 62 79 20 53  74 75 61 72 74 20 57 68  |afl by Stuart Wh|
00000020  69 74 65 68 6f 75 73 65  0d 00 1e 05 f4 0d 00 28  |itehouse.......(|
00000030  05 f4 0d 00 32 05 f4 0d  00 3c 0c f2 73 74 61 72  |....2....<..star|
00000040  74 75 70 0d 00 46 0e f2  70 6f 6c 6c 5f 6c 6f 6f  |tup..F..poll_loo|
00000050  70 0d 00 50 0e f2 63 6c  6f 73 65 64 6f 77 6e 0d  |p..P..closedown.|
00000060  00 5a 05 e0 0d 00 64 05  3a 0d 00 6e 2d 3a 20 20  |.Z....d.:..n-:  |
00000070  20 20 20 20 20 20 20 20  20 20 20 20 20 20 2a 2a  |              **|
00000080  2a 20 73 74 61 72 74 75  70 20 73 65 71 75 65 6e  |* startup sequen|
00000090  63 65 20 2a 2a 2a 0d 00  78 05 3a 0d 00 82 0d dd  |ce ***..x.:.....|
000000a0  f2 73 74 61 72 74 75 70  0d 00 8c 1c c8 9b 20 22  |.startup...... "|
000000b0  3c 4f 62 65 79 24 44 69  72 3e 2e 48 6e 65 66 74  |<Obey$Dir>.Hneft|
000000c0  61 66 6c 22 0d 00 96 40  c8 9b 20 22 3c 4f 62 65  |afl"...@.. "<Obe|
000000d0  79 24 44 69 72 3e 2e 49  63 6e 44 65 66 73 22 20  |y$Dir>.IcnDefs" |
000000e0  3a 20 f4 20 68 65 61 64  65 72 20 66 69 6c 65 20  |: . header file |
000000f0  67 65 6e 65 72 61 74 65  64 20 62 79 20 54 65 6d  |generated by Tem|
00000100  70 65 73 74 0d 00 a0 29  61 70 70 6e 61 6d 65 24  |pest...)appname$|
00000110  3d 22 48 6e 65 66 74 61  66 6c 22 3a 69 6e 64 69  |="Hneftafl":indi|
00000120  72 5f 73 69 7a 65 25 3d  31 30 30 30 30 0d 00 aa  |r_size%=10000...|
00000130  04 0d 00 b4 42 de 20 62  25 20 33 33 30 30 2c 20  |....B. b% 3300, |
00000140  74 62 25 20 32 30 34 38  2c 20 69 6e 64 69 72 65  |tb% 2048, indire|
00000150  63 74 25 20 69 6e 64 69  72 5f 73 69 7a 65 25 2c  |ct% indir_size%,|
00000160  20 74 65 6d 70 25 20 34  38 3a 70 62 25 3d 74 65  | temp% 48:pb%=te|
00000170  6d 70 25 0d 00 be 15 de  20 66 6f 6e 74 5f 61 72  |mp%..... font_ar|
00000180  72 61 79 25 20 32 35 36  0d 00 c8 23 e3 20 77 25  |ray% 256...#. w%|
00000190  3d 30 20 b8 20 32 35 35  3a 66 6f 6e 74 5f 61 72  |=0 . 255:font_ar|
000001a0  72 61 79 25 3f 77 25 3d  30 3a ed 0d 00 d2 04 0d  |ray%?w%=0:......|
000001b0  00 dc 54 ee 20 85 20 ee  20 85 20 87 3a f2 65 72  |..T. . . . .:.er|
000001c0  72 6f 72 28 22 43 61 6e  27 74 20 73 74 61 72 74  |ror("Can't start|
000001d0  20 22 2b 61 70 70 6e 61  6d 65 24 2b 22 20 2d 20  | "+appname$+" - |
000001e0  22 2b f6 24 2b 22 20 61  74 20 6c 69 6e 65 20 22  |"+.$+" at line "|
000001f0  2b c3 28 9e 29 29 3a f2  63 6c 6f 73 65 64 6f 77  |+.(.)):.closedow|
00000200  6e 3a e0 0d 00 e6 04 0d  00 f0 11 de 20 77 25 20  |n:.......... w% |
00000210  34 3a 77 25 21 30 3d 30  0d 00 fa 41 c8 99 20 22  |4:w%!0=0...A.. "|
00000220  57 69 6d 70 5f 49 6e 69  74 69 61 6c 69 73 65 22  |Wimp_Initialise"|
00000230  2c 33 31 30 2c 26 34 42  35 33 34 31 35 34 2c 61  |,310,&4B534154,a|
00000240  70 70 6e 61 6d 65 24 2c  77 25 20 b8 20 2c 74 61  |ppname$,w% . ,ta|
00000250  73 6b 68 61 6e 64 6c 65  25 0d 01 04 04 0d 01 0e  |skhandle%.......|
00000260  35 c8 99 20 22 54 65 6d  70 65 73 74 5f 48 65 6c  |5.. "Tempest_Hel|
00000270  6c 6f 22 2c 2c 34 2b 31  36 2b 33 32 2b 32 35 36  |lo",,4+16+32+256|
00000280  2c 74 62 25 2c 32 30 34  38 2c 61 70 70 6e 61 6d  |,tb%,2048,appnam|
00000290  65 24 0d 01 18 28 c8 99  20 22 54 65 6d 70 65 73  |e$...(.. "Tempes|
000002a0  74 5f 4d 69 73 63 4f 70  22 2c 31 31 2c 22 22 2c  |t_MiscOp",11,"",|
000002b0  74 62 25 2c 22 49 42 41  52 22 0d 01 22 42 3a 20  |tb%,"IBAR".."B: |
000002c0  f4 20 69 6e 73 74 61 6c  6c 73 20 69 2d 62 61 72  |. installs i-bar|
000002d0  20 69 63 6f 6e 20 22 21  3c 61 70 70 6e 61 6d 65  | icon "!<appname|
000002e0  24 3e 22 2c 20 77 69 74  68 20 69 2e 61 63 74 69  |$>", with i.acti|
000002f0  76 65 20 68 65 6c 70 20  49 42 41 52 0d 01 2c 04  |ve help IBAR..,.|
00000300  0d 01 36 40 f4 20 6c 6f  61 64 20 74 65 6d 70 6c  |..6@. load templ|
00000310  61 74 65 73 20 2d 20 73  70 72 69 74 65 20 6c 69  |ates - sprite li|
00000320  6e 6b 20 66 69 72 73 74  3b 20 77 69 6e 64 6f 77  |nk first; window|
00000330  73 3b 20 6d 65 6e 75 73  3b 20 49 2d 68 65 6c 70  |s; menus; I-help|
00000340  0d 01 40 3c f4 20 61 6c  6c 20 74 68 69 73 20 69  |..@<. all this i|
00000350  73 20 6c 6f 61 64 65 64  20 69 6e 74 6f 20 69 6e  |s loaded into in|
00000360  64 69 72 65 63 74 25 20  28 69 6e 63 2e 20 57 69  |direct% (inc. Wi|
00000370  6e 53 70 72 73 2c 20 54  65 78 74 29 0d 01 4a 47  |nSprs, Text)..JG|
00000380  f4 20 77 69 6e 64 6f 77  73 20 2d 20 6d 6f 64 75  |. windows - modu|
00000390  6c 65 20 63 61 6c 6c 73  20 57 69 6d 70 5f 43 72  |le calls Wimp_Cr|
000003a0  65 61 74 65 57 69 6e 64  6f 77 2c 20 26 20 73 65  |eateWindow, & se|
000003b0  74 73 20 74 68 65 20 73  70 72 69 74 65 20 61 72  |ts the sprite ar|
000003c0  65 61 73 0d 01 54 04 0d  01 5e 4e c8 99 20 22 54  |eas..T...^N.. "T|
000003d0  65 6d 70 65 73 74 5f 52  65 67 69 73 74 65 72 49  |empest_RegisterI|
000003e0  6e 64 69 72 65 63 74 41  72 65 61 22 2c 69 6e 64  |ndirectArea",ind|
000003f0  69 72 65 63 74 25 2c 69  6e 64 69 72 65 63 74 25  |irect%,indirect%|
00000400  2b 69 6e 64 69 72 5f 73  69 7a 65 25 2c 74 62 25  |+indir_size%,tb%|
00000410  2c 33 33 30 30 0d 01 68  35 c8 99 20 22 54 65 6d  |,3300..h5.. "Tem|
00000420  70 65 73 74 5f 4f 70 65  6e 46 69 6c 65 22 2c 22  |pest_OpenFile","|
00000430  3c 4f 62 65 79 24 44 69  72 3e 2e 54 65 6d 70 6c  |<Obey$Dir>.Templ|
00000440  61 74 65 73 22 2c 2c 74  62 25 0d 01 72 34 c8 99  |ates",,tb%..r4..|
00000450  20 22 54 65 6d 70 65 73  74 5f 4c 6f 61 64 4f 62  | "Tempest_LoadOb|
00000460  6a 65 63 74 22 2c 22 53  70 72 69 74 65 4c 69 6e  |ject","SpriteLin|
00000470  6b 22 2c 62 25 2c 74 62  25 2c 2d 31 2c 30 0d 01  |k",b%,tb%,-1,0..|
00000480  7c 04 0d 01 86 46 c8 99  20 22 54 65 6d 70 65 73  ||....F.. "Tempes|
00000490  74 5f 4c 6f 61 64 4f 62  6a 65 63 74 22 2c 22 49  |t_LoadObject","I|
000004a0  63 6f 6e 42 61 72 22 2c  62 25 2c 74 62 25 2c 66  |conBar",b%,tb%,f|
000004b0  6f 6e 74 5f 61 72 72 61  79 25 2c 30 20 b8 20 69  |ont_array%,0 . i|
000004c0  62 61 72 6d 65 6e 75 25  0d 01 90 47 c8 99 20 22  |barmenu%...G.. "|
000004d0  54 65 6d 70 65 73 74 5f  4c 6f 61 64 4f 62 6a 65  |Tempest_LoadObje|
000004e0  63 74 22 2c 22 4d 61 69  6e 4d 65 6e 75 22 2c 62  |ct","MainMenu",b|
000004f0  25 2c 74 62 25 2c 66 6f  6e 74 5f 61 72 72 61 79  |%,tb%,font_array|
00000500  25 2c 30 20 b8 20 6d 61  69 6e 6d 65 6e 75 25 0d  |%,0 . mainmenu%.|
00000510  01 9a 04 0d 01 a4 49 c8  99 20 22 54 65 6d 70 65  |......I.. "Tempe|
00000520  73 74 5f 4c 6f 61 64 4f  62 6a 65 63 74 22 2c 22  |st_LoadObject","|
00000530  50 72 6f 67 49 6e 66 6f  22 2c 62 25 2c 74 62 25  |ProgInfo",b%,tb%|
00000540  2c 66 6f 6e 74 5f 61 72  72 61 79 25 2c 30 20 b8  |,font_array%,0 .|
00000550  20 69 6e 66 6f 68 61 6e  64 6c 65 25 0d 01 ae 49  | infohandle%...I|
00000560  c8 99 20 22 54 65 6d 70  65 73 74 5f 4c 6f 61 64  |.. "Tempest_Load|
00000570  4f 62 6a 65 63 74 22 2c  22 42 69 67 57 69 6e 64  |Object","BigWind|
00000580  6f 77 22 2c 62 25 2c 74  62 25 2c 66 6f 6e 74 5f  |ow",b%,tb%,font_|
00000590  61 72 72 61 79 25 2c 30  20 b8 20 62 69 67 68 61  |array%,0 . bigha|
000005a0  6e 64 6c 65 25 0d 01 b8  4d c8 99 20 22 54 65 6d  |ndle%...M.. "Tem|
000005b0  70 65 73 74 5f 4c 6f 61  64 4f 62 6a 65 63 74 22  |pest_LoadObject"|
000005c0  2c 22 53 6d 61 6c 6c 57  69 6e 64 6f 77 22 2c 62  |,"SmallWindow",b|
000005d0  25 2c 74 62 25 2c 66 6f  6e 74 5f 61 72 72 61 79  |%,tb%,font_array|
000005e0  25 2c 30 20 b8 20 73 6d  61 6c 6c 68 61 6e 64 6c  |%,0 . smallhandl|
000005f0  65 25 0d 01 c2 4a c8 99  20 22 54 65 6d 70 65 73  |e%...J.. "Tempes|
00000600  74 5f 4c 6f 61 64 4f 62  6a 65 63 74 22 2c 22 47  |t_LoadObject","G|
00000610  65 6e 41 6c 65 72 74 22  2c 62 25 2c 74 62 25 2c  |enAlert",b%,tb%,|
00000620  66 6f 6e 74 5f 61 72 72  61 79 25 2c 30 20 b8 20  |font_array%,0 . |
00000630  61 6c 65 72 74 68 61 6e  64 6c 65 25 0d 01 cc 4a  |alerthandle%...J|
00000640  c8 99 20 22 54 65 6d 70  65 73 74 5f 4c 6f 61 64  |.. "Tempest_Load|
00000650  4f 62 6a 65 63 74 22 2c  22 4f 70 74 69 6f 6e 73  |Object","Options|
00000660  22 2c 62 25 2c 74 62 25  2c 66 6f 6e 74 5f 61 72  |",b%,tb%,font_ar|
00000670  72 61 79 25 2c 30 20 b8  20 6f 70 74 69 6f 6e 68  |ray%,0 . optionh|
00000680  61 6e 64 6c 65 25 0d 01  d6 48 c8 99 20 22 54 65  |andle%...H.. "Te|
00000690  6d 70 65 73 74 5f 4c 6f  61 64 4f 62 6a 65 63 74  |mpest_LoadObject|
000006a0  22 2c 22 53 61 76 65 42  6f 78 22 2c 62 25 2c 74  |","SaveBox",b%,t|
000006b0  62 25 2c 66 6f 6e 74 5f  61 72 72 61 79 25 2c 30  |b%,font_array%,0|
000006c0  20 b8 20 73 61 76 65 68  61 6e 64 6c 65 25 0d 01  | . savehandle%..|
000006d0  e0 04 0d 01 ea 3a c8 99  20 22 54 65 6d 70 65 73  |.....:.. "Tempes|
000006e0  74 5f 4c 6f 61 64 4f 62  6a 65 63 74 22 2c 22 48  |t_LoadObject","H|
000006f0  65 6c 70 54 65 78 74 22  2c 62 25 2c 74 62 25 2c  |elpText",b%,tb%,|
00000700  2d 31 2c 30 20 b8 20 68  65 6c 70 25 0d 01 f4 37  |-1,0 . help%...7|
00000710  f4 20 6c 6f 61 64 20 74  65 78 74 20 66 69 6c 65  |. load text file|
00000720  2c 20 61 6e 64 20 69 6e  73 74 61 6c 6c 20 66 6f  |, and install fo|
00000730  72 20 69 6e 74 65 72 61  63 74 69 76 65 20 68 65  |r interactive he|
00000740  6c 70 2e 0d 01 fe 04 0d  02 08 20 c8 99 20 22 54  |lp........ .. "T|
00000750  65 6d 70 65 73 74 5f 43  6c 6f 73 65 46 69 6c 65  |empest_CloseFile|
00000760  22 2c 2c 2c 74 62 25 0d  02 12 21 c8 99 20 22 54  |",,,tb%...!.. "T|
00000770  65 6d 70 65 73 74 5f 4c  69 6e 6b 4d 65 6e 75 73  |empest_LinkMenus|
00000780  22 2c 2c 30 2c 74 62 25  0d 02 1c 04 0d 02 26 1a  |",,0,tb%......&.|
00000790  6d 61 69 6e 68 61 6e 64  6c 65 25 3d 62 69 67 68  |mainhandle%=bigh|
000007a0  61 6e 64 6c 65 25 0d 02  30 04 0d 02 3a 10 f2 69  |andle%..0...:..i|
000007b0  63 6f 6e 6e 75 6d 62 65  72 73 0d 02 44 0e f2 68  |connumbers..D..h|
000007c0  6e 66 74 5f 69 6e 69 74  0d 02 4e 0c f2 69 6f 5f  |nft_init..N..io_|
000007d0  69 6e 69 74 0d 02 58 11  f2 68 6e 66 74 5f 6e 65  |init..X..hnft_ne|
000007e0  77 67 61 6d 65 0d 02 62  0a f2 61 73 73 65 6d 0d  |wgame..b..assem.|
000007f0  02 6c 05 e1 0d 02 76 05  3a 0d 02 80 05 3a 0d 02  |.l....v.:....:..|
00000800  8a 26 3a 20 20 20 20 20  20 20 20 20 20 20 20 20  |.&:             |
00000810  20 20 20 2a 2a 2a 20 77  69 6d 70 20 70 6f 6c 6c  |   *** wimp poll|
00000820  20 2a 2a 2a 0d 02 94 05  3a 0d 02 9e 05 3a 0d 02  | ***....:....:..|
00000830  a8 0f dd f2 70 6f 6c 6c  5f 6c 6f 6f 70 0d 02 b2  |....poll_loop...|
00000840  74 ee 20 85 20 ea 20 f2  65 72 72 6f 72 28 22 45  |t. . . .error("E|
00000850  72 72 6f 72 20 69 6e 20  22 2b 61 70 70 6e 61 6d  |rror in "+appnam|
00000860  65 24 2b 22 20 2d 20 22  2b f6 24 2b 22 20 5b 22  |e$+" - "+.$+" ["|
00000870  2b c3 9e 2b 22 5d 20 20  4f 4b 3d 43 6f 6e 74 69  |+..+"]  OK=Conti|
00000880  6e 75 65 2f 43 61 6e 63  65 6c 3d 51 75 69 74 22  |nue/Cancel=Quit"|
00000890  29 3a e7 20 65 72 72 5f  72 65 73 75 6c 74 25 3c  |):. err_result%<|
000008a0  3e 31 20 8c 20 f2 63 6c  6f 73 65 64 6f 77 6e 3a  |>1 . .closedown:|
000008b0  e0 0d 02 bc 0b 71 75 69  74 25 3d a3 0d 02 c6 05  |.....quit%=.....|
000008c0  f5 0d 02 d0 27 20 20 c8  99 20 22 57 69 6d 70 5f  |....'  .. "Wimp_|
000008d0  50 6f 6c 6c 22 2c 26 33  38 33 31 2c 62 25 20 b8  |Poll",&3831,b% .|
000008e0  20 72 65 61 73 6f 6e 25  0d 02 da 36 20 20 c8 99  | reason%...6  ..|
000008f0  20 22 54 65 6d 70 65 73  74 5f 50 72 65 50 72 6f  | "Tempest_PrePro|
00000900  63 65 73 73 22 2c 72 65  61 73 6f 6e 25 2c 62 25  |cess",reason%,b%|
00000910  2c 74 62 25 20 b8 20 72  65 61 73 6f 6e 25 0d 02  |,tb% . reason%..|
00000920  e4 12 20 20 c8 8e 20 72  65 61 73 6f 6e 25 20 ca  |..  .. reason% .|
00000930  0d 02 ee 2d 20 20 20 20  c9 20 32 20 3a 20 c8 99  |...-    . 2 : ..|
00000940  20 22 54 65 6d 70 65 73  74 5f 4f 70 65 6e 57 69  | "Tempest_OpenWi|
00000950  6e 64 6f 77 22 2c 2c 62  25 2c 74 62 25 0d 02 f8  |ndow",,b%,tb%...|
00000960  2e 20 20 20 20 c9 20 33  20 3a 20 c8 99 20 22 54  |.    . 3 : .. "T|
00000970  65 6d 70 65 73 74 5f 43  6c 6f 73 65 57 69 6e 64  |empest_CloseWind|
00000980  6f 77 22 2c 2c 62 25 2c  74 62 25 0d 03 02 1a 20  |ow",,b%,tb%.... |
00000990  20 20 20 c9 20 36 20 3a  20 f2 6d 6f 75 73 65 5f  |   . 6 : .mouse_|
000009a0  63 6c 69 63 6b 0d 03 0c  1c 20 20 20 20 c9 20 37  |click....    . 7|
000009b0  20 3a 20 f2 75 73 65 72  5f 64 72 61 67 5f 62 6f  | : .user_drag_bo|
000009c0  78 0d 03 16 31 20 20 20  20 c9 20 38 20 3a 20 e7  |x...1    . 8 : .|
000009d0  20 62 25 21 32 34 3d 26  31 42 20 8c 20 c8 99 20  | b%!24=&1B . .. |
000009e0  22 57 69 6d 70 5f 44 72  61 67 42 6f 78 22 2c 2c  |"Wimp_DragBox",,|
000009f0  2d 31 0d 03 20 22 20 20  20 20 c8 99 20 22 57 69  |-1.. "    .. "Wi|
00000a00  6d 70 5f 50 72 6f 63 65  73 73 4b 65 79 22 2c 62  |mp_ProcessKey",b|
00000a10  25 21 32 34 0d 03 2a 19  20 20 20 20 c9 20 39 20  |%!24..*.    . 9 |
00000a20  3a 20 f2 6d 65 6e 75 73  65 6c 65 63 74 0d 03 34  |: .menuselect..4|
00000a30  1a 20 20 20 20 c9 20 31  37 2c 31 38 20 3a 20 f2  |.    . 17,18 : .|
00000a40  6d 65 73 73 61 67 65 0d  03 3e 07 20 20 cb 0d 03  |message..>.  ...|
00000a50  48 0d fd 20 71 75 69 74  25 3d b9 0d 03 52 05 e1  |H.. quit%=...R..|
00000a60  0d 03 5c 05 3a 0d 03 66  05 3a 0d 03 70 27 3a 20  |..\.:..f.:..p': |
00000a70  20 20 20 20 20 20 20 20  20 20 20 20 20 20 2a 2a  |              **|
00000a80  2a 20 6d 6f 75 73 65 20  63 6c 69 63 6b 20 2a 2a  |* mouse click **|
00000a90  2a 0d 03 7a 05 3a 0d 03  84 11 dd f2 6d 6f 75 73  |*..z.:......mous|
00000aa0  65 5f 63 6c 69 63 6b 0d  03 8e 29 f4 20 62 25 21  |e_click...). b%!|
00000ab0  31 32 20 3d 20 77 69 6e  64 6f 77 2c 20 62 25 21  |12 = window, b%!|
00000ac0  38 20 3d 20 62 75 74 74  6f 6e 20 73 74 61 74 65  |8 = button state|
00000ad0  0d 03 98 04 0d 03 a2 0e  c8 8e 20 62 25 21 31 32  |.......... b%!12|
00000ae0  20 ca 0d 03 ac 05 20 0d  03 b6 25 20 20 c9 20 2d  | ..... ...%  . -|
00000af0  32 20 3a 20 f4 20 63 6c  69 63 6b 20 6f 6e 20 69  |2 : . click on i|
00000b00  63 6f 6e 20 62 61 72 20  69 63 6f 6e 0d 03 c0 0f  |con bar icon....|
00000b10  20 20 c8 8e 20 62 25 21  38 20 ca 0d 03 ca 34 20  |  .. b%!8 ....4 |
00000b20  20 20 20 c9 20 32 20 3a  20 c8 99 20 22 54 65 6d  |   . 2 : .. "Tem|
00000b30  70 65 73 74 5f 53 68 6f  77 4d 65 6e 75 22 2c 30  |pest_ShowMenu",0|
00000b40  2c 2c 74 62 25 2c 69 62  61 72 6d 65 6e 75 25 0d  |,,tb%,ibarmenu%.|
00000b50  03 d4 20 20 20 20 20 c9  20 34 20 3a 20 21 74 65  |..     . 4 : !te|
00000b60  6d 70 25 3d 6d 61 69 6e  68 61 6e 64 6c 65 25 0d  |mp%=mainhandle%.|
00000b70  03 de 44 20 20 20 20 c8  99 20 22 54 65 6d 70 65  |..D    .. "Tempe|
00000b80  73 74 5f 53 68 6f 77 57  69 6e 64 6f 77 22 2c 26  |st_ShowWindow",&|
00000b90  33 33 43 30 31 2c 74 65  6d 70 25 2c 74 62 25 2c  |33C01,temp%,tb%,|
00000ba0  30 20 3a 20 f4 20 6f 70  65 6e 20 74 6f 20 66 72  |0 : . open to fr|
00000bb0  6f 6e 74 0d 03 e8 07 20  20 cb 0d 03 f2 05 20 0d  |ont....  ..... .|
00000bc0  03 fc 2c 20 20 c9 20 6d  61 69 6e 68 61 6e 64 6c  |..,  . mainhandl|
00000bd0  65 25 20 3a 20 f4 20 63  6c 69 63 6b 20 6f 6e 20  |e% : . click on |
00000be0  6d 61 69 6e 20 77 69 6e  64 6f 77 0d 04 06 10 20  |main window.... |
00000bf0  20 c8 8e 20 74 62 25 21  30 20 ca 0d 04 10 44 20  | .. tb%!0 ....D |
00000c00  20 20 20 c9 20 32 20 3a  20 c8 99 20 22 54 65 6d  |   . 2 : .. "Tem|
00000c10  70 65 73 74 5f 53 68 6f  77 4d 65 6e 75 22 2c 31  |pest_ShowMenu",1|
00000c20  2c 2c 74 62 25 2c 6d 61  69 6e 6d 65 6e 75 25 20  |,,tb%,mainmenu% |
00000c30  3a 20 f4 20 70 6f 70 2d  75 70 20 6d 65 6e 75 0d  |: . pop-up menu.|
00000c40  04 1a 24 20 20 20 20 c9  20 36 34 2c 31 36 20 3a  |..$    . 64,16 :|
00000c50  20 f2 64 72 61 67 5f 70  69 65 63 65 28 62 25 21  | .drag_piece(b%!|
00000c60  31 36 29 0d 04 24 07 20  20 cb 0d 04 2e 05 20 0d  |16)..$.  ..... .|
00000c70  04 38 17 20 20 c9 20 6f  70 74 69 6f 6e 68 61 6e  |.8.  . optionhan|
00000c80  64 6c 65 25 20 3a 0d 04  42 10 20 20 c8 8e 20 62  |dle% :..B.  .. b|
00000c90  25 21 31 36 20 ca 0d 04  4c 1b 20 20 20 20 c9 20  |%!16 ...L.    . |
00000ca0  6f 70 74 5f 6f 6b 25 20  3a 20 f2 6f 70 74 5f 6f  |opt_ok% : .opt_o|
00000cb0  6b 0d 04 56 07 20 20 cb  0d 04 60 05 20 0d 04 6a  |k..V.  ...`. ..j|
00000cc0  20 20 20 c9 20 73 61 76  65 68 61 6e 64 6c 65 25  |   . savehandle%|
00000cd0  20 3a 20 f2 73 61 76 65  63 6c 69 63 6b 0d 04 74  | : .saveclick..t|
00000ce0  05 20 0d 04 7e 05 cb 0d  04 88 05 e1 0d 04 92 05  |. ..~...........|
00000cf0  3a 0d 04 9c 28 3a 20 20  20 20 20 20 20 20 20 20  |:...(:          |
00000d00  20 20 20 20 20 20 20 20  20 2a 2a 2a 20 64 72 61  |         *** dra|
00000d10  67 20 62 6f 78 20 2a 2a  2a 0d 04 a6 05 3a 0d 04  |g box ***....:..|
00000d20  b0 13 dd f2 75 73 65 72  5f 64 72 61 67 5f 62 6f  |....user_drag_bo|
00000d30  78 0d 04 ba 14 ea 20 77  69 6e 64 6f 77 25 2c 20  |x..... window%, |
00000d40  69 63 6f 6e 25 0d 04 c4  21 c8 99 20 22 57 69 6d  |icon%...!.. "Wim|
00000d50  70 5f 47 65 74 50 6f 69  6e 74 65 72 49 6e 66 6f  |p_GetPointerInfo|
00000d60  22 2c 2c 70 62 25 0d 04  ce 1f 77 69 6e 64 6f 77  |",,pb%....window|
00000d70  25 3d 70 62 25 21 31 32  3a 69 63 6f 6e 25 3d 70  |%=pb%!12:icon%=p|
00000d80  62 25 21 31 36 0d 04 d8  13 c8 8e 20 64 72 61 67  |b%!16...... drag|
00000d90  5f 74 79 70 65 25 20 ca  0d 04 e2 0f 20 20 c9 20  |_type% .....  . |
00000da0  5f 4d 4f 56 45 20 3a 0d  04 ec 1a 20 20 69 63 6f  |_MOVE :....  ico|
00000db0  6e 25 2d 3d 66 69 72 73  74 5f 73 71 75 61 72 65  |n%-=first_square|
00000dc0  25 0d 04 f6 34 20 20 e7  20 77 69 6e 64 6f 77 25  |%...4  . window%|
00000dd0  3d 6d 61 69 6e 68 61 6e  64 6c 65 25 20 80 20 69  |=mainhandle% . i|
00000de0  63 6f 6e 25 3e 3d 30 20  80 20 69 63 6f 6e 25 3c  |con%>=0 . icon%<|
00000df0  3d 38 30 20 8c 0d 05 00  1a 20 20 20 20 f2 64 72  |=80 .....    .dr|
00000e00  6f 70 5f 70 69 65 63 65  28 69 63 6f 6e 25 29 0d  |op_piece(icon%).|
00000e10  05 0a 07 20 20 cd 0d 05  14 05 20 0d 05 1e 20 20  |...  ..... ...  |
00000e20  20 c9 20 5f 53 41 56 45  20 3a 20 f2 73 61 76 65  | . _SAVE : .save|
00000e30  5f 64 72 61 67 72 65 73  75 6c 74 0d 05 28 05 cb  |_dragresult..(..|
00000e40  0d 05 32 14 64 72 61 67  5f 74 79 70 65 25 3d 5f  |..2.drag_type%=_|
00000e50  4e 55 4c 4c 0d 05 3c 05  e1 0d 05 46 05 3a 0d 05  |NULL..<....F.:..|
00000e60  50 2a 3a 20 20 20 20 20  20 20 20 20 20 20 20 20  |P*:             |
00000e70  20 20 20 20 20 2a 2a 2a  20 6d 65 6e 75 20 73 65  |     *** menu se|
00000e80  6c 65 63 74 20 2a 2a 2a  0d 05 5a 05 3a 0d 05 64  |lect ***..Z.:..d|
00000e90  2f dd f2 6d 65 6e 75 73  65 6c 65 63 74 20 3a 20  |/..menuselect : |
00000ea0  f4 20 74 62 25 21 38 20  69 73 20 6c 61 73 74 20  |. tb%!8 is last |
00000eb0  6d 65 6e 75 20 63 72 65  61 74 65 64 0d 05 6e 0e  |menu created..n.|
00000ec0  c8 8e 20 74 62 25 21 38  20 ca 0d 05 78 05 20 0d  |.. tb%!8 ...x. .|
00000ed0  05 82 13 20 20 c9 20 69  62 61 72 6d 65 6e 75 25  |...  . ibarmenu%|
00000ee0  20 3a 0d 05 8c 0f 20 20  c8 8e 20 62 25 21 30 20  | :....  .. b%!0 |
00000ef0  ca 0d 05 96 3f 20 20 20  20 c9 20 69 62 61 72 5f  |....?    . ibar_|
00000f00  69 6e 66 6f 25 20 3a 20  c8 99 20 22 54 65 6d 70  |info% : .. "Temp|
00000f10  65 73 74 5f 53 68 6f 77  4d 65 6e 75 22 2c 31 2c  |est_ShowMenu",1,|
00000f20  2c 74 62 25 2c 69 6e 66  6f 68 61 6e 64 6c 65 25  |,tb%,infohandle%|
00000f30  0d 05 a0 23 20 20 20 20  c9 20 69 62 61 72 5f 6f  |...#    . ibar_o|
00000f40  70 74 25 20 3a 20 f2 6f  70 65 6e 5f 6f 70 74 69  |pt% : .open_opti|
00000f50  6f 6e 73 0d 05 aa 42 20  20 20 20 c9 20 69 62 61  |ons...B    . iba|
00000f60  72 5f 69 6e 73 74 72 25  20 3a 20 2a 53 45 54 20  |r_instr% : *SET |
00000f70  42 72 6f 77 7a 65 72 24  48 65 6c 70 46 69 6c 65  |Browzer$HelpFile|
00000f80  20 3c 48 6e 65 66 74 61  66 6c 24 44 69 72 3e 2e  | <Hneftafl$Dir>.|
00000f90  49 6e 73 74 72 0d 05 b4  25 20 20 20 20 2a 46 69  |Instr...%    *Fi|
00000fa0  6c 65 72 5f 52 75 6e 20  3c 42 72 6f 77 7a 65 72  |ler_Run <Browzer|
00000fb0  24 44 69 72 3e 2e 21 52  75 6e 0d 05 be 4f 20 20  |$Dir>.!Run...O  |
00000fc0  20 20 c9 20 69 62 61 72  5f 71 75 69 74 25 20 3a  |  . ibar_quit% :|
00000fd0  20 e7 20 74 75 72 6e 25  3e 31 20 80 20 74 6f 5f  | . turn%>1 . to_|
00000fe0  70 6c 61 79 25 3e 30 20  8c 20 e7 20 a4 67 65 6e  |play%>0 . . .gen|
00000ff0  61 6c 65 72 74 28 22 51  75 69 74 22 29 3d 32 20  |alert("Quit")=2 |
00001000  8b 20 71 75 69 74 25 3d  b9 0d 05 c8 07 20 20 cb  |. quit%=.....  .|
00001010  0d 05 d2 05 20 0d 05 dc  13 20 20 c9 20 6d 61 69  |.... ....  . mai|
00001020  6e 6d 65 6e 75 25 20 3a  0d 05 e6 0f 20 20 c8 8e  |nmenu% :....  ..|
00001030  20 62 25 21 30 20 ca 0d  05 f0 52 20 20 20 20 c9  | b%!0 ....R    .|
00001040  20 6d 65 6e 75 5f 6e 65  77 25 20 3a 20 e7 20 74  | menu_new% : . t|
00001050  75 72 6e 25 3e 31 20 80  20 74 6f 5f 70 6c 61 79  |urn%>1 . to_play|
00001060  25 3e 30 20 e7 20 a4 67  65 6e 61 6c 65 72 74 28  |%>0 . .genalert(|
00001070  22 4e 65 77 47 22 29 3d  32 20 8b 20 f2 68 6e 66  |"NewG")=2 . .hnf|
00001080  74 5f 6e 65 77 67 61 6d  65 0d 05 fa 23 20 20 20  |t_newgame...#   |
00001090  20 c9 20 6d 65 6e 75 5f  6f 70 74 25 20 3a 20 f2  | . menu_opt% : .|
000010a0  6f 70 65 6e 5f 6f 70 74  69 6f 6e 73 0d 06 04 2c  |open_options...,|
000010b0  20 20 20 20 c9 20 6d 65  6e 75 5f 73 61 76 65 25  |    . menu_save%|
000010c0  20 3a 20 f4 20 73 61 76  65 20 68 65 61 64 65 72  | : . save header|
000010d0  2e 20 49 67 6e 6f 72 65  0d 06 0e 07 20 20 cb 0d  |. Ignore....  ..|
000010e0  06 18 05 20 0d 06 22 05  20 0d 06 2c 05 cb 0d 06  |... ..". ..,....|
000010f0  36 45 c8 99 20 22 54 65  6d 70 65 73 74 5f 53 68  |6E.. "Tempest_Sh|
00001100  6f 77 4d 65 6e 75 22 2c  37 2c 2c 74 62 25 2c 30  |owMenu",7,,tb%,0|
00001110  20 3a 20 f4 20 72 65 64  69 73 70 6c 61 79 73 20  | : . redisplays |
00001120  6c 61 73 74 20 6d 65 6e  75 20 6f 6e 20 41 44 4a  |last menu on ADJ|
00001130  55 53 54 0d 06 40 05 e1  0d 06 4a 05 3a 0d 06 54  |UST..@....J.:..T|
00001140  26 3a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |&:              |
00001150  20 20 20 2a 2a 2a 20 6d  65 73 73 61 67 65 73 20  |   *** messages |
00001160  2a 2a 2a 0d 06 5e 05 3a  0d 06 68 0d dd f2 6d 65  |***..^.:..h...me|
00001170  73 73 61 67 65 0d 06 72  18 72 65 66 25 3d 62 25  |ssage..r.ref%=b%|
00001180  21 38 3a 66 72 6f 6d 25  3d 62 25 21 34 0d 06 7c  |!8:from%=b%!4..||
00001190  30 f4 20 32 2c 34 2c 36  2c 37 2c 26 35 30 32 2c  |0. 2,4,6,7,&502,|
000011a0  31 30 20 61 72 65 20 62  65 69 6e 67 20 64 6f 6e  |10 are being don|
000011b0  65 20 62 79 20 54 65 6d  70 65 73 74 2e 0d 06 86  |e by Tempest....|
000011c0  0e c8 8e 20 62 25 21 31  36 20 ca 0d 06 90 13 20  |... b%!16 ..... |
000011d0  20 c9 20 30 20 3a 20 71  75 69 74 25 3d b9 0d 06  | . 0 : quit%=...|
000011e0  9a 0d 20 20 c9 20 33 2c  35 20 3a 0d 06 a4 1c 20  |..  . 3,5 :.... |
000011f0  20 e7 20 62 25 21 34 3d  74 61 73 6b 68 61 6e 64  | . b%!4=taskhand|
00001200  6c 65 25 20 8c 20 e1 0d  06 ae 16 20 20 e7 20 62  |le% . .....  . b|
00001210  25 21 34 30 3c 3e 26 34  46 20 8c 20 e1 0d 06 b8  |%!40<>&4F . ....|
00001220  2f 20 20 e7 20 62 25 21  31 36 3d 35 20 8c 20 c8  |/  . b%!16=5 . .|
00001230  99 20 22 54 65 6d 70 65  73 74 5f 4d 69 73 63 4f  |. "Tempest_MiscO|
00001240  70 22 2c 32 30 2c 62 25  2c 74 62 25 0d 06 c2 1e  |p",20,b%,tb%....|
00001250  20 20 e7 20 74 6f 5f 70  6c 61 79 25 3e 30 20 80  |  . to_play%>0 .|
00001260  20 74 75 72 6e 25 3e 31  20 8c 0d 06 cc 35 20 20  | turn%>1 ....5  |
00001270  20 20 e7 20 a4 67 65 6e  61 6c 65 72 74 28 22 4c  |  . .genalert("L|
00001280  4f 44 51 22 29 3d 32 20  8c 20 6c 6f 61 64 6f 6b  |ODQ")=2 . loadok|
00001290  25 3d a3 20 8b 20 6c 6f  61 64 6f 6b 25 3d b9 0d  |%=. . loadok%=..|
000012a0  06 d6 07 20 20 cc 0d 06  e0 11 20 20 20 20 6c 6f  |...  .....    lo|
000012b0  61 64 6f 6b 25 3d b9 0d  06 ea 07 20 20 cd 0d 06  |adok%=.....  ...|
000012c0  f4 11 20 20 e7 20 6c 6f  61 64 6f 6b 25 20 8c 0d  |..  . loadok% ..|
000012d0  06 fe 1f 20 20 20 20 f2  6c 6f 61 64 66 69 6c 65  |...    .loadfile|
000012e0  28 a4 7a 65 72 6f 28 62  25 2b 34 34 29 29 0d 07  |(.zero(b%+44))..|
000012f0  08 13 20 20 20 20 e7 20  62 25 21 31 36 3d 33 20  |..    . b%!16=3 |
00001300  8c 0d 07 12 21 20 20 20  20 21 62 25 3d 32 30 3a  |....!    !b%=20:|
00001310  62 25 21 31 32 3d 72 65  66 25 3a 62 25 21 31 36  |b%!12=ref%:b%!16|
00001320  3d 34 0d 07 1c 29 20 20  20 20 c8 99 20 22 57 69  |=4...)    .. "Wi|
00001330  6d 70 5f 53 65 6e 64 4d  65 73 73 61 67 65 22 2c  |mp_SendMessage",|
00001340  31 37 2c 62 25 2c 66 72  6f 6d 25 0d 07 26 09 20  |17,b%,from%..&. |
00001350  20 20 20 cd 0d 07 30 07  20 20 cd 0d 07 3a 04 0d  |   ...0.  ...:..|
00001360  07 44 1d 20 20 c9 20 26  34 42 34 38 31 20 3a 20  |.D.  . &4B481 : |
00001370  f2 70 72 65 70 61 72 65  64 61 74 61 0d 07 4e 1d  |.preparedata..N.|
00001380  20 20 c9 20 26 34 42 34  38 30 20 3a 20 f2 73 61  |  . &4B480 : .sa|
00001390  76 65 5f 72 65 73 75 6c  74 0d 07 58 05 cb 0d 07  |ve_result..X....|
000013a0  62 05 e1 0d 07 6c 05 3a  0d 07 76 33 3a 20 20 20  |b....l.:..v3:   |
000013b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3c 3c  |              <<|
000013c0  3c 20 65 6e 64 20 6f 66  20 70 6f 6c 6c 20 72 65  |< end of poll re|
000013d0  73 70 6f 6e 73 65 73 20  3e 3e 3e 0d 07 80 34 3a  |sponses >>>...4:|
000013e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000013f0  20 2a 2a 2a 20 6d 69 73  63 65 6c 6c 61 6e 65 6f  | *** miscellaneo|
00001400  75 73 20 72 6f 75 74 69  6e 65 73 20 2a 2a 2a 0d  |us routines ***.|
00001410  07 8a 05 3a 0d 07 94 3a  dd a4 7a 65 72 6f 28 41  |...:...:..zero(A|
00001420  25 29 3a ea 20 77 24 3a  77 24 3d 22 22 3a c8 95  |%):. w$:w$="":..|
00001430  20 3f 41 25 3e 31 33 3a  77 24 3d 77 24 2b bd 3f  | ?A%>13:w$=w$+.?|
00001440  41 25 3a 41 25 2b 3d 31  3a ce 3a 3d 77 24 0d 07  |A%:A%+=1:.:=w$..|
00001450  9e 05 3a 0d 07 a8 11 dd  f2 65 72 72 6f 72 28 65  |..:......error(e|
00001460  72 72 24 29 0d 07 b2 0b  21 62 25 3d 32 35 35 0d  |rr$)....!b%=255.|
00001470  07 bc 13 24 28 62 25 2b  34 29 3d 65 72 72 24 2b  |...$(b%+4)=err$+|
00001480  bd 30 0d 07 c6 36 c8 99  20 22 57 69 6d 70 5f 52  |.0...6.. "Wimp_R|
00001490  65 70 6f 72 74 45 72 72  6f 72 22 2c 62 25 2c 33  |eportError",b%,3|
000014a0  2c 61 70 70 6e 61 6d 65  24 20 b8 20 2c 65 72 72  |,appname$ . ,err|
000014b0  5f 72 65 73 75 6c 74 25  0d 07 d0 05 e1 0d 07 da  |_result%........|
000014c0  05 3a 0d 07 e4 0f dd f2  63 6c 6f 73 65 64 6f 77  |.:......closedow|
000014d0  6e 0d 07 ee 09 ee 20 85  20 87 0d 07 f8 32 c8 99  |n..... . ....2..|
000014e0  20 22 54 65 6d 70 65 73  74 5f 52 65 64 75 63 65  | "Tempest_Reduce|
000014f0  46 6f 6e 74 41 72 72 61  79 22 2c 30 2c 66 6f 6e  |FontArray",0,fon|
00001500  74 5f 61 72 72 61 79 25  2c 74 62 25 0d 08 02 40  |t_array%,tb%...@|
00001510  3a 20 f4 20 6c 6f 73 65  73 20 61 6c 6c 20 66 6f  |: . loses all fo|
00001520  6e 74 73 20 69 6e 20 77  69 6e 64 6f 77 20 61 6e  |nts in window an|
00001530  64 20 6d 65 6e 75 73 20  28 6e 6f 6e 65 20 61 74  |d menus (none at|
00001540  20 74 68 65 20 6d 6f 6d  65 6e 74 29 0d 08 0c 1f  | the moment)....|
00001550  c8 99 20 22 54 65 6d 70  65 73 74 5f 4d 69 73 63  |.. "Tempest_Misc|
00001560  4f 70 22 2c 31 30 2c 2c  74 62 25 0d 08 16 17 c8  |Op",10,,tb%.....|
00001570  99 20 22 57 69 6d 70 5f  43 6c 6f 73 65 44 6f 77  |. "Wimp_CloseDow|
00001580  6e 22 0d 08 20 05 e1 0d  08 2a 05 3a 0d 08 34 05  |n".. ....*.:..4.|
00001590  3a 0d 08 3e 05 3a 0d 08  48 05 3a 0d 08 52 05 3a  |:..>.:..H.:..R.:|
000015a0  0d 08 5c 30 3a 20 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |..\0: **********|
000015b0  2a 2a 2a 2a 2a 2a 2a 2a  2a 20 49 2f 4f 20 2a 2a  |********* I/O **|
000015c0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
000015d0  0d 08 66 05 3a 0d 08 70  0d dd f2 69 6f 5f 69 6e  |..f.:..p...io_in|
000015e0  69 74 0d 08 7a 1b 5f 4e  55 4c 4c 3d 30 3a 5f 4d  |it..z._NULL=0:_M|
000015f0  4f 56 45 3d 31 3a 5f 53  41 56 45 3d 32 0d 08 84  |OVE=1:_SAVE=2...|
00001600  04 0d 08 8e 14 64 72 61  67 5f 74 79 70 65 25 3d  |.....drag_type%=|
00001610  5f 4e 55 4c 4c 0d 08 98  13 66 69 72 73 74 5f 73  |_NULL....first_s|
00001620  71 75 61 72 65 25 3d 32  0d 08 a2 04 0d 08 ac 2f  |quare%=2......./|
00001630  73 61 76 65 5f 6e 61 6d  65 70 74 72 25 3d a4 67  |save_nameptr%=.g|
00001640  65 74 28 73 61 76 65 68  61 6e 64 6c 65 25 2c 73  |et(savehandle%,s|
00001650  61 76 65 5f 66 69 65 6c  64 25 29 0d 08 b6 04 0d  |ave_field%).....|
00001660  08 c0 15 de 20 61 6c 65  72 74 5f 62 6c 6f 63 6b  |.... alert_block|
00001670  25 20 35 36 0d 08 ca 1f  61 6c 65 72 74 5f 62 6c  |% 56....alert_bl|
00001680  6f 63 6b 25 21 30 3d 61  6c 65 72 74 68 61 6e 64  |ock%!0=alerthand|
00001690  6c 65 25 0d 08 d4 14 61  6c 65 72 74 5f 62 6c 6f  |le%....alert_blo|
000016a0  63 6b 25 21 34 3d 30 0d  08 de 18 61 6c 65 72 74  |ck%!4=0....alert|
000016b0  5f 62 6c 6f 63 6b 25 21  38 3d 68 65 6c 70 25 0d  |_block%!8=help%.|
000016c0  08 e8 15 61 6c 65 72 74  5f 62 6c 6f 63 6b 25 21  |...alert_block%!|
000016d0  31 32 3d 30 0d 08 f2 15  61 6c 65 72 74 5f 62 6c  |12=0....alert_bl|
000016e0  6f 63 6b 25 21 31 36 3d  30 0d 08 fc 05 e1 0d 09  |ock%!16=0.......|
000016f0  06 05 3a 0d 09 10 05 3a  0d 09 1a 14 dd a4 67 65  |..:....:......ge|
00001700  6e 61 6c 65 72 74 28 73  74 72 24 29 0d 09 24 08  |nalert(str$)..$.|
00001710  ea 20 77 25 0d 09 2e 0d  24 70 62 25 3d 73 74 72  |. w%....$pb%=str|
00001720  24 0d 09 38 41 c8 99 20  22 54 65 6d 70 65 73 74  |$..8A.. "Tempest|
00001730  5f 47 65 6e 65 72 61 6c  41 6c 65 72 74 22 2c 26  |_GeneralAlert",&|
00001740  31 30 30 32 31 2c 61 6c  65 72 74 5f 62 6c 6f 63  |10021,alert_bloc|
00001750  6b 25 2c 74 62 25 2c 21  70 62 25 2c 30 20 b8 20  |k%,tb%,!pb%,0 . |
00001760  77 25 0d 09 42 08 d6 20  77 25 0d 09 4c 0b 3d 74  |w%..B.. w%..L.=t|
00001770  62 25 21 34 38 0d 09 56  04 0d 09 60 12 dd f2 72  |b%!48..V...`...r|
00001780  65 70 6f 72 74 28 73 74  72 24 29 0d 09 6a 08 ea  |eport(str$)..j..|
00001790  20 77 25 0d 09 74 48 c8  99 20 22 54 65 6d 70 65  | w%..tH.. "Tempe|
000017a0  73 74 5f 47 65 6e 65 72  61 6c 41 6c 65 72 74 22  |st_GeneralAlert"|
000017b0  2c 26 31 30 30 31 31 2c  61 6c 65 72 74 5f 62 6c  |,&10011,alert_bl|
000017c0  6f 63 6b 25 2c 74 62 25  2c 73 74 72 24 2c 22 43  |ock%,tb%,str$,"C|
000017d0  61 6e 63 65 6c 22 20 b8  20 77 25 0d 09 7e 08 d6  |ancel" . w%..~..|
000017e0  20 77 25 0d 09 88 05 e1  0d 09 92 05 3a 0d 09 9c  | w%.........:...|
000017f0  05 3a 0d 09 a6 11 dd f2  72 65 64 72 61 77 62 6f  |.:......redrawbo|
00001800  61 72 64 0d 09 b0 0d ea  20 73 71 75 61 72 65 25  |ard..... square%|
00001810  0d 09 ba 14 e3 20 73 71  75 61 72 65 25 3d 30 20  |..... square%=0 |
00001820  b8 20 38 30 0d 09 c4 28  20 20 f2 73 65 74 73 71  |. 80...(  .setsq|
00001830  75 61 72 65 28 73 71 75  61 72 65 25 2c 62 6f 61  |uare(square%,boa|
00001840  72 64 25 3f 73 71 75 61  72 65 25 29 0d 09 ce 05  |rd%?square%)....|
00001850  ed 0d 09 d8 05 e1 0d 09  e2 05 3a 0d 09 ec 1e dd  |..........:.....|
00001860  f2 73 65 74 73 71 75 61  72 65 28 73 71 75 61 72  |.setsquare(squar|
00001870  65 25 2c 74 79 70 65 25  29 0d 09 f6 0a ea 20 73  |e%,type%)..... s|
00001880  70 72 24 0d 0a 00 18 62  6f 61 72 64 25 3f 73 71  |pr$....board%?sq|
00001890  75 61 72 65 25 3d 74 79  70 65 25 0d 0a 0a 17 c8  |uare%=type%.....|
000018a0  8e 20 62 6f 61 72 64 25  3f 73 71 75 61 72 65 25  |. board%?square%|
000018b0  20 ca 0d 0a 14 1d 20 20  c9 20 5f 6b 69 6e 67 25  | .....  . _king%|
000018c0  20 3a 20 73 70 72 24 3d  22 63 68 69 65 66 22 0d  | : spr$="chief".|
000018d0  0a 1e 24 20 20 c9 20 5f  6d 75 73 6b 6f 76 69 74  |..$  . _muskovit|
000018e0  25 20 3a 20 73 70 72 24  3d 22 6d 75 73 6b 6f 76  |% : spr$="muskov|
000018f0  69 74 22 0d 0a 28 1e 20  20 c9 20 5f 73 77 65 64  |it"..(.  . _swed|
00001900  65 25 20 3a 20 73 70 72  24 3d 22 73 77 65 64 65  |e% : spr$="swede|
00001910  22 0d 0a 32 11 20 20 7f  20 3a 20 73 70 72 24 3d  |"..2.  . : spr$=|
00001920  22 22 0d 0a 3c 05 cb 0d  0a 46 47 c8 99 20 22 54  |""..<....FG.. "T|
00001930  65 6d 70 65 73 74 5f 53  65 74 49 63 6f 6e 54 65  |empest_SetIconTe|
00001940  78 74 22 2c 6d 61 69 6e  68 61 6e 64 6c 65 25 2c  |xt",mainhandle%,|
00001950  73 71 75 61 72 65 25 2b  66 69 72 73 74 5f 73 71  |square%+first_sq|
00001960  75 61 72 65 25 2c 74 62  25 2c 73 70 72 24 0d 0a  |uare%,tb%,spr$..|
00001970  50 05 e1 0d 0a 5a 87 f4  20 69 6e 20 74 68 65 6f  |P....Z.. in theo|
00001980  72 79 20 74 68 65 20 73  71 75 61 72 65 73 20 6f  |ry the squares o|
00001990  66 20 74 68 65 20 62 6f  61 72 64 20 63 6f 75 6c  |f the board coul|
000019a0  64 20 62 65 20 44 49 52  45 43 54 20 69 63 6f 6e  |d be DIRECT icon|
000019b0  73 20 72 61 74 68 65 72  20 74 68 61 6e 20 69 6e  |s rather than in|
000019c0  64 69 72 65 63 74 2e 20  20 4e 6f 6e 65 20 6f 66  |direct.  None of|
000019d0  20 74 68 65 20 54 65 6d  70 65 73 74 20 63 6f 6d  | the Tempest com|
000019e0  6d 61 6e 64 73 20 61 63  63 65 73 73 69 6e 67 20  |mands accessing |
000019f0  74 68 65 6d 20 63 61 72  65 2e 0d 0a 64 05 3a 0d  |them care...d.:.|
00001a00  0a 6e 05 3a 0d 0a 78 05  3a 0d 0a 82 17 dd f2 64  |.n.:..x.:......d|
00001a10  72 61 67 5f 70 69 65 63  65 28 69 63 6f 6e 25 29  |rag_piece(icon%)|
00001a20  0d 0a 8c 16 ea 20 73 71  75 61 72 65 25 2c 20 70  |..... square%, p|
00001a30  6c 61 79 65 72 25 0d 0a  96 1f 73 71 75 61 72 65  |layer%....square|
00001a40  25 3d 69 63 6f 6e 25 2d  66 69 72 73 74 5f 73 71  |%=icon%-first_sq|
00001a50  75 61 72 65 25 0d 0a a0  23 70 6c 61 79 65 72 25  |uare%...#player%|
00001a60  3d a4 70 6c 61 79 65 72  28 62 6f 61 72 64 25 3f  |=.player(board%?|
00001a70  73 71 75 61 72 65 25 29  0d 0a aa 1b e7 20 70 6c  |square%)..... pl|
00001a80  61 79 65 72 25 3c 3e 74  6f 5f 70 6c 61 79 25 20  |ayer%<>to_play% |
00001a90  8c 20 e1 0d 0a b4 04 0d  0a be 14 64 72 61 67 5f  |. .........drag_|
00001aa0  74 79 70 65 25 3d 5f 4d  4f 56 45 0d 0a c8 20 21  |type%=_MOVE... !|
00001ab0  70 62 25 3d 6d 61 69 6e  68 61 6e 64 6c 65 25 3a  |pb%=mainhandle%:|
00001ac0  70 62 25 21 34 3d 69 63  6f 6e 25 0d 0a d2 3f c8  |pb%!4=icon%...?.|
00001ad0  99 20 22 54 65 6d 70 65  73 74 5f 44 72 61 67 41  |. "Tempest_DragA|
00001ae0  6e 49 63 6f 6e 22 2c 2d  28 6d 61 69 6e 68 61 6e  |nIcon",-(mainhan|
00001af0  64 6c 65 25 3d 73 6d 61  6c 6c 68 61 6e 64 6c 65  |dle%=smallhandle|
00001b00  25 29 2c 70 62 25 2c 74  62 25 0d 0a dc 2a f4 20  |%),pb%,tb%...*. |
00001b10  75 73 65 20 6f 75 74 6c  69 6e 65 20 64 72 61 67  |use outline drag|
00001b20  20 69 6e 20 74 68 65 20  73 6d 61 6c 6c 20 77 69  | in the small wi|
00001b30  6e 64 6f 77 0d 0a e6 04  0d 0a f0 19 73 74 61 72  |ndow........star|
00001b40  74 5f 73 71 75 61 72 65  25 3d 73 71 75 61 72 65  |t_square%=square|
00001b50  25 0d 0a fa 05 e1 0d 0b  04 05 3a 0d 0b 0e 05 3a  |%.........:....:|
00001b60  0d 0b 18 19 dd f2 64 72  6f 70 5f 70 69 65 63 65  |......drop_piece|
00001b70  28 73 71 75 61 72 65 25  29 0d 0b 22 19 ea 20 70  |(square%)..".. p|
00001b80  74 72 25 2c 20 6d 61 74  63 68 25 2c 20 74 79 70  |tr%, match%, typ|
00001b90  65 25 0d 0b 2c 1f e7 20  73 71 75 61 72 65 25 3d  |e%..,.. square%=|
00001ba0  73 74 61 72 74 5f 73 71  75 61 72 65 25 20 8c 20  |start_square% . |
00001bb0  e1 0d 0b 36 29 f2 68 6e  66 74 5f 6d 61 6b 65 6d  |...6).hnft_makem|
00001bc0  6f 76 65 28 73 74 61 72  74 5f 73 71 75 61 72 65  |ove(start_square|
00001bd0  25 2c 73 71 75 61 72 65  25 29 0d 0b 40 05 e1 0d  |%,square%)..@...|
00001be0  0b 4a 05 3a 0d 0b 54 05  3a 0d 0b 5e 12 dd f2 6f  |.J.:..T.:..^...o|
00001bf0  70 65 6e 5f 6f 70 74 69  6f 6e 73 0d 0b 68 3f f2  |pen_options..h?.|
00001c00  73 65 74 69 63 6f 6e 28  6f 70 74 69 6f 6e 68 61  |seticon(optionha|
00001c10  6e 64 6c 65 25 2c 6f 70  74 5f 6c 61 72 67 65 25  |ndle%,opt_large%|
00001c20  2c 28 6d 61 69 6e 68 61  6e 64 6c 65 25 3d 62 69  |,(mainhandle%=bi|
00001c30  67 68 61 6e 64 6c 65 25  29 29 0d 0b 72 41 f2 73  |ghandle%))..rA.s|
00001c40  65 74 69 63 6f 6e 28 6f  70 74 69 6f 6e 68 61 6e  |eticon(optionhan|
00001c50  64 6c 65 25 2c 6f 70 74  5f 73 6d 61 6c 6c 25 2c  |dle%,opt_small%,|
00001c60  28 6d 61 69 6e 68 61 6e  64 6c 65 25 3d 73 6d 61  |(mainhandle%=sma|
00001c70  6c 6c 68 61 6e 64 6c 65  25 29 29 0d 0b 7c 04 0d  |llhandle%))..|..|
00001c80  0b 86 41 21 70 62 25 3d  6f 70 74 69 6f 6e 68 61  |..A!pb%=optionha|
00001c90  6e 64 6c 65 25 20 3a 20  c8 99 20 22 54 65 6d 70  |ndle% : .. "Temp|
00001ca0  65 73 74 5f 53 68 6f 77  57 69 6e 64 6f 77 22 2c  |est_ShowWindow",|
00001cb0  26 33 33 43 31 31 2c 70  62 25 2c 74 62 25 2c 30  |&33C11,pb%,tb%,0|
00001cc0  0d 0b 90 41 f4 20 73 63  72 65 65 6e 28 77 68 6f  |...A. screen(who|
00001cd0  6c 65 29 28 69 6e 63 20  63 74 72 6c 73 29 2c 20  |le)(inc ctrls), |
00001ce0  63 65 6e 74 72 65 2c 20  63 65 6e 74 72 65 2c 20  |centre, centre, |
00001cf0  66 6f 63 75 73 28 67 65  6e 29 2c 20 66 72 6f 6e  |focus(gen), fron|
00001d00  74 0d 0b 9a 05 e1 0d 0b  a4 05 3a 0d 0b ae 05 3a  |t.........:....:|
00001d10  0d 0b b8 0c dd f2 73 74  61 74 75 73 0d 0b c2 0b  |......status....|
00001d20  ea 20 61 24 2c 62 24 0d  0b cc 32 e7 20 74 6f 5f  |. a$,b$...2. to_|
00001d30  70 6c 61 79 25 3e 30 20  8c 20 61 24 3d 22 54 6f  |play%>0 . a$="To|
00001d40  20 6d 6f 76 65 20 3a 22  20 8b 20 61 24 3d 22 57  | move :" . a$="W|
00001d50  69 6e 6e 65 72 20 3a 20  22 0d 0b d6 32 e7 20 94  |inner : "...2. .|
00001d60  28 74 6f 5f 70 6c 61 79  25 29 3d 31 20 8c 20 62  |(to_play%)=1 . b|
00001d70  24 3d 22 53 77 65 64 65  73 22 20 8b 20 62 24 3d  |$="Swedes" . b$=|
00001d80  22 4d 75 73 6b 6f 76 69  74 73 22 0d 0b e0 3e c8  |"Muskovits"...>.|
00001d90  99 20 22 54 65 6d 70 65  73 74 5f 53 65 74 49 63  |. "Tempest_SetIc|
00001da0  6f 6e 54 65 78 74 22 2c  6d 61 69 6e 68 61 6e 64  |onText",mainhand|
00001db0  6c 65 25 2c 6d 61 69 6e  5f 64 69 73 70 6c 61 79  |le%,main_display|
00001dc0  31 25 2c 74 62 25 2c 61  24 0d 0b ea 3c c8 99 20  |1%,tb%,a$...<.. |
00001dd0  22 54 65 6d 70 65 73 74  5f 53 65 74 49 63 6f 6e  |"Tempest_SetIcon|
00001de0  54 65 78 74 22 2c 6d 61  69 6e 68 61 6e 64 6c 65  |Text",mainhandle|
00001df0  25 2c 6d 61 69 6e 5f 70  6c 61 79 65 72 25 2c 74  |%,main_player%,t|
00001e00  62 25 2c 62 24 0d 0b f4  05 e1 0d 0b fe 05 3a 0d  |b%,b$.........:.|
00001e10  0c 08 0c dd f2 6f 70 74  5f 6f 6b 0d 0c 12 36 21  |.....opt_ok...6!|
00001e20  70 62 25 3d 6d 61 69 6e  68 61 6e 64 6c 65 25 3a  |pb%=mainhandle%:|
00001e30  c8 99 20 22 54 65 6d 70  65 73 74 5f 43 6c 6f 73  |.. "Tempest_Clos|
00001e40  65 57 69 6e 64 6f 77 22  2c 2c 70 62 25 2c 74 62  |eWindow",,pb%,tb|
00001e50  25 0d 0c 1c 2b e7 20 a4  72 65 61 64 69 63 6f 6e  |%...+. .readicon|
00001e60  28 6f 70 74 69 6f 6e 68  61 6e 64 6c 65 25 2c 6f  |(optionhandle%,o|
00001e70  70 74 5f 73 6d 61 6c 6c  25 29 20 8c 0d 0c 26 1e  |pt_small%) ...&.|
00001e80  20 20 6d 61 69 6e 68 61  6e 64 6c 65 25 3d 73 6d  |  mainhandle%=sm|
00001e90  61 6c 6c 68 61 6e 64 6c  65 25 0d 0c 30 05 cc 0d  |allhandle%..0...|
00001ea0  0c 3a 1c 20 20 6d 61 69  6e 68 61 6e 64 6c 65 25  |.:.  mainhandle%|
00001eb0  3d 62 69 67 68 61 6e 64  6c 65 25 0d 0c 44 05 cd  |=bighandle%..D..|
00001ec0  0d 0c 4e 0b f2 73 74 61  74 75 73 0d 0c 58 10 f2  |..N..status..X..|
00001ed0  72 65 64 72 61 77 62 6f  61 72 64 0d 0c 62 36 21  |redrawboard..b6!|
00001ee0  70 62 25 3d 6d 61 69 6e  68 61 6e 64 6c 65 25 3a  |pb%=mainhandle%:|
00001ef0  c8 99 20 22 54 65 6d 70  65 73 74 5f 53 68 6f 77  |.. "Tempest_Show|
00001f00  57 69 6e 64 6f 77 22 2c  31 2c 70 62 25 2c 74 62  |Window",1,pb%,tb|
00001f10  25 0d 0c 6c 38 21 70 62  25 3d 6f 70 74 69 6f 6e  |%..l8!pb%=option|
00001f20  68 61 6e 64 6c 65 25 3a  c8 99 20 22 54 65 6d 70  |handle%:.. "Temp|
00001f30  65 73 74 5f 43 6c 6f 73  65 57 69 6e 64 6f 77 22  |est_CloseWindow"|
00001f40  2c 2c 70 62 25 2c 74 62  25 0d 0c 76 05 e1 0d 0c  |,,pb%,tb%..v....|
00001f50  80 05 3a 0d 0c 8a 05 3a  0d 0c 94 21 dd f2 73 65  |..:....:...!..se|
00001f60  74 69 63 6f 6e 28 70 62  25 21 30 2c 70 62 25 21  |ticon(pb%!0,pb%!|
00001f70  34 2c 73 74 61 74 65 25  29 0d 0c 9e 24 e7 20 73  |4,state%)...$. s|
00001f80  74 61 74 65 25 20 8c 20  70 62 25 21 38 3d 31 3c  |tate% . pb%!8=1<|
00001f90  3c 32 31 20 8b 20 70 62  25 21 38 3d 30 0d 0c a8  |<21 . pb%!8=0...|
00001fa0  10 70 62 25 21 31 32 3d  31 3c 3c 32 31 0d 0c b2  |.pb%!12=1<<21...|
00001fb0  29 c8 99 20 22 54 65 6d  70 65 73 74 5f 45 6e 73  |).. "Tempest_Ens|
00001fc0  75 72 65 49 63 6f 6e 53  74 61 74 65 22 2c 2c 70  |ureIconState",,p|
00001fd0  62 25 2c 74 62 25 0d 0c  bc 05 e1 0d 0c c6 05 3a  |b%,tb%.........:|
00001fe0  0d 0c d0 05 3a 0d 0c da  1b dd a4 72 65 61 64 69  |....:......readi|
00001ff0  63 6f 6e 28 70 62 25 21  30 2c 70 62 25 21 34 29  |con(pb%!0,pb%!4)|
00002000  0d 0c e4 27 c8 99 20 22  54 65 6d 70 65 73 74 5f  |...'.. "Tempest_|
00002010  47 65 74 45 6e 74 69 74  79 49 6e 66 6f 22 2c 2c  |GetEntityInfo",,|
00002020  70 62 25 2c 74 62 25 0d  0c ee 1b 3d 28 28 70 62  |pb%,tb%....=((pb|
00002030  25 21 32 34 20 80 20 28  31 3c 3c 32 31 29 29 3e  |%!24 . (1<<21))>|
00002040  30 29 0d 0c f8 05 3a 0d  0d 02 16 dd a4 67 65 74  |0)....:......get|
00002050  28 70 62 25 21 30 2c 70  62 25 21 34 29 0d 0d 0c  |(pb%!0,pb%!4)...|
00002060  27 c8 99 20 22 54 65 6d  70 65 73 74 5f 47 65 74  |'.. "Tempest_Get|
00002070  45 6e 74 69 74 79 49 6e  66 6f 22 2c 2c 70 62 25  |EntityInfo",,pb%|
00002080  2c 74 62 25 0d 0d 16 38  3d 74 62 25 21 34 34 20  |,tb%...8=tb%!44 |
00002090  3a 20 f4 20 65 78 74 72  61 20 72 65 74 75 72 6e  |: . extra return|
000020a0  20 70 61 72 61 6d 20 2f  20 67 75 61 72 61 6e 74  | param / guarant|
000020b0  65 65 64 20 74 65 78 74  20 70 74 72 0d 0d 20 05  |eed text ptr.. .|
000020c0  3a 0d 0d 2a 04 0d 0d 34  20 f4 20 2a 2a 2a 2a 2a  |:..*...4 . *****|
000020d0  20 73 61 76 69 6e 67 20  70 72 6f 74 6f 63 6f 6c  | saving protocol|
000020e0  73 20 2a 2a 2a 0d 0d 3e  4d f4 20 6d 6f 64 75 6c  |s ***..>M. modul|
000020f0  65 20 70 65 72 66 6f 72  6d 73 20 61 6c 6c 20 6d  |e performs all m|
00002100  65 73 73 61 67 65 73 2c  20 74 68 65 20 61 63 74  |essages, the act|
00002110  75 61 6c 20 73 61 76 65  20 74 6f 20 64 69 73 63  |ual save to disc|
00002120  20 6f 72 20 62 79 20 52  41 4d 74 72 61 6e 73 66  | or by RAMtransf|
00002130  65 72 0d 0d 48 21 f4 20  66 69 6c 65 20 6e 61 6d  |er..H!. file nam|
00002140  65 20 76 61 6c 69 64 61  74 69 6f 6e 20 65 74 63  |e validation etc|
00002150  2e 2e 2e 0d 0d 52 04 0d  0d 5c 0f dd f2 73 61 76  |.....R...\...sav|
00002160  65 63 6c 69 63 6b 0d 0d  66 10 ea 20 77 25 2c 20  |eclick..f.. w%, |
00002170  66 6c 61 67 73 25 0d 0d  70 0e c8 8e 20 62 25 21  |flags%..p... b%!|
00002180  31 36 20 ca 0d 0d 7a 51  20 20 c9 20 73 61 76 65  |16 ...zQ  . save|
00002190  5f 6f 6b 25 20 3a 20 c8  99 20 22 58 54 65 6d 70  |_ok% : .. "XTemp|
000021a0  65 73 74 5f 53 61 76 65  42 75 74 74 6f 6e 22 2c  |est_SaveButton",|
000021b0  73 61 76 65 5f 6e 61 6d  65 70 74 72 25 2c 62 25  |save_nameptr%,b%|
000021c0  2c 74 62 25 2c 2c 26 34  46 20 b8 20 77 25 3b 66  |,tb%,,&4F . w%;f|
000021d0  6c 61 67 73 25 0d 0d 84  2b 20 20 e7 20 28 66 6c  |lags%...+  . (fl|
000021e0  61 67 73 25 20 80 20 31  29 20 8c 20 f2 72 65 70  |ags% . 1) . .rep|
000021f0  6f 72 74 28 a4 7a 65 72  6f 28 77 25 2b 34 29 29  |ort(.zero(w%+4))|
00002200  0d 0d 8e 14 20 20 c9 20  73 61 76 65 5f 69 63 6f  |....  . save_ico|
00002210  6e 25 20 3a 0d 0d 98 1b  20 20 e7 20 28 74 62 25  |n% :....  . (tb%|
00002220  21 30 20 80 20 28 31 36  2b 36 34 29 29 20 8c 0d  |!0 . (16+64)) ..|
00002230  0d a2 2b 20 20 20 20 c8  99 20 22 54 65 6d 70 65  |..+    .. "Tempe|
00002240  73 74 5f 44 72 61 67 41  6e 49 63 6f 6e 22 2c 30  |st_DragAnIcon",0|
00002250  2c 62 25 2b 31 32 2c 74  62 25 0d 0d ac 18 20 20  |,b%+12,tb%....  |
00002260  20 20 64 72 61 67 5f 74  79 70 65 25 3d 5f 53 41  |  drag_type%=_SA|
00002270  56 45 0d 0d b6 07 20 20  cd 0d 0d c0 05 cb 0d 0d  |VE....  ........|
00002280  ca 05 e1 0d 0d d4 05 3a  0d 0d de 15 dd f2 73 61  |.......:......sa|
00002290  76 65 5f 64 72 61 67 72  65 73 75 6c 74 0d 0d e8  |ve_dragresult...|
000022a0  10 ea 20 77 25 2c 20 66  6c 61 67 73 25 0d 0d f2  |.. w%, flags%...|
000022b0  4f c8 99 20 22 58 54 65  6d 70 65 73 74 5f 53 74  |O.. "XTempest_St|
000022c0  61 72 74 53 61 76 65 53  65 71 75 65 6e 63 65 22  |artSaveSequence"|
000022d0  2c 73 61 76 65 5f 6e 61  6d 65 70 74 72 25 2c 62  |,save_nameptr%,b|
000022e0  25 2b 33 32 2c 74 62 25  2c 31 30 30 2c 26 34 46  |%+32,tb%,100,&4F|
000022f0  20 b8 20 77 25 3b 66 6c  61 67 73 25 0d 0d fc 29  | . w%;flags%...)|
00002300  e7 20 28 66 6c 61 67 73  25 20 80 20 31 29 20 8c  |. (flags% . 1) .|
00002310  20 f2 72 65 70 6f 72 74  28 a4 7a 65 72 6f 28 77  | .report(.zero(w|
00002320  25 2b 34 29 29 0d 0e 06  05 e1 0d 0e 10 05 3a 0d  |%+4)).........:.|
00002330  0e 1a 11 dd f2 70 72 65  70 61 72 65 64 61 74 61  |.....preparedata|
00002340  0d 0e 24 16 62 6f 61 72  64 25 21 38 34 3d 74 6f  |..$.board%!84=to|
00002350  5f 70 6c 61 79 25 0d 0e  2e 35 62 6f 61 72 64 25  |_play%...5board%|
00002360  21 38 38 3d 28 6d 61 69  6e 68 61 6e 64 6c 65 25  |!88=(mainhandle%|
00002370  3d 62 69 67 68 61 6e 64  6c 65 25 29 20 3a 20 f4  |=bighandle%) : .|
00002380  20 54 52 55 45 2f 46 41  4c 53 45 0d 0e 38 13 62  | TRUE/FALSE..8.b|
00002390  6f 61 72 64 25 21 39 32  3d 74 75 72 6e 25 0d 0e  |oard%!92=turn%..|
000023a0  42 30 c8 99 20 22 54 65  6d 70 65 73 74 5f 44 61  |B0.. "Tempest_Da|
000023b0  74 61 49 73 52 65 61 64  79 22 2c 30 2c 62 25 2c  |taIsReady",0,b%,|
000023c0  74 62 25 2c 62 6f 61 72  64 25 2c 31 30 30 0d 0e  |tb%,board%,100..|
000023d0  4c 05 e1 0d 0e 56 05 3a  0d 0e 60 11 dd f2 73 61  |L....V.:..`...sa|
000023e0  76 65 5f 72 65 73 75 6c  74 0d 0e 6a 2b e7 20 62  |ve_result..j+. b|
000023f0  25 21 32 30 3d 31 20 8c  20 24 73 61 76 65 5f 6e  |%!20=1 . $save_n|
00002400  61 6d 65 70 74 72 25 3d  a4 7a 65 72 6f 28 62 25  |ameptr%=.zero(b%|
00002410  2b 32 38 29 0d 0e 74 54  3a 20 f4 20 73 61 76 65  |+28)..tT: . save|
00002420  20 73 75 63 63 65 73 73  66 75 6c 20 26 20 73 65  | successful & se|
00002430  63 75 72 65 20 26 20 6e  61 6d 65 20 69 6e 20 62  |cure & name in b|
00002440  25 2b 32 38 20 28 66 6f  72 20 4f 4b 28 3d 33 29  |%+28 (for OK(=3)|
00002450  20 6e 61 6d 65 20 61 6c  72 65 61 64 79 20 69 6e  | name already in|
00002460  20 77 69 6e 64 6f 77 29  0d 0e 7e 05 e1 0d 0e 88  | window)..~.....|
00002470  05 3a 0d 0e 92 15 dd f2  6c 6f 61 64 66 69 6c 65  |.:......loadfile|
00002480  28 6e 61 6d 65 24 29 0d  0e 9c 36 21 70 62 25 3d  |(name$)...6!pb%=|
00002490  6d 61 69 6e 68 61 6e 64  6c 65 25 3a c8 99 20 22  |mainhandle%:.. "|
000024a0  54 65 6d 70 65 73 74 5f  43 6c 6f 73 65 57 69 6e  |Tempest_CloseWin|
000024b0  64 6f 77 22 2c 2c 70 62  25 2c 74 62 25 0d 0e a6  |dow",,pb%,tb%...|
000024c0  21 ff 28 22 4c 6f 61 64  20 22 2b 6e 61 6d 65 24  |!.("Load "+name$|
000024d0  2b 22 20 22 2b c3 7e 62  6f 61 72 64 25 29 0d 0e  |+" "+.~board%)..|
000024e0  b0 16 74 6f 5f 70 6c 61  79 25 3d 62 6f 61 72 64  |..to_play%=board|
000024f0  25 21 38 34 0d 0e ba 43  e7 20 62 6f 61 72 64 25  |%!84...C. board%|
00002500  21 38 38 20 8c 20 6d 61  69 6e 68 61 6e 64 6c 65  |!88 . mainhandle|
00002510  25 3d 62 69 67 68 61 6e  64 6c 65 25 20 8b 20 6d  |%=bighandle% . m|
00002520  61 69 6e 68 61 6e 64 6c  65 25 3d 73 6d 61 6c 6c  |ainhandle%=small|
00002530  68 61 6e 64 6c 65 25 0d  0e c4 13 74 75 72 6e 25  |handle%....turn%|
00002540  3d 62 6f 61 72 64 25 21  39 32 0d 0e ce 04 0d 0e  |=board%!92......|
00002550  d8 34 21 70 62 25 3d 6f  70 74 69 6f 6e 68 61 6e  |.4!pb%=optionhan|
00002560  64 6c 65 25 3a c8 99 20  22 54 65 6d 70 65 73 74  |dle%:.. "Tempest|
00002570  5f 43 6c 6f 73 65 57 69  6e 64 6f 77 22 2c 2c 70  |_CloseWindow",,p|
00002580  62 25 0d 0e e2 36 21 70  62 25 3d 6d 61 69 6e 68  |b%...6!pb%=mainh|
00002590  61 6e 64 6c 65 25 3a c8  99 20 22 54 65 6d 70 65  |andle%:.. "Tempe|
000025a0  73 74 5f 53 68 6f 77 57  69 6e 64 6f 77 22 2c 31  |st_ShowWindow",1|
000025b0  2c 70 62 25 2c 74 62 25  0d 0e ec 10 f2 72 65 64  |,pb%,tb%.....red|
000025c0  72 61 77 62 6f 61 72 64  0d 0e f6 0b f2 73 74 61  |rawboard.....sta|
000025d0  74 75 73 0d 0f 00 05 e1  0d 0f 0a 05 3a 0d 0f 14  |tus.........:...|
000025e0  04 0d 0f 1e 04 0d ff                              |.......|
000025e7