Home » Archimedes archive » Acorn User » AU 1998-05 A.adf » Regulars » StarInfo/Ripley/!MailFormt/!RunImage

StarInfo/Ripley/!MailFormt/!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 1998-05 A.adf » Regulars
Filename: StarInfo/Ripley/!MailFormt/!RunImage
Read OK:
File size: 373E bytes
Load address: 0000
Exec address: 0000
File contents
   10REM >!RunImage file for !MailFormt 1.50 (19-Jan-1998)
   20REM LEN 1997/8 Jon Ripley
   30REM Written for Spook and Andy Nelson! - And me of course!
   40:
   50ONERRORPROCerror(REPORT$+" (internal error) "+STR$(ERL/10),ERR):PROCquit
   60PROCinit("BBS Mail Formatter","!MailFormt",-1,"MailFormt")
   70DIM name$(500,2),bbs$(100,4),bbs_menu% 1876
   80name$()="":bbs$()=""
   90names=FNreadnames
  100numofbbs=FNreadconfig
  110curbbs=0
  120$bbsname=bbs$(curbbs,0)
  130REPEAT
  140SYS "Wimp_Poll",1,block TO r%,block
  150CASE r% OF
  160WHEN 1:SYS "Wimp_GetWindowState",,block:block!28=-1:SYS "Wimp_OpenWindow",,block
  170WHEN 2:SYS"Wimp_OpenWindow",,block
  180WHEN 3:SYS"Wimp_CloseWindow",,block
  190WHEN 6:PROCmouse
  200WHEN 7 : PROCstartsave
  210WHEN 8 : PROCkeypress(block!24,!block)
  220WHEN 9 : PROCmenuselect(block,last_menu%)
  230WHEN 17,18:PROCrecieve
  240ENDCASE
  250UNTILquit%
  260PROCquit
  270END
  280DEFPROCrecieve
  290CASE block!16 OF
  300WHEN 0:quit%=TRUE
  310WHEN 2 : PROCdatasave
  320WHEN 3:PROCdrag:!block=status:SYS "Wimp_GetWindowState",,block:block!28=-1:SYS "Wimp_OpenWindow",,block
  330WHEN &502:PROCsend_help(block)
  340ENDCASE
  350ENDPROC
  360DEFPROCkeypress(key%,window%)
  370CASE window% OF
  380 WHEN save_window% : IF key%=13 VDU7:PROCquicksave
  390OTHERWISE:SYS "Wimp_ProcessKey",key%
  400ENDCASE
  410ENDPROC
  420DEFPROCdrag
  430LOCALf$,dir
  440f$=FNgetname
  450CASE block!40 OF
  460WHEN &FFF:PROCupdate_window
  470OTHERWISE:PROCerror("Text files only please.",255)
  480ENDCASE
  490ENDPROC
  500DEFPROCinit(name$,sprite$,pos,menu$)
  510LOCAL file$,S%,T%,L%,pointer,len
  520quit%=FALSE
  530DIM block 2048,task 4,templates 2100,menu 256,iblock 256
  540$task="TASK"
  550SYS "Wimp_Initialise",200,!task,name$ TO ,id
  560file$="<Obey$Dir>.!Sprites"
  570S%=OPENINfile$:T%=EXT#S%+16:CLOSE#S%
  580DIM sprites T%:!sprites=T%:sprites!8=1
  590SYS "OS_SpriteOp",265,sprites
  600SYS "OS_SpriteOp",266,sprites,file$
  610!block=pos:block!4=0:block!8=0:block!12=63
  620block!16=64:block!20=&2102:L%=LEN(sprite$)+1
  630DIM block!24 L%:$(block!24)=sprite$:block!28=sprites:block!32=L%
  640SYS "Wimp_CreateIcon",,block TO ic
  650pointer=templates
  660SYS "Wimp_OpenTemplate",,"<Obey$Dir>.Templates"
  670SYS "Wimp_LoadTemplate",,block,pointer,templates+2100,-1,"info",0 TO ,,pointer
  680SYS "Wimp_CreateWindow",,block TO infobox
  690SYS "Wimp_LoadTemplate",,block,pointer,templates+2100,-1,"mailfix",0 TO ,,pointer
  700bbsname=FNfindpointer(16)
  710oldfile=FNfindpointer(0)
  720password=FNfindpointer(14)
  730SYS "Wimp_CreateWindow",,block TO status
  740SYS "Wimp_LoadTemplate",,block,pointer,templates+2100,-1,"SaveBox",0 TO ,,pointer
  750savetext%=FNfindpointer(1)
  760SYS "Wimp_CreateWindow",,block TO save_window%
  770SYS "Wimp_CloseTemplate"
  780PROCdocancel
  790$menu=menu$:menu!12=&70207:menu!16=LEN(menu$)*16:menu!20=40:menu!24=0:menu!28=0
  800menu!32=infobox:menu!36=&7000019:$(menu+40)="Info":menu!52=128:menu!56=-1
  810menu!60=&7000019:$(menu+64)="Quit"
  820SYS "OS_ReadVarVal","Obey$Dir",block,256 TO ,,len
  830block?len=13:appdir$=$block
  840ENDPROC
  850DEFPROCquit
  860SYS "Wimp_CloseDown",id
  870END
  880DEFPROCerror(err$,err)
  890SYS "Wimp_DragBox",,-1
  900!block=err:$(block+4)=err$+CHR$0
  910SYS "Wimp_ReportError",block,1,"BBS Mail Formatter"
  920ENDPROC
  930DEFPROCmouse
  940LOCAL window,icon,button
  950window=block!12
  960icon=block!16
  970button=block!8
  980mouse_x%=!block
  990mouse_y%=block!4
 1000CASE window OF
 1010WHEN -2:CASE button OF
 1020WHEN 2:PROCopen_menu(menu,!block-64,156)
 1030WHEN 4:!block=status:SYS "Wimp_GetWindowState",,block:block!28=-1:SYS "Wimp_OpenWindow",,block
 1040ENDCASE
 1050 WHEN save_window% : CASE icon OF
 1060  WHEN 0 : IF button=(4<<4) OR button=(1<<4) THEN PROCdragbox
 1070  WHEN 2 : IF button=4 OR button=1 THEN VDU7:PROCquicksave
 1080 ENDCASE
 1090WHEN status:CASE button OF
 1100WHEN 2:SYS "Wimp_CreateMenu",0,menu,!block-64,block!4
 1110WHEN 1,4:CASE icon OF
 1120WHEN 2:!block=save_window%:SYS "Wimp_GetWindowState",,block:block!28=-1:SYS "Wimp_OpenWindow",,block
 1130WHEN 3:PROCdocancel
 1140WHEN 4:PROCedit(appdir$+".EMailBook")
 1150WHEN 5:name$()="":names=FNreadnames
 1160WHEN 7:PROCedit($oldfile)
 1170WHEN 17:PROCedit(appdir$+".Choices")
 1180WHEN 18:PROCopen_bbs_menu
 1190WHEN 19:bbs$()="":numofbbs=FNreadconfig
 1200ENDCASE
 1210ENDCASE
 1220ENDCASE
 1230ENDPROC
 1240DEF PROCdragbox
 1250!block=save_window%
 1260SYS "Wimp_GetWindowState",,block
 1270ox%=block!4-block!20
 1280oy%=block!16-block!24
 1290block!4=0
 1300SYS "Wimp_GetIconState",,block
 1310block!4=5
 1320block!08=ox%+block!08
 1330block!12=oy%+block!12
 1340block!16=ox%+block!16
 1350block!20=oy%+block!20
 1360block!24=0:block!28=0
 1370block!32=&7FFFFFFF
 1380block!36=&7FFFFFFF
 1390SYS "Wimp_DragBox",,block
 1400ENDPROC
 1410DEF PROCstartsave
 1420SYS "Wimp_GetPointerInfo",,block
 1430block!20=block!12
 1440block!24=block!16
 1450block!28=!block
 1460block!32=block!4
 1470block!36=4096
 1480!block=64
 1490block!12=0
 1500block!16=1
 1510block!40=&FF8
 1520$(block+44)=FNgetfilename($savetext%)
 1530SYS "Wimp_SendMessage",18,block,block!20,block!24
 1540ENDPROC
 1550DEF FNgetfilename(path$)
 1560WHILE INSTR(path$,".")
 1570 path$=MID$(path$,INSTR(path$,".")+1)
 1580ENDWHILE
 1590=path$+CHR$0
 1600DEF PROCdatasave
 1610$savetext%=FNgetname
 1620PROCupdate_icon(save_window%,1)
 1630IF NOT FNfix_ok ENDPROC
 1640PROCdothesave
 1650block!12=block!8
 1660block!16=3:!block=256
 1670SYS "Wimp_SendMessage",18,block,block!20,block!24
 1680IF button=(1<<4) SYS "Wimp_ForceRedraw",save_window%,10,-156,184,-120
 1690ENDPROC
 1700DEF PROCquicksave
 1710IF INSTR($savetext%,".") THEN
 1720 IF NOT FNfix_ok ENDPROC
 1730 PROCdothesave
 1740ELSE
 1750 PROCerror("To save, drag the file icon to a directory display.",123)
 1760ENDIF
 1770ENDPROC
 1780DEF PROCdothesave
 1790PROCfix_mail
 1800!iblock=save_window%
 1810SYS "Wimp_CloseWindow",,iblock
 1820ENDPROC
 1830DEF FNfindpointer(icon%)
 1840=block!(88+32*icon%+20)
 1850DEFPROCupdate_icon(window%,icon%)
 1860!iblock=window%
 1870iblock!4=icon%
 1880iblock!8=0
 1890iblock!12=0
 1900SYS"Wimp_SetIconState",,iblock
 1910ENDPROC
 1920DEFPROCupdate
 1930PROCupdate_icon(status,0)
 1940PROCupdate_icon(status,1)
 1950PROCupdate_icon(status,14)
 1960PROCupdate_icon(status,16)
 1970PROCupdate_icon(save_window%,1)
 1980ENDPROC
 1990DEFFNgetname
 2000LOCALT%,f$:f$=STRING$(250," "):f$="":T%=block+44
 2010WHILE?T%<>0:f$+=CHR$?T%:T%+=1:ENDWHILE
 2020SYS"OS_File",5,f$ TO dir
 2030=f$
 2040DEFPROCsend_help(help%)
 2050 LOCAL a$,window%,icon%
 2060 a$=""
 2070 window%=help%!32
 2080 icon%=help%!36
 2090 CASE window% OF
 2100  WHEN -2:IF icon%=ic a$="This is the BBS Mail Formatter application.|MDrag a text file containing your BBS messages to upload."
 2110  WHEN infobox:a$="This window displays information about the BBS Mail Formatter.|MStay Cool! - Live in a fridge!"
 2120  WHEN save_window%
 2130   a$="This window allows you to save your reformatted mail as a file or into another application.|M"
 2140   CASE icon% OF
 2150    WHEN 0:a$+="Drag this icon to the directory in which you want to save the file. Or, drag it to the program into which you want to transfer the data."
 2160    WHEN 1:a$+="This shows the filename for your reformatted mail. If it is not a full pathname, drag the icon into a directory display."
 2170    WHEN 2:a$+="Click SELECT here to save the data with the current filename. If it is not a full pathname, you must drag the icon to a directory first."
 2180   ENDCASE
 2190  WHEN status
 2200   a$="This window displays the current status of the BBS Mail Formatter program.|M"
 2210   CASE icon% OF
 2220    WHEN 0,6:a$+="This is the filename of the mail to be formatted."
 2230    WHEN 2:a$+="Click SELECT to reformat your mail file.|MA 'save box' will open up and you can save the mail wherever you like!"
 2240    WHEN 3:a$+="Click SELECT to clear the filenames and password."
 2250    WHEN 4:a$+="Click SELECT to edit your address book."
 2260    WHEN 5:a$+="Click SELECT to use a new/edited address book."
 2270    WHEN 7:a$+="Click SELECT to edit your mail file."
 2280    WHEN 13,14:a$+="You should type your Arcade BBS e-mail password here."
 2290    WHEN 15,16:a$+="This is the currently selected BBS, to choose a BBS just click SELECT over the menu icon."
 2300    WHEN 18:a$+="Click SELECT to open up a menu containing the currently know BBSs.|MClick SELECT (on a menu item) to choose that BBS."
 2310    WHEN 17:a$+="Click SELECT to edit your 'Choices' file.|MThis contains the information about the known BBSs."
 2320    WHEN 19:a$+="Click SELECT to use a new/edited 'Choices' file."
 2330   ENDCASE
 2340 ENDCASE
 2350 !help%=256
 2360 help%!12=help%!8
 2370 help%!16=&503
 2380 $(help%+20)=a$+CHR$0
 2390 SYS "Wimp_SendMessage",17,help%,help%!4
 2400ENDPROC
 2410DEFPROCupdate_window
 2420$oldfile=f$
 2430$savetext%=f$
 2440PROCupdate
 2450ENDPROC
 2460DEFPROCdocancel
 2470$oldfile=""
 2480$password=""
 2490$savetext%="Formatted"
 2500PROCupdate
 2510ENDPROC
 2520DEFFNfix_ok
 2530IF $oldfile="" OR $savetext%="" PROCerror("More information required...",123):=FALSE
 2540IF $savetext%=$oldfile PROCerror("Filenames must be different.",123):=FALSE
 2550IF NOT FNexist($oldfile) PROCerror("File '"+$oldfile+"' does not exist.",123):=FALSE
 2560needpass=FALSE
 2570header$=bbs$(curbbs,2):IF bbs$(curbbs,0)="Arcade BBS" needpass=TRUE
 2580IF header$="" PROCerror("Please choose a BBS.",123):=FALSE
 2590IF needpass AND $password="" PROCerror("Please enter your Arcade Password.",123):=FALSE
 2600=TRUE
 2610DEFPROCfix_mail
 2620LOCAL len,A%,B%,ok,P%,L%,C%,needpass,header$
 2630IF NOT FNfix_ok ENDPROC
 2640A%=OPENIN$oldfile
 2650len=EXT#A%
 2660B%=OPENOUT$savetext%
 2670P%=10
 2680L%=0
 2690SYS "Hourglass_On"
 2700REPEAT
 2710ok=TRUE
 2720C%=BGET#A%
 2730IF C%=13 C%=10
 2740IF C%=10 L%=L%+1 ELSE L%=0
 2750IF L%=2 PTR#B%=PTR#B%-1:BPUT#B%,10:BPUT#B%,32:BPUT#B%,32:BPUT#B%,10:ok=FALSE
 2760IF P%=10 AND C%=ASC">" PROCdo_header:ok=FALSE
 2770IF ok BPUT#B%,C%
 2780IF (PTR#A% AND &FF)=0 SYS "Hourglass_Percentage",(100/len)*PTR#A%
 2790P%=C%
 2800UNTILEOF#A%
 2810CLOSE#A%
 2820CLOSE#B%
 2830OSCLI"Settype "+$savetext%+" FFF"
 2840SYS "Hourglass_Off"
 2850ENDPROC
 2860DEFPROCdo_header
 2870LOCAL C$,C%,pass$
 2880C$=GET$#A%
 2890pass$=STRING$(-needpass,"Password: "+$password+CHR$10)
 2900IF LEFT$(C$,1)=">" C$=FNchangename(MID$(C$,2))
 2910IF LEFT$(C$,1)="@" BPUT#B%,bbs$(curbbs,4)+C$:L%=1:ENDPROC
 2920IF INSTR(C$,"@")  BPUT#B%,header$:BPUT#B%,C$:C$=GET$#A%:BPUT#B%,pass$+"Subject: "+C$:L%=1:ENDPROC
 2930IF INSTR(C$,"#")<>0 AND INSTR(C$," at ")<>0 PROCdonetmailheader:ENDPROC
 2940BPUT#B%,bbs$(curbbs,1)+C$:L%=1
 2950ENDPROC
 2960DEFPROCdonetmailheader
 2970LOCAL email
 2980email=FALSE
 2990BPUT#B%,bbs$(curbbs,3)+C$
 3000C$=GET$#A%
 3010IF INSTR(C$,"@") BPUT#B%,C$:C$=GET$#A%:BPUT#B%,pass$+"Subject: "+C$:L%=1:ENDPROC
 3020BPUT#B%,"Subject: "+C$
 3030ENDPROC
 3040DEFFNchangename(name$)
 3050LOCAL X%,temp$,changed
 3060temp$=FNupper(name$):changed=FALSE
 3070FOR X%=0 TO names-1
 3080IF name$(X%,0)=temp$ OR name$(X%,1)=temp$ temp$=name$(X%,2):changed=TRUE
 3090NEXT
 3100IF NOT changed PROCerror("Name '"+name$+"' not found in the address book.",123)
 3110=temp$
 3120DEFPROCcreatenamefile
 3130LOCAL A%
 3140A%=OPENOUT(appdir$+".EMailBook")
 3150BPUT#A%,"# Address book for !MailFormt Version 1.50"
 3160BPUT#A%,"# (C) Jon Ripley 1997/8"
 3170BPUT#A%,""
 3180BPUT#A%,"# Blank lines and lines starting with '#'s"
 3190BPUT#A%,"# are ignored..."
 3200BPUT#A%,""
 3210BPUT#A%,"# Format is ... (without the '#')"
 3220BPUT#A%,"# Name,alternative name,E-mail address/User"
 3230BPUT#A%,"# name/NetMail Address/etc"
 3240BPUT#A%,""
 3250BPUT#A%,"# The author..."
 3260BPUT#A%,""
 3270BPUT#A%,"Jon Ripley,,jonripley@arcade.demon.co.uk"
 3280CLOSE#A%
 3290OSCLI"Settype <Obey$Dir>.EMailBook FFF"
 3300ENDPROC
 3310DEFFNreadnames
 3320LOCAL A%,rem,pos,A$
 3330A%=OPENIN(appdir$+".EMailBook")
 3340IF A%=0 PROCcreatenamefile:=FNreadnames
 3350pos=0
 3360REPEAT
 3370rem=FALSE
 3380A$=GET$#A%
 3390IF LEFT$(A$,1)="#" OR A$="" rem=TRUE
 3400IF NOT rem PROCname(A$,pos):pos+=1
 3410UNTILEOF#A%
 3420CLOSE#A%
 3430=pos
 3440DEFPROCname(A$,pos)
 3450LOCAL temp,temp2
 3460temp=INSTR(A$,",")
 3470temp2=INSTR(A$,",",temp+1)
 3480name$(pos,0)=FNupper(LEFT$(A$,temp-1))
 3490name$(pos,1)=FNupper(MID$(A$,temp+1,temp2-temp-1))
 3500name$(pos,2)=MID$(A$,temp2+1)
 3510ENDPROC
 3520DEFPROCedit(file$)
 3530!block=256
 3540block!4=0:block!8=0
 3550block!12=0
 3560block!16=5
 3570block!20=0
 3580block!24=0:block!28=0:block!32=0:block!36=0
 3590block!40=&fff
 3600$(block+44)=file$+CHR$(0)
 3610IF FNexist(file$) THEN
 3620 SYS"Wimp_SendMessage",18,block,0
 3630ELSE
 3640 PROCerror("File '"+file$+"' does not exist.",123)
 3650ENDIF
 3660ENDPROC
 3670DEFFNexist(n$)
 3680LOCAL ok%,type%
 3690ok%=TRUE
 3700LOCAL ERROR
 3710ONERRORLOCAL ok%=FALSE
 3720IF ok% THEN
 3730SYS"OS_File",17,n$ TO type%
 3740IF type%<>1 ok%=FALSE
 3750ENDIF
 3760RESTORE ERROR
 3770=ok%
 3780DEFFNupper(A$)
 3790LOCAL B$,X%,C$
 3800B$=""
 3810FOR X%=1 TO LENA$
 3820C$=MID$(A$,X%,1)
 3830IF C$>="a" AND C$<="z" C$=CHR$(ASCC$-32)
 3840B$=B$+C$
 3850NEXT
 3860=B$
 3870DEFPROCcreateconfigfile
 3880LOCAL A%
 3890A%=OPENOUT(appdir$+".Choices")
 3900BPUT#A%,"# Config and BBS data for !MailFormt"
 3910BPUT#A%,"# Version 1.50 (C) Jon Ripley 1997/8"
 3920BPUT#A%,""
 3930BPUT#A%,"# Default BBS: Arcade BBS"
 3940BPUT#A%,""
 3950BPUT#A%,"# Format is ... (without the '#')"
 3960BPUT#A%,"# BBS Name,internal mail,e-mail,netmail,@area"
 3970BPUT#A%,""
 3980BPUT#A%,"Arcade BBS,<mail> ->,<msg> @196 ->Email,<netmail> ->,<msg> "
 3990BPUT#A%,"ArcTic BBS,<mail> ->,<msg> @150 ->Email,<netmail> ->,<msg> "
 4000BPUT#A%,"Digital Databank BBS,<mail> ->,<msg> @254 ->DigiLink Email,<netmail> ->,<msg> "
 4010CLOSE#A%
 4020OSCLI"Settype <Obey$Dir>.Choices FFF"
 4030ENDPROC
 4040DEFFNreadconfig
 4050LOCAL A%,rem,pos,A$
 4060bbs$(0,0)="No BBS Selected."
 4070curbbs=0
 4080A%=OPENIN(appdir$+".Choices")
 4090IF A%=0 PROCcreateconfigfile:=FNreadconfig
 4100pos=1
 4110REPEAT
 4120rem=FALSE
 4130A$=GET$#A%
 4140IF LEFT$(A$,1)="#" OR A$="" rem=TRUE
 4150IF NOT rem PROCreadbbs(A$,pos):pos+=1
 4160UNTILEOF#A%
 4170CLOSE#A%
 4180=pos
 4190DEFPROCreadbbs(A$,pos)
 4200LOCAL temp,temp2,temp3,temp4
 4210temp=INSTR(A$,",")
 4220temp2=INSTR(A$,",",temp+1)
 4230temp3=INSTR(A$,",",temp2+1)
 4240temp4=INSTR(A$,",",temp3+1)
 4250bbs$(pos,0)=LEFT$(A$,temp-1)
 4260bbs$(pos,1)=MID$(A$,temp+1,temp2-temp-1)
 4270bbs$(pos,2)=MID$(A$,temp2+1,temp3-temp2-1)
 4280bbs$(pos,3)=MID$(A$,temp3+1,temp4-temp3-1)
 4290bbs$(pos,4)=MID$(A$,temp4+1)
 4300ENDPROC
 4310DEF PROCopen_bbs_menu
 4320LOCAL ptr%,menu$,type%,name$,smenu%,f$
 4330smenu%=bbs_menu%
 4340$smenu%="BBSs"
 4350smenu%!12=&70207
 4360smenu%!16=208
 4370smenu%!20=40
 4380smenu%!24=0
 4390smenu%+=28
 4400IF numofbbs<>1 THEN
 4410 FOR ptr% = 1 TO numofbbs-1
 4420   PROCadd_source_item(LEFT$(bbs$(ptr%,0),12),0)
 4430 NEXT
 4440ENDIF
 4450IF smenu%=bbs_menu%+28 THEN PROCadd_source_item("No BBSs",0)
 4460smenu%!-24=smenu%!-24 OR &80
 4470PROCtick(smenu%,curbbs,1)
 4480PROCopen_menu(bbs_menu%,mouse_x%,mouse_y%)
 4490ENDPROC
 4500DEF PROCadd_source_item(name$,walk%)
 4510$(smenu%+12)=name$
 4520!smenu%=walk%
 4530smenu%!4=-1
 4540smenu%!8=&7000021
 4550smenu%+=24
 4560ENDPROC
 4570DEF PROCopen_menu(menu_handle%,xpos%,ypos%)
 4580LOCAL items%,dotted%
 4590items%=0
 4600dotted%=0
 4610WHILE ((menu_handle%!(28+items%*24))AND128)=0
 4620 items%+=1
 4630 IF menu_handle%!(28+items%*24)=2  dotted%+=1
 4640ENDWHILE
 4650menu_x%=xpos%
 4660menu_y%=ypos%
 4670IF ypos%=0 THEN
 4680 ypos%=144+(items%*44)+(dotted%*22)
 4690ELSE
 4700 ypos%+=20
 4710ENDIF
 4720SYS"Wimp_CreateMenu",,menu_handle%,xpos%-64,ypos%
 4730last_menu%=menu_handle%
 4740ENDPROC
 4750DEF PROCmenuselect(base%,handle%)
 4760LOCAL items%,item
 4770item=!block
 4780SYS "Wimp_GetPointerInfo",,base%
 4790adj%=(block!8 AND 1)
 4800CASE handle% OF
 4810  WHEN menu : IF item=1 quit%=TRUE
 4820  WHEN bbs_menu%
 4830    IF $(bbs_menu%+12)="No BBSs" THEN
 4840      $bbsname=bbs$(0,0)
 4850      curbbs=0
 4860    ELSE
 4870      curbbs=item+1
 4880      $bbsname=bbs$(curbbs,0)
 4890  REM IF adj% THEN PROCopen_bbs_menu
 4900      items%=-1
 4910      WHILE ((bbs_menu%!(28+items%*24))AND128)=0
 4920        items%+=1
 4930        IF FNticked(bbs_menu%,items%) THEN PROCtoggle(bbs_menu%,items%)
 4940      ENDWHILE
 4950      PROCtoggle(bbs_menu%,item)
 4960      PROCupdate
 4970    ENDIF
 4980ENDCASE
 4990IF adj% THEN PROCopen_menu(last_menu%,menu_x%,menu_y%)
 5000ENDPROC
 5010DEF PROCtoggle(menu_handle%,item%)
 5020menu_handle%!(28+24*item%)=menu_handle%!(28+24*item%)EOR1
 5030ENDPROC
 5040DEF PROCtick(menu_handle%,item%,state%)
 5050menu_handle%!(28+24*item%)=(menu_handle%!(28+24*item%)AND254)-state%
 5060ENDPROC
 5070DEF FNticked(menu_handle%,item%)
 5080=(menu_handle%!(28+24*item%)AND1)=1

7� >!RunImage file for !MailFormt 1.50 (19-Jan-1998)
� � 1997/8 Jon Ripley
<� Written for Spook and Andy Nelson! - And me of course!
(:
25��error(�$+" (internal error) "+�(�/10),�):�quit
<;�init("BBS Mail Formatter","!MailFormt",-1,"MailFormt")
F-� name$(500,2),bbs$(100,4),bbs_menu% 1876
Pname$()="":bbs$()=""
Znames=�readnames
dnumofbbs=�readconfig
ncurbbs=0
x$bbsname=bbs$(curbbs,0)
��
�%ș "Wimp_Poll",1,block � r%,block
�Ȏ r% �
�O� 1:ș "Wimp_GetWindowState",,block:block!28=-1:ș "Wimp_OpenWindow",,block
�"� 2:ș"Wimp_OpenWindow",,block
�#� 3:ș"Wimp_CloseWindow",,block
�� 6:�mouse
�� 7 : �startsave
�$� 8 : �keypress(block!24,!block)
�'� 9 : �menuselect(block,last_menu%)
�� 17,18:�recieve
��
�
�quit%
	�quit
�

��recieve
"Ȏ block!16 �
,� 0:quit%=�
6� 2 : �datasave
@c� 3:�drag:!block=status:ș "Wimp_GetWindowState",,block:block!28=-1:ș "Wimp_OpenWindow",,block
J� &502:�send_help(block)
T�
^�
h��keypress(key%,window%)
rȎ window% �
|- � save_window% : � key%=13 �7:�quicksave
�:ș "Wimp_ProcessKey",key%
��
��
�
��drag
��f$,dir
�f$=�getname
�Ȏ block!40 �
�� &FFF:�update_window
�+:�error("Text files only please.",255)
��
��
�#��init(name$,sprite$,pos,menu$)
� � file$,S%,T%,L%,pointer,len
quit%=�
:� block 2048,task 4,templates 2100,menu 256,iblock 256
$task="TASK"
&.ș "Wimp_Initialise",200,!task,name$ � ,id
0file$="<Obey$Dir>.!Sprites"
:S%=�file$:T%=�#S%+16:�#S%
D(� sprites T%:!sprites=T%:sprites!8=1
N ș "OS_SpriteOp",265,sprites
X&ș "OS_SpriteOp",266,sprites,file$
b.!block=pos:block!4=0:block!8=0:block!12=63
l.block!16=64:block!20=&2102:L%=�(sprite$)+1
vB� block!24 L%:$(block!24)=sprite$:block!28=sprites:block!32=L%
�$ș "Wimp_CreateIcon",,block � ic
�pointer=templates
�2ș "Wimp_OpenTemplate",,"<Obey$Dir>.Templates"
�Pș "Wimp_LoadTemplate",,block,pointer,templates+2100,-1,"info",0 � ,,pointer
�+ș "Wimp_CreateWindow",,block � infobox
�Sș "Wimp_LoadTemplate",,block,pointer,templates+2100,-1,"mailfix",0 � ,,pointer
�bbsname=�findpointer(16)
�oldfile=�findpointer(0)
�password=�findpointer(14)
�*ș "Wimp_CreateWindow",,block � status
�Sș "Wimp_LoadTemplate",,block,pointer,templates+2100,-1,"SaveBox",0 � ,,pointer
�savetext%=�findpointer(1)
�0ș "Wimp_CreateWindow",,block � save_window%
ș "Wimp_CloseTemplate"

�docancel
Q$menu=menu$:menu!12=&70207:menu!16=�(menu$)*16:menu!20=40:menu!24=0:menu!28=0
 Mmenu!32=infobox:menu!36=&7000019:$(menu+40)="Info":menu!52=128:menu!56=-1
*&menu!60=&7000019:$(menu+64)="Quit"
43ș "OS_ReadVarVal","Obey$Dir",block,256 � ,,len
>block?len=13:appdir$=$block
H�
R
��quit
\ș "Wimp_CloseDown",id
f�
p��error(err$,err)
zș "Wimp_DragBox",,-1
�!!block=err:$(block+4)=err$+�0
�6ș "Wimp_ReportError",block,1,"BBS Mail Formatter"
��
���mouse
�� window,icon,button
�window=block!12
�icon=block!16
�button=block!8
�mouse_x%=!block
�mouse_y%=block!4
�Ȏ window �
�� -2:Ȏ button �
�&� 2:�open_menu(menu,!block-64,156)
]� 4:!block=status:ș "Wimp_GetWindowState",,block:block!28=-1:ș "Wimp_OpenWindow",,block
�
 � save_window% : Ȏ icon �
$6  � 0 : � button=(4<<4) � button=(1<<4) � �dragbox
.1  � 2 : � button=4 � button=1 � �7:�quicksave
8 �
B� status:Ȏ button �
L5� 2:ș "Wimp_CreateMenu",0,menu,!block-64,block!4
V� 1,4:Ȏ icon �
`c� 2:!block=save_window%:ș "Wimp_GetWindowState",,block:block!28=-1:ș "Wimp_OpenWindow",,block
j� 3:�docancel
t#� 4:�edit(appdir$+".EMailBook")
~#� 5:name$()="":names=�readnames
�� 7:�edit($oldfile)
�"� 17:�edit(appdir$+".Choices")
�� 18:�open_bbs_menu
�'� 19:bbs$()="":numofbbs=�readconfig
��
��
��
��
�� �dragbox
�!block=save_window%
�#ș "Wimp_GetWindowState",,block
�ox%=block!4-block!20
oy%=block!16-block!24


block!4=0
!ș "Wimp_GetIconState",,block

block!4=5
(block!08=ox%+block!08
2block!12=oy%+block!12
<block!16=ox%+block!16
Fblock!20=oy%+block!20
Pblock!24=0:block!28=0
Zblock!32=&7FFFFFFF
dblock!36=&7FFFFFFF
nș "Wimp_DragBox",,block
x�
�� �startsave
�#ș "Wimp_GetPointerInfo",,block
�block!20=block!12
�block!24=block!16
�block!28=!block
�block!32=block!4
�block!36=4096
�
!block=64
�block!12=0
�block!16=1
�block!40=&FF8
�($(block+44)=�getfilename($savetext%)
�4ș "Wimp_SendMessage",18,block,block!20,block!24
�
� �getfilename(path$)
ȕ �path$,".")
"  path$=�path$,�path$,".")+1)
,�
6
=path$+�0
@� �datasave
J$savetext%=�getname
T �update_icon(save_window%,1)
^� � �fix_ok �
h�dothesave
rblock!12=block!8
|block!16=3:!block=256
�4ș "Wimp_SendMessage",18,block,block!20,block!24
�G� button=(1<<4) ș "Wimp_ForceRedraw",save_window%,10,-156,184,-120
��
�� �quicksave
�� �$savetext%,".") �
� � � �fix_ok �
� �dothesave
��
�F �error("To save, drag the file icon to a directory display.",123)
��
��
�� �dothesave
�
�fix_mail
!iblock=save_window%
!ș "Wimp_CloseWindow",,iblock
�
&� �findpointer(icon%)
0=block!(88+32*icon%+20)
: ��update_icon(window%,icon%)
D!iblock=window%
Niblock!4=icon%
Xiblock!8=0
biblock!12=0
l!ș"Wimp_SetIconState",,iblock
v�
���update
��update_icon(status,0)
��update_icon(status,1)
��update_icon(status,14)
��update_icon(status,16)
� �update_icon(save_window%,1)
��
�
ݤgetname
�)�T%,f$:f$=�250," "):f$="":T%=block+44
�ȕ?T%<>0:f$+=�?T%:T%+=1:�
�ș"OS_File",5,f$ � dir
�=f$
���send_help(help%)
 � a$,window%,icon%

 a$=""
 window%=help%!32
  icon%=help%!36
* Ȏ window% �
4�  � -2:� icon%=ic a$="This is the BBS Mail Formatter application.|MDrag a text file containing your BBS messages to upload."
>s  � infobox:a$="This window displays information about the BBS Mail Formatter.|MStay Cool! - Live in a fridge!"
H  � save_window%
Ri   a$="This window allows you to save your reformatted mail as a file or into another application.|M"
\   Ȏ icon% �
f�    � 0:a$+="Drag this icon to the directory in which you want to save the file. Or, drag it to the program into which you want to transfer the data."
p�    � 1:a$+="This shows the filename for your reformatted mail. If it is not a full pathname, drag the icon into a directory display."
z�    � 2:a$+="Click SELECT here to save the data with the current filename. If it is not a full pathname, you must drag the icon to a directory first."
�   �
�  � status
�X   a$="This window displays the current status of the BBS Mail Formatter program.|M"
�   Ȏ icon% �
�E    � 0,6:a$+="This is the filename of the mail to be formatted."
��    � 2:a$+="Click SELECT to reformat your mail file.|MA 'save box' will open up and you can save the mail wherever you like!"
�C    � 3:a$+="Click SELECT to clear the filenames and password."
�9    � 4:a$+="Click SELECT to edit your address book."
�@    � 5:a$+="Click SELECT to use a new/edited address book."
�6    � 7:a$+="Click SELECT to edit your mail file."
�K    � 13,14:a$+="You should type your Arcade BBS e-mail password here."
�o    � 15,16:a$+="This is the currently selected BBS, to choose a BBS just click SELECT over the menu icon."
��    � 18:a$+="Click SELECT to open up a menu containing the currently know BBSs.|MClick SELECT (on a menu item) to choose that BBS."
	q    � 17:a$+="Click SELECT to edit your 'Choices' file.|MThis contains the information about the known BBSs."
	C    � 19:a$+="Click SELECT to use a new/edited 'Choices' file."
	   �
	$ �
	. !help%=256
	8 help%!12=help%!8
	B help%!16=&503
	L $(help%+20)=a$+�0
	V+ ș "Wimp_SendMessage",17,help%,help%!4
	`�
	j��update_window
	t$oldfile=f$
	~$savetext%=f$
	��update
	��
	���docancel
	�$oldfile=""
	�$password=""
	�$savetext%="Formatted"
	��update
	��
	�ݤfix_ok
	�O� $oldfile="" � $savetext%="" �error("More information required...",123):=�
	�G� $savetext%=$oldfile �error("Filenames must be different.",123):=�
	�M� � �exist($oldfile) �error("File '"+$oldfile+"' does not exist.",123):=�
needpass=�

Cheader$=bbs$(curbbs,2):� bbs$(curbbs,0)="Arcade BBS" needpass=�
6� header$="" �error("Please choose a BBS.",123):=�
Q� needpass � $password="" �error("Please enter your Arcade Password.",123):=�
(=�
2��fix_mail
<,� len,A%,B%,ok,P%,L%,C%,needpass,header$
F� � �fix_ok �
PA%=�$oldfile
Zlen=�#A%
dB%=�$savetext%
n	P%=10
xL%=0
�ș "Hourglass_On"
��
�ok=�
�C%=�#A%
�� C%=13 C%=10
�� C%=10 L%=L%+1 � L%=0
�;� L%=2 �#B%=�#B%-1:�#B%,10:�#B%,32:�#B%,32:�#B%,10:ok=�
�%� P%=10 � C%=�">" �do_header:ok=�
�� ok �#B%,C%
�=� (�#A% � &FF)=0 ș "Hourglass_Percentage",(100/len)*�#A%
�	P%=C%
�	��#A%
��#A%
�#B%
!�"Settype "+$savetext%+" FFF"
ș "Hourglass_Off"
"�
,��do_header
6� C$,C%,pass$
@C$=�#A%
J0pass$=�-needpass,"Password: "+$password+�10)
T'� �C$,1)=">" C$=�changename(�C$,2))
^.� �C$,1)="@" �#B%,bbs$(curbbs,4)+C$:L%=1:�
hM� �C$,"@")  �#B%,header$:�#B%,C$:C$=�#A%:�#B%,pass$+"Subject: "+C$:L%=1:�
r5� �C$,"#")<>0 � �C$," at ")<>0 �donetmailheader:�
|�#B%,bbs$(curbbs,1)+C$:L%=1
��
���donetmailheader
�� email
�email=�
��#B%,bbs$(curbbs,3)+C$
�C$=�#A%
�?� �C$,"@") �#B%,C$:C$=�#A%:�#B%,pass$+"Subject: "+C$:L%=1:�
��#B%,"Subject: "+C$
��
�ݤchangename(name$)
�� X%,temp$,changed
�!temp$=�upper(name$):changed=�
�� X%=0 � names-1
G� name$(X%,0)=temp$ � name$(X%,1)=temp$ temp$=name$(X%,2):changed=�
�
M� � changed �error("Name '"+name$+"' not found in the address book.",123)
&
=temp$
0��createnamefile
:� A%
DA%=�(appdir$+".EMailBook")
N5�#A%,"# Address book for !MailFormt Version 1.50"
X"�#A%,"# (C) Jon Ripley 1997/8"
b�#A%,""
l5�#A%,"# Blank lines and lines starting with '#'s"
v�#A%,"# are ignored..."
��#A%,""
�,�#A%,"# Format is ... (without the '#')"
�6�#A%,"# Name,alternative name,E-mail address/User"
�%�#A%,"# name/NetMail Address/etc"
��#A%,""
��#A%,"# The author..."
��#A%,""
�3�#A%,"Jon Ripley,,jonripley@arcade.demon.co.uk"
��#A%
�'�"Settype <Obey$Dir>.EMailBook FFF"
��
�ݤreadnames
�� A%,rem,pos,A$

A%=�(appdir$+".EMailBook")

&� A%=0 �createnamefile:=�readnames

	pos=0

 �

*	rem=�

4A$=�#A%

>� �A$,1)="#" � A$="" rem=�

H � � rem �name(A$,pos):pos+=1

R	��#A%

\�#A%

f=pos

p��name(A$,pos)

z� temp,temp2

�temp=�A$,",")

�temp2=�A$,",",temp+1)

�$name$(pos,0)=�upper(�A$,temp-1))

�1name$(pos,1)=�upper(�A$,temp+1,temp2-temp-1))

�name$(pos,2)=�A$,temp2+1)

��

���edit(file$)

�!block=256

�block!4=0:block!8=0

�block!12=0

�block!16=5

�block!20=0

�/block!24=0:block!28=0:block!32=0:block!36=0
block!40=&fff
$(block+44)=file$+�(0)
� �exist(file$) �
$$ ș"Wimp_SendMessage",18,block,0
.�
83 �error("File '"+file$+"' does not exist.",123)
B�
L�
Vݤexist(n$)
`� ok%,type%
j	ok%=�
t� �
~
�� ok%=�
�� ok% �
�ș"OS_File",17,n$ � type%
�� type%<>1 ok%=�
��
�� �
�=ok%
�ݤupper(A$)
�� B$,X%,C$
�	B$=""
�� X%=1 � �A$
�C$=�A$,X%,1)
�$� C$>="a" � C$<="z" C$=�(�C$-32)
B$=B$+C$

�
=B$
��createconfigfile
(� A%
2A%=�(appdir$+".Choices")
</�#A%,"# Config and BBS data for !MailFormt"
F/�#A%,"# Version 1.50 (C) Jon Ripley 1997/8"
P�#A%,""
Z$�#A%,"# Default BBS: Arcade BBS"
d�#A%,""
n,�#A%,"# Format is ... (without the '#')"
x8�#A%,"# BBS Name,internal mail,e-mail,netmail,@area"
��#A%,""
�F�#A%,"Arcade BBS,<mail> ->,<msg> @196 ->Email,<netmail> ->,<msg> "
�F�#A%,"ArcTic BBS,<mail> ->,<msg> @150 ->Email,<netmail> ->,<msg> "
�Y�#A%,"Digital Databank BBS,<mail> ->,<msg> @254 ->DigiLink Email,<netmail> ->,<msg> "
��#A%
�%�"Settype <Obey$Dir>.Choices FFF"
��
�ݤreadconfig
�� A%,rem,pos,A$
� bbs$(0,0)="No BBS Selected."
�curbbs=0
�A%=�(appdir$+".Choices")
�)� A%=0 �createconfigfile:=�readconfig
	pos=1
�
	rem=�
"A$=�#A%
,� �A$,1)="#" � A$="" rem=�
6#� � rem �readbbs(A$,pos):pos+=1
@	��#A%
J�#A%
T=pos
^��readbbs(A$,pos)
h� temp,temp2,temp3,temp4
rtemp=�A$,",")
|temp2=�A$,",",temp+1)
�temp3=�A$,",",temp2+1)
�temp4=�A$,",",temp3+1)
�bbs$(pos,0)=�A$,temp-1)
�(bbs$(pos,1)=�A$,temp+1,temp2-temp-1)
�*bbs$(pos,2)=�A$,temp2+1,temp3-temp2-1)
�*bbs$(pos,3)=�A$,temp3+1,temp4-temp3-1)
�bbs$(pos,4)=�A$,temp4+1)
��
�� �open_bbs_menu
�&� ptr%,menu$,type%,name$,smenu%,f$
�smenu%=bbs_menu%
�$smenu%="BBSs"
�smenu%!12=&70207
smenu%!16=208
smenu%!20=40
smenu%!24=0
&smenu%+=28
0� numofbbs<>1 �
: � ptr% = 1 � numofbbs-1
D,   �add_source_item(�bbs$(ptr%,0),12),0)
N �
X�
b9� smenu%=bbs_menu%+28 � �add_source_item("No BBSs",0)
lsmenu%!-24=smenu%!-24 � &80
v�tick(smenu%,curbbs,1)
�+�open_menu(bbs_menu%,mouse_x%,mouse_y%)
��
�#� �add_source_item(name$,walk%)
�$(smenu%+12)=name$
�!smenu%=walk%
�smenu%!4=-1
�smenu%!8=&7000021
�smenu%+=24
��
�*� �open_menu(menu_handle%,xpos%,ypos%)
�� items%,dotted%
�items%=0
�
dotted%=0
,ȕ ((menu_handle%!(28+items%*24))�128)=0
 items%+=1
0 � menu_handle%!(28+items%*24)=2  dotted%+=1
 �
*menu_x%=xpos%
4menu_y%=ypos%
>� ypos%=0 �
H' ypos%=144+(items%*44)+(dotted%*22)
R�
\ ypos%+=20
f�
p4ș"Wimp_CreateMenu",,menu_handle%,xpos%-64,ypos%
zlast_menu%=menu_handle%
��
� � �menuselect(base%,handle%)
�� items%,item
�item=!block
�#ș "Wimp_GetPointerInfo",,base%
�adj%=(block!8 � 1)
�Ȏ handle% �
�  � menu : � item=1 quit%=�
�  � bbs_menu%
�%    � $(bbs_menu%+12)="No BBSs" �
�      $bbsname=bbs$(0,0)
�      curbbs=0
�	    �
      curbbs=item+1
!      $bbsname=bbs$(curbbs,0)
&  � IF adj% THEN PROCopen_bbs_menu
$      items%=-1
./      ȕ ((bbs_menu%!(28+items%*24))�128)=0
8        items%+=1
BC        � �ticked(bbs_menu%,items%) � �toggle(bbs_menu%,items%)
L      �
V!      �toggle(bbs_menu%,item)
`      �update
j	    �
t�
~3� adj% � �open_menu(last_menu%,menu_x%,menu_y%)
��
�!� �toggle(menu_handle%,item%)
�;menu_handle%!(28+24*item%)=menu_handle%!(28+24*item%)�1
��
�&� �tick(menu_handle%,item%,state%)
�Fmenu_handle%!(28+24*item%)=(menu_handle%!(28+24*item%)�254)-state%
��
�!� �ticked(menu_handle%,item%)
�%=(menu_handle%!(28+24*item%)�1)=1
�
00000000  0d 00 0a 37 f4 20 3e 21  52 75 6e 49 6d 61 67 65  |...7. >!RunImage|
00000010  20 66 69 6c 65 20 66 6f  72 20 21 4d 61 69 6c 46  | file for !MailF|
00000020  6f 72 6d 74 20 31 2e 35  30 20 28 31 39 2d 4a 61  |ormt 1.50 (19-Ja|
00000030  6e 2d 31 39 39 38 29 0d  00 14 19 f4 20 a9 20 31  |n-1998)..... . 1|
00000040  39 39 37 2f 38 20 4a 6f  6e 20 52 69 70 6c 65 79  |997/8 Jon Ripley|
00000050  0d 00 1e 3c f4 20 57 72  69 74 74 65 6e 20 66 6f  |...<. Written fo|
00000060  72 20 53 70 6f 6f 6b 20  61 6e 64 20 41 6e 64 79  |r Spook and Andy|
00000070  20 4e 65 6c 73 6f 6e 21  20 2d 20 41 6e 64 20 6d  | Nelson! - And m|
00000080  65 20 6f 66 20 63 6f 75  72 73 65 21 0d 00 28 05  |e of course!..(.|
00000090  3a 0d 00 32 35 ee 85 f2  65 72 72 6f 72 28 f6 24  |:..25...error(.$|
000000a0  2b 22 20 28 69 6e 74 65  72 6e 61 6c 20 65 72 72  |+" (internal err|
000000b0  6f 72 29 20 22 2b c3 28  9e 2f 31 30 29 2c 9f 29  |or) "+.(./10),.)|
000000c0  3a f2 71 75 69 74 0d 00  3c 3b f2 69 6e 69 74 28  |:.quit..<;.init(|
000000d0  22 42 42 53 20 4d 61 69  6c 20 46 6f 72 6d 61 74  |"BBS Mail Format|
000000e0  74 65 72 22 2c 22 21 4d  61 69 6c 46 6f 72 6d 74  |ter","!MailFormt|
000000f0  22 2c 2d 31 2c 22 4d 61  69 6c 46 6f 72 6d 74 22  |",-1,"MailFormt"|
00000100  29 0d 00 46 2d de 20 6e  61 6d 65 24 28 35 30 30  |)..F-. name$(500|
00000110  2c 32 29 2c 62 62 73 24  28 31 30 30 2c 34 29 2c  |,2),bbs$(100,4),|
00000120  62 62 73 5f 6d 65 6e 75  25 20 31 38 37 36 0d 00  |bbs_menu% 1876..|
00000130  50 18 6e 61 6d 65 24 28  29 3d 22 22 3a 62 62 73  |P.name$()="":bbs|
00000140  24 28 29 3d 22 22 0d 00  5a 14 6e 61 6d 65 73 3d  |$()=""..Z.names=|
00000150  a4 72 65 61 64 6e 61 6d  65 73 0d 00 64 18 6e 75  |.readnames..d.nu|
00000160  6d 6f 66 62 62 73 3d a4  72 65 61 64 63 6f 6e 66  |mofbbs=.readconf|
00000170  69 67 0d 00 6e 0c 63 75  72 62 62 73 3d 30 0d 00  |ig..n.curbbs=0..|
00000180  78 1b 24 62 62 73 6e 61  6d 65 3d 62 62 73 24 28  |x.$bbsname=bbs$(|
00000190  63 75 72 62 62 73 2c 30  29 0d 00 82 05 f5 0d 00  |curbbs,0).......|
000001a0  8c 25 c8 99 20 22 57 69  6d 70 5f 50 6f 6c 6c 22  |.%.. "Wimp_Poll"|
000001b0  2c 31 2c 62 6c 6f 63 6b  20 b8 20 72 25 2c 62 6c  |,1,block . r%,bl|
000001c0  6f 63 6b 0d 00 96 0b c8  8e 20 72 25 20 ca 0d 00  |ock...... r% ...|
000001d0  a0 4f c9 20 31 3a c8 99  20 22 57 69 6d 70 5f 47  |.O. 1:.. "Wimp_G|
000001e0  65 74 57 69 6e 64 6f 77  53 74 61 74 65 22 2c 2c  |etWindowState",,|
000001f0  62 6c 6f 63 6b 3a 62 6c  6f 63 6b 21 32 38 3d 2d  |block:block!28=-|
00000200  31 3a c8 99 20 22 57 69  6d 70 5f 4f 70 65 6e 57  |1:.. "Wimp_OpenW|
00000210  69 6e 64 6f 77 22 2c 2c  62 6c 6f 63 6b 0d 00 aa  |indow",,block...|
00000220  22 c9 20 32 3a c8 99 22  57 69 6d 70 5f 4f 70 65  |". 2:.."Wimp_Ope|
00000230  6e 57 69 6e 64 6f 77 22  2c 2c 62 6c 6f 63 6b 0d  |nWindow",,block.|
00000240  00 b4 23 c9 20 33 3a c8  99 22 57 69 6d 70 5f 43  |..#. 3:.."Wimp_C|
00000250  6c 6f 73 65 57 69 6e 64  6f 77 22 2c 2c 62 6c 6f  |loseWindow",,blo|
00000260  63 6b 0d 00 be 0e c9 20  36 3a f2 6d 6f 75 73 65  |ck..... 6:.mouse|
00000270  0d 00 c8 14 c9 20 37 20  3a 20 f2 73 74 61 72 74  |..... 7 : .start|
00000280  73 61 76 65 0d 00 d2 24  c9 20 38 20 3a 20 f2 6b  |save...$. 8 : .k|
00000290  65 79 70 72 65 73 73 28  62 6c 6f 63 6b 21 32 34  |eypress(block!24|
000002a0  2c 21 62 6c 6f 63 6b 29  0d 00 dc 27 c9 20 39 20  |,!block)...'. 9 |
000002b0  3a 20 f2 6d 65 6e 75 73  65 6c 65 63 74 28 62 6c  |: .menuselect(bl|
000002c0  6f 63 6b 2c 6c 61 73 74  5f 6d 65 6e 75 25 29 0d  |ock,last_menu%).|
000002d0  00 e6 14 c9 20 31 37 2c  31 38 3a f2 72 65 63 69  |.... 17,18:.reci|
000002e0  65 76 65 0d 00 f0 05 cb  0d 00 fa 0a fd 71 75 69  |eve..........qui|
000002f0  74 25 0d 01 04 09 f2 71  75 69 74 0d 01 0e 05 e0  |t%.....quit.....|
00000300  0d 01 18 0d dd f2 72 65  63 69 65 76 65 0d 01 22  |......recieve.."|
00000310  11 c8 8e 20 62 6c 6f 63  6b 21 31 36 20 ca 0d 01  |... block!16 ...|
00000320  2c 0f c9 20 30 3a 71 75  69 74 25 3d b9 0d 01 36  |,.. 0:quit%=...6|
00000330  13 c9 20 32 20 3a 20 f2  64 61 74 61 73 61 76 65  |.. 2 : .datasave|
00000340  0d 01 40 63 c9 20 33 3a  f2 64 72 61 67 3a 21 62  |..@c. 3:.drag:!b|
00000350  6c 6f 63 6b 3d 73 74 61  74 75 73 3a c8 99 20 22  |lock=status:.. "|
00000360  57 69 6d 70 5f 47 65 74  57 69 6e 64 6f 77 53 74  |Wimp_GetWindowSt|
00000370  61 74 65 22 2c 2c 62 6c  6f 63 6b 3a 62 6c 6f 63  |ate",,block:bloc|
00000380  6b 21 32 38 3d 2d 31 3a  c8 99 20 22 57 69 6d 70  |k!28=-1:.. "Wimp|
00000390  5f 4f 70 65 6e 57 69 6e  64 6f 77 22 2c 2c 62 6c  |_OpenWindow",,bl|
000003a0  6f 63 6b 0d 01 4a 1c c9  20 26 35 30 32 3a f2 73  |ock..J.. &502:.s|
000003b0  65 6e 64 5f 68 65 6c 70  28 62 6c 6f 63 6b 29 0d  |end_help(block).|
000003c0  01 54 05 cb 0d 01 5e 05  e1 0d 01 68 1c dd f2 6b  |.T....^....h...k|
000003d0  65 79 70 72 65 73 73 28  6b 65 79 25 2c 77 69 6e  |eypress(key%,win|
000003e0  64 6f 77 25 29 0d 01 72  10 c8 8e 20 77 69 6e 64  |dow%)..r... wind|
000003f0  6f 77 25 20 ca 0d 01 7c  2d 20 c9 20 73 61 76 65  |ow% ...|- . save|
00000400  5f 77 69 6e 64 6f 77 25  20 3a 20 e7 20 6b 65 79  |_window% : . key|
00000410  25 3d 31 33 20 ef 37 3a  f2 71 75 69 63 6b 73 61  |%=13 .7:.quicksa|
00000420  76 65 0d 01 86 1f 7f 3a  c8 99 20 22 57 69 6d 70  |ve.....:.. "Wimp|
00000430  5f 50 72 6f 63 65 73 73  4b 65 79 22 2c 6b 65 79  |_ProcessKey",key|
00000440  25 0d 01 90 05 cb 0d 01  9a 05 e1 0d 01 a4 0a dd  |%...............|
00000450  f2 64 72 61 67 0d 01 ae  0b ea 66 24 2c 64 69 72  |.drag.....f$,dir|
00000460  0d 01 b8 0f 66 24 3d a4  67 65 74 6e 61 6d 65 0d  |....f$=.getname.|
00000470  01 c2 11 c8 8e 20 62 6c  6f 63 6b 21 34 30 20 ca  |..... block!40 .|
00000480  0d 01 cc 19 c9 20 26 46  46 46 3a f2 75 70 64 61  |..... &FFF:.upda|
00000490  74 65 5f 77 69 6e 64 6f  77 0d 01 d6 2b 7f 3a f2  |te_window...+.:.|
000004a0  65 72 72 6f 72 28 22 54  65 78 74 20 66 69 6c 65  |error("Text file|
000004b0  73 20 6f 6e 6c 79 20 70  6c 65 61 73 65 2e 22 2c  |s only please.",|
000004c0  32 35 35 29 0d 01 e0 05  cb 0d 01 ea 05 e1 0d 01  |255)............|
000004d0  f4 23 dd f2 69 6e 69 74  28 6e 61 6d 65 24 2c 73  |.#..init(name$,s|
000004e0  70 72 69 74 65 24 2c 70  6f 73 2c 6d 65 6e 75 24  |prite$,pos,menu$|
000004f0  29 0d 01 fe 20 ea 20 66  69 6c 65 24 2c 53 25 2c  |)... . file$,S%,|
00000500  54 25 2c 4c 25 2c 70 6f  69 6e 74 65 72 2c 6c 65  |T%,L%,pointer,le|
00000510  6e 0d 02 08 0b 71 75 69  74 25 3d a3 0d 02 12 3a  |n....quit%=....:|
00000520  de 20 62 6c 6f 63 6b 20  32 30 34 38 2c 74 61 73  |. block 2048,tas|
00000530  6b 20 34 2c 74 65 6d 70  6c 61 74 65 73 20 32 31  |k 4,templates 21|
00000540  30 30 2c 6d 65 6e 75 20  32 35 36 2c 69 62 6c 6f  |00,menu 256,iblo|
00000550  63 6b 20 32 35 36 0d 02  1c 10 24 74 61 73 6b 3d  |ck 256....$task=|
00000560  22 54 41 53 4b 22 0d 02  26 2e c8 99 20 22 57 69  |"TASK"..&... "Wi|
00000570  6d 70 5f 49 6e 69 74 69  61 6c 69 73 65 22 2c 32  |mp_Initialise",2|
00000580  30 30 2c 21 74 61 73 6b  2c 6e 61 6d 65 24 20 b8  |00,!task,name$ .|
00000590  20 2c 69 64 0d 02 30 1f  66 69 6c 65 24 3d 22 3c  | ,id..0.file$="<|
000005a0  4f 62 65 79 24 44 69 72  3e 2e 21 53 70 72 69 74  |Obey$Dir>.!Sprit|
000005b0  65 73 22 0d 02 3a 1d 53  25 3d 8e 66 69 6c 65 24  |es"..:.S%=.file$|
000005c0  3a 54 25 3d a2 23 53 25  2b 31 36 3a d9 23 53 25  |:T%=.#S%+16:.#S%|
000005d0  0d 02 44 28 de 20 73 70  72 69 74 65 73 20 54 25  |..D(. sprites T%|
000005e0  3a 21 73 70 72 69 74 65  73 3d 54 25 3a 73 70 72  |:!sprites=T%:spr|
000005f0  69 74 65 73 21 38 3d 31  0d 02 4e 20 c8 99 20 22  |ites!8=1..N .. "|
00000600  4f 53 5f 53 70 72 69 74  65 4f 70 22 2c 32 36 35  |OS_SpriteOp",265|
00000610  2c 73 70 72 69 74 65 73  0d 02 58 26 c8 99 20 22  |,sprites..X&.. "|
00000620  4f 53 5f 53 70 72 69 74  65 4f 70 22 2c 32 36 36  |OS_SpriteOp",266|
00000630  2c 73 70 72 69 74 65 73  2c 66 69 6c 65 24 0d 02  |,sprites,file$..|
00000640  62 2e 21 62 6c 6f 63 6b  3d 70 6f 73 3a 62 6c 6f  |b.!block=pos:blo|
00000650  63 6b 21 34 3d 30 3a 62  6c 6f 63 6b 21 38 3d 30  |ck!4=0:block!8=0|
00000660  3a 62 6c 6f 63 6b 21 31  32 3d 36 33 0d 02 6c 2e  |:block!12=63..l.|
00000670  62 6c 6f 63 6b 21 31 36  3d 36 34 3a 62 6c 6f 63  |block!16=64:bloc|
00000680  6b 21 32 30 3d 26 32 31  30 32 3a 4c 25 3d a9 28  |k!20=&2102:L%=.(|
00000690  73 70 72 69 74 65 24 29  2b 31 0d 02 76 42 de 20  |sprite$)+1..vB. |
000006a0  62 6c 6f 63 6b 21 32 34  20 4c 25 3a 24 28 62 6c  |block!24 L%:$(bl|
000006b0  6f 63 6b 21 32 34 29 3d  73 70 72 69 74 65 24 3a  |ock!24)=sprite$:|
000006c0  62 6c 6f 63 6b 21 32 38  3d 73 70 72 69 74 65 73  |block!28=sprites|
000006d0  3a 62 6c 6f 63 6b 21 33  32 3d 4c 25 0d 02 80 24  |:block!32=L%...$|
000006e0  c8 99 20 22 57 69 6d 70  5f 43 72 65 61 74 65 49  |.. "Wimp_CreateI|
000006f0  63 6f 6e 22 2c 2c 62 6c  6f 63 6b 20 b8 20 69 63  |con",,block . ic|
00000700  0d 02 8a 15 70 6f 69 6e  74 65 72 3d 74 65 6d 70  |....pointer=temp|
00000710  6c 61 74 65 73 0d 02 94  32 c8 99 20 22 57 69 6d  |lates...2.. "Wim|
00000720  70 5f 4f 70 65 6e 54 65  6d 70 6c 61 74 65 22 2c  |p_OpenTemplate",|
00000730  2c 22 3c 4f 62 65 79 24  44 69 72 3e 2e 54 65 6d  |,"<Obey$Dir>.Tem|
00000740  70 6c 61 74 65 73 22 0d  02 9e 50 c8 99 20 22 57  |plates"...P.. "W|
00000750  69 6d 70 5f 4c 6f 61 64  54 65 6d 70 6c 61 74 65  |imp_LoadTemplate|
00000760  22 2c 2c 62 6c 6f 63 6b  2c 70 6f 69 6e 74 65 72  |",,block,pointer|
00000770  2c 74 65 6d 70 6c 61 74  65 73 2b 32 31 30 30 2c  |,templates+2100,|
00000780  2d 31 2c 22 69 6e 66 6f  22 2c 30 20 b8 20 2c 2c  |-1,"info",0 . ,,|
00000790  70 6f 69 6e 74 65 72 0d  02 a8 2b c8 99 20 22 57  |pointer...+.. "W|
000007a0  69 6d 70 5f 43 72 65 61  74 65 57 69 6e 64 6f 77  |imp_CreateWindow|
000007b0  22 2c 2c 62 6c 6f 63 6b  20 b8 20 69 6e 66 6f 62  |",,block . infob|
000007c0  6f 78 0d 02 b2 53 c8 99  20 22 57 69 6d 70 5f 4c  |ox...S.. "Wimp_L|
000007d0  6f 61 64 54 65 6d 70 6c  61 74 65 22 2c 2c 62 6c  |oadTemplate",,bl|
000007e0  6f 63 6b 2c 70 6f 69 6e  74 65 72 2c 74 65 6d 70  |ock,pointer,temp|
000007f0  6c 61 74 65 73 2b 32 31  30 30 2c 2d 31 2c 22 6d  |lates+2100,-1,"m|
00000800  61 69 6c 66 69 78 22 2c  30 20 b8 20 2c 2c 70 6f  |ailfix",0 . ,,po|
00000810  69 6e 74 65 72 0d 02 bc  1c 62 62 73 6e 61 6d 65  |inter....bbsname|
00000820  3d a4 66 69 6e 64 70 6f  69 6e 74 65 72 28 31 36  |=.findpointer(16|
00000830  29 0d 02 c6 1b 6f 6c 64  66 69 6c 65 3d a4 66 69  |)....oldfile=.fi|
00000840  6e 64 70 6f 69 6e 74 65  72 28 30 29 0d 02 d0 1d  |ndpointer(0)....|
00000850  70 61 73 73 77 6f 72 64  3d a4 66 69 6e 64 70 6f  |password=.findpo|
00000860  69 6e 74 65 72 28 31 34  29 0d 02 da 2a c8 99 20  |inter(14)...*.. |
00000870  22 57 69 6d 70 5f 43 72  65 61 74 65 57 69 6e 64  |"Wimp_CreateWind|
00000880  6f 77 22 2c 2c 62 6c 6f  63 6b 20 b8 20 73 74 61  |ow",,block . sta|
00000890  74 75 73 0d 02 e4 53 c8  99 20 22 57 69 6d 70 5f  |tus...S.. "Wimp_|
000008a0  4c 6f 61 64 54 65 6d 70  6c 61 74 65 22 2c 2c 62  |LoadTemplate",,b|
000008b0  6c 6f 63 6b 2c 70 6f 69  6e 74 65 72 2c 74 65 6d  |lock,pointer,tem|
000008c0  70 6c 61 74 65 73 2b 32  31 30 30 2c 2d 31 2c 22  |plates+2100,-1,"|
000008d0  53 61 76 65 42 6f 78 22  2c 30 20 b8 20 2c 2c 70  |SaveBox",0 . ,,p|
000008e0  6f 69 6e 74 65 72 0d 02  ee 1d 73 61 76 65 74 65  |ointer....savete|
000008f0  78 74 25 3d a4 66 69 6e  64 70 6f 69 6e 74 65 72  |xt%=.findpointer|
00000900  28 31 29 0d 02 f8 30 c8  99 20 22 57 69 6d 70 5f  |(1)...0.. "Wimp_|
00000910  43 72 65 61 74 65 57 69  6e 64 6f 77 22 2c 2c 62  |CreateWindow",,b|
00000920  6c 6f 63 6b 20 b8 20 73  61 76 65 5f 77 69 6e 64  |lock . save_wind|
00000930  6f 77 25 0d 03 02 1b c8  99 20 22 57 69 6d 70 5f  |ow%...... "Wimp_|
00000940  43 6c 6f 73 65 54 65 6d  70 6c 61 74 65 22 0d 03  |CloseTemplate"..|
00000950  0c 0d f2 64 6f 63 61 6e  63 65 6c 0d 03 16 51 24  |...docancel...Q$|
00000960  6d 65 6e 75 3d 6d 65 6e  75 24 3a 6d 65 6e 75 21  |menu=menu$:menu!|
00000970  31 32 3d 26 37 30 32 30  37 3a 6d 65 6e 75 21 31  |12=&70207:menu!1|
00000980  36 3d a9 28 6d 65 6e 75  24 29 2a 31 36 3a 6d 65  |6=.(menu$)*16:me|
00000990  6e 75 21 32 30 3d 34 30  3a 6d 65 6e 75 21 32 34  |nu!20=40:menu!24|
000009a0  3d 30 3a 6d 65 6e 75 21  32 38 3d 30 0d 03 20 4d  |=0:menu!28=0.. M|
000009b0  6d 65 6e 75 21 33 32 3d  69 6e 66 6f 62 6f 78 3a  |menu!32=infobox:|
000009c0  6d 65 6e 75 21 33 36 3d  26 37 30 30 30 30 31 39  |menu!36=&7000019|
000009d0  3a 24 28 6d 65 6e 75 2b  34 30 29 3d 22 49 6e 66  |:$(menu+40)="Inf|
000009e0  6f 22 3a 6d 65 6e 75 21  35 32 3d 31 32 38 3a 6d  |o":menu!52=128:m|
000009f0  65 6e 75 21 35 36 3d 2d  31 0d 03 2a 26 6d 65 6e  |enu!56=-1..*&men|
00000a00  75 21 36 30 3d 26 37 30  30 30 30 31 39 3a 24 28  |u!60=&7000019:$(|
00000a10  6d 65 6e 75 2b 36 34 29  3d 22 51 75 69 74 22 0d  |menu+64)="Quit".|
00000a20  03 34 33 c8 99 20 22 4f  53 5f 52 65 61 64 56 61  |.43.. "OS_ReadVa|
00000a30  72 56 61 6c 22 2c 22 4f  62 65 79 24 44 69 72 22  |rVal","Obey$Dir"|
00000a40  2c 62 6c 6f 63 6b 2c 32  35 36 20 b8 20 2c 2c 6c  |,block,256 . ,,l|
00000a50  65 6e 0d 03 3e 1f 62 6c  6f 63 6b 3f 6c 65 6e 3d  |en..>.block?len=|
00000a60  31 33 3a 61 70 70 64 69  72 24 3d 24 62 6c 6f 63  |13:appdir$=$bloc|
00000a70  6b 0d 03 48 05 e1 0d 03  52 0a dd f2 71 75 69 74  |k..H....R...quit|
00000a80  0d 03 5c 1a c8 99 20 22  57 69 6d 70 5f 43 6c 6f  |..\... "Wimp_Clo|
00000a90  73 65 44 6f 77 6e 22 2c  69 64 0d 03 66 05 e0 0d  |seDown",id..f...|
00000aa0  03 70 15 dd f2 65 72 72  6f 72 28 65 72 72 24 2c  |.p...error(err$,|
00000ab0  65 72 72 29 0d 03 7a 19  c8 99 20 22 57 69 6d 70  |err)..z... "Wimp|
00000ac0  5f 44 72 61 67 42 6f 78  22 2c 2c 2d 31 0d 03 84  |_DragBox",,-1...|
00000ad0  21 21 62 6c 6f 63 6b 3d  65 72 72 3a 24 28 62 6c  |!!block=err:$(bl|
00000ae0  6f 63 6b 2b 34 29 3d 65  72 72 24 2b bd 30 0d 03  |ock+4)=err$+.0..|
00000af0  8e 36 c8 99 20 22 57 69  6d 70 5f 52 65 70 6f 72  |.6.. "Wimp_Repor|
00000b00  74 45 72 72 6f 72 22 2c  62 6c 6f 63 6b 2c 31 2c  |tError",block,1,|
00000b10  22 42 42 53 20 4d 61 69  6c 20 46 6f 72 6d 61 74  |"BBS Mail Format|
00000b20  74 65 72 22 0d 03 98 05  e1 0d 03 a2 0b dd f2 6d  |ter"...........m|
00000b30  6f 75 73 65 0d 03 ac 18  ea 20 77 69 6e 64 6f 77  |ouse..... window|
00000b40  2c 69 63 6f 6e 2c 62 75  74 74 6f 6e 0d 03 b6 13  |,icon,button....|
00000b50  77 69 6e 64 6f 77 3d 62  6c 6f 63 6b 21 31 32 0d  |window=block!12.|
00000b60  03 c0 11 69 63 6f 6e 3d  62 6c 6f 63 6b 21 31 36  |...icon=block!16|
00000b70  0d 03 ca 12 62 75 74 74  6f 6e 3d 62 6c 6f 63 6b  |....button=block|
00000b80  21 38 0d 03 d4 13 6d 6f  75 73 65 5f 78 25 3d 21  |!8....mouse_x%=!|
00000b90  62 6c 6f 63 6b 0d 03 de  14 6d 6f 75 73 65 5f 79  |block....mouse_y|
00000ba0  25 3d 62 6c 6f 63 6b 21  34 0d 03 e8 0f c8 8e 20  |%=block!4...... |
00000bb0  77 69 6e 64 6f 77 20 ca  0d 03 f2 14 c9 20 2d 32  |window ...... -2|
00000bc0  3a c8 8e 20 62 75 74 74  6f 6e 20 ca 0d 03 fc 26  |:.. button ....&|
00000bd0  c9 20 32 3a f2 6f 70 65  6e 5f 6d 65 6e 75 28 6d  |. 2:.open_menu(m|
00000be0  65 6e 75 2c 21 62 6c 6f  63 6b 2d 36 34 2c 31 35  |enu,!block-64,15|
00000bf0  36 29 0d 04 06 5d c9 20  34 3a 21 62 6c 6f 63 6b  |6)...]. 4:!block|
00000c00  3d 73 74 61 74 75 73 3a  c8 99 20 22 57 69 6d 70  |=status:.. "Wimp|
00000c10  5f 47 65 74 57 69 6e 64  6f 77 53 74 61 74 65 22  |_GetWindowState"|
00000c20  2c 2c 62 6c 6f 63 6b 3a  62 6c 6f 63 6b 21 32 38  |,,block:block!28|
00000c30  3d 2d 31 3a c8 99 20 22  57 69 6d 70 5f 4f 70 65  |=-1:.. "Wimp_Ope|
00000c40  6e 57 69 6e 64 6f 77 22  2c 2c 62 6c 6f 63 6b 0d  |nWindow",,block.|
00000c50  04 10 05 cb 0d 04 1a 1f  20 c9 20 73 61 76 65 5f  |........ . save_|
00000c60  77 69 6e 64 6f 77 25 20  3a 20 c8 8e 20 69 63 6f  |window% : .. ico|
00000c70  6e 20 ca 0d 04 24 36 20  20 c9 20 30 20 3a 20 e7  |n ...$6  . 0 : .|
00000c80  20 62 75 74 74 6f 6e 3d  28 34 3c 3c 34 29 20 84  | button=(4<<4) .|
00000c90  20 62 75 74 74 6f 6e 3d  28 31 3c 3c 34 29 20 8c  | button=(1<<4) .|
00000ca0  20 f2 64 72 61 67 62 6f  78 0d 04 2e 31 20 20 c9  | .dragbox...1  .|
00000cb0  20 32 20 3a 20 e7 20 62  75 74 74 6f 6e 3d 34 20  | 2 : . button=4 |
00000cc0  84 20 62 75 74 74 6f 6e  3d 31 20 8c 20 ef 37 3a  |. button=1 . .7:|
00000cd0  f2 71 75 69 63 6b 73 61  76 65 0d 04 38 06 20 cb  |.quicksave..8. .|
00000ce0  0d 04 42 18 c9 20 73 74  61 74 75 73 3a c8 8e 20  |..B.. status:.. |
00000cf0  62 75 74 74 6f 6e 20 ca  0d 04 4c 35 c9 20 32 3a  |button ...L5. 2:|
00000d00  c8 99 20 22 57 69 6d 70  5f 43 72 65 61 74 65 4d  |.. "Wimp_CreateM|
00000d10  65 6e 75 22 2c 30 2c 6d  65 6e 75 2c 21 62 6c 6f  |enu",0,menu,!blo|
00000d20  63 6b 2d 36 34 2c 62 6c  6f 63 6b 21 34 0d 04 56  |ck-64,block!4..V|
00000d30  13 c9 20 31 2c 34 3a c8  8e 20 69 63 6f 6e 20 ca  |.. 1,4:.. icon .|
00000d40  0d 04 60 63 c9 20 32 3a  21 62 6c 6f 63 6b 3d 73  |..`c. 2:!block=s|
00000d50  61 76 65 5f 77 69 6e 64  6f 77 25 3a c8 99 20 22  |ave_window%:.. "|
00000d60  57 69 6d 70 5f 47 65 74  57 69 6e 64 6f 77 53 74  |Wimp_GetWindowSt|
00000d70  61 74 65 22 2c 2c 62 6c  6f 63 6b 3a 62 6c 6f 63  |ate",,block:bloc|
00000d80  6b 21 32 38 3d 2d 31 3a  c8 99 20 22 57 69 6d 70  |k!28=-1:.. "Wimp|
00000d90  5f 4f 70 65 6e 57 69 6e  64 6f 77 22 2c 2c 62 6c  |_OpenWindow",,bl|
00000da0  6f 63 6b 0d 04 6a 11 c9  20 33 3a f2 64 6f 63 61  |ock..j.. 3:.doca|
00000db0  6e 63 65 6c 0d 04 74 23  c9 20 34 3a f2 65 64 69  |ncel..t#. 4:.edi|
00000dc0  74 28 61 70 70 64 69 72  24 2b 22 2e 45 4d 61 69  |t(appdir$+".EMai|
00000dd0  6c 42 6f 6f 6b 22 29 0d  04 7e 23 c9 20 35 3a 6e  |lBook")..~#. 5:n|
00000de0  61 6d 65 24 28 29 3d 22  22 3a 6e 61 6d 65 73 3d  |ame$()="":names=|
00000df0  a4 72 65 61 64 6e 61 6d  65 73 0d 04 88 17 c9 20  |.readnames..... |
00000e00  37 3a f2 65 64 69 74 28  24 6f 6c 64 66 69 6c 65  |7:.edit($oldfile|
00000e10  29 0d 04 92 22 c9 20 31  37 3a f2 65 64 69 74 28  |)...". 17:.edit(|
00000e20  61 70 70 64 69 72 24 2b  22 2e 43 68 6f 69 63 65  |appdir$+".Choice|
00000e30  73 22 29 0d 04 9c 17 c9  20 31 38 3a f2 6f 70 65  |s")..... 18:.ope|
00000e40  6e 5f 62 62 73 5f 6d 65  6e 75 0d 04 a6 27 c9 20  |n_bbs_menu...'. |
00000e50  31 39 3a 62 62 73 24 28  29 3d 22 22 3a 6e 75 6d  |19:bbs$()="":num|
00000e60  6f 66 62 62 73 3d a4 72  65 61 64 63 6f 6e 66 69  |ofbbs=.readconfi|
00000e70  67 0d 04 b0 05 cb 0d 04  ba 05 cb 0d 04 c4 05 cb  |g...............|
00000e80  0d 04 ce 05 e1 0d 04 d8  0e dd 20 f2 64 72 61 67  |.......... .drag|
00000e90  62 6f 78 0d 04 e2 17 21  62 6c 6f 63 6b 3d 73 61  |box....!block=sa|
00000ea0  76 65 5f 77 69 6e 64 6f  77 25 0d 04 ec 23 c8 99  |ve_window%...#..|
00000eb0  20 22 57 69 6d 70 5f 47  65 74 57 69 6e 64 6f 77  | "Wimp_GetWindow|
00000ec0  53 74 61 74 65 22 2c 2c  62 6c 6f 63 6b 0d 04 f6  |State",,block...|
00000ed0  18 6f 78 25 3d 62 6c 6f  63 6b 21 34 2d 62 6c 6f  |.ox%=block!4-blo|
00000ee0  63 6b 21 32 30 0d 05 00  19 6f 79 25 3d 62 6c 6f  |ck!20....oy%=blo|
00000ef0  63 6b 21 31 36 2d 62 6c  6f 63 6b 21 32 34 0d 05  |ck!16-block!24..|
00000f00  0a 0d 62 6c 6f 63 6b 21  34 3d 30 0d 05 14 21 c8  |..block!4=0...!.|
00000f10  99 20 22 57 69 6d 70 5f  47 65 74 49 63 6f 6e 53  |. "Wimp_GetIconS|
00000f20  74 61 74 65 22 2c 2c 62  6c 6f 63 6b 0d 05 1e 0d  |tate",,block....|
00000f30  62 6c 6f 63 6b 21 34 3d  35 0d 05 28 19 62 6c 6f  |block!4=5..(.blo|
00000f40  63 6b 21 30 38 3d 6f 78  25 2b 62 6c 6f 63 6b 21  |ck!08=ox%+block!|
00000f50  30 38 0d 05 32 19 62 6c  6f 63 6b 21 31 32 3d 6f  |08..2.block!12=o|
00000f60  79 25 2b 62 6c 6f 63 6b  21 31 32 0d 05 3c 19 62  |y%+block!12..<.b|
00000f70  6c 6f 63 6b 21 31 36 3d  6f 78 25 2b 62 6c 6f 63  |lock!16=ox%+bloc|
00000f80  6b 21 31 36 0d 05 46 19  62 6c 6f 63 6b 21 32 30  |k!16..F.block!20|
00000f90  3d 6f 79 25 2b 62 6c 6f  63 6b 21 32 30 0d 05 50  |=oy%+block!20..P|
00000fa0  19 62 6c 6f 63 6b 21 32  34 3d 30 3a 62 6c 6f 63  |.block!24=0:bloc|
00000fb0  6b 21 32 38 3d 30 0d 05  5a 16 62 6c 6f 63 6b 21  |k!28=0..Z.block!|
00000fc0  33 32 3d 26 37 46 46 46  46 46 46 46 0d 05 64 16  |32=&7FFFFFFF..d.|
00000fd0  62 6c 6f 63 6b 21 33 36  3d 26 37 46 46 46 46 46  |block!36=&7FFFFF|
00000fe0  46 46 0d 05 6e 1c c8 99  20 22 57 69 6d 70 5f 44  |FF..n... "Wimp_D|
00000ff0  72 61 67 42 6f 78 22 2c  2c 62 6c 6f 63 6b 0d 05  |ragBox",,block..|
00001000  78 05 e1 0d 05 82 10 dd  20 f2 73 74 61 72 74 73  |x....... .starts|
00001010  61 76 65 0d 05 8c 23 c8  99 20 22 57 69 6d 70 5f  |ave...#.. "Wimp_|
00001020  47 65 74 50 6f 69 6e 74  65 72 49 6e 66 6f 22 2c  |GetPointerInfo",|
00001030  2c 62 6c 6f 63 6b 0d 05  96 15 62 6c 6f 63 6b 21  |,block....block!|
00001040  32 30 3d 62 6c 6f 63 6b  21 31 32 0d 05 a0 15 62  |20=block!12....b|
00001050  6c 6f 63 6b 21 32 34 3d  62 6c 6f 63 6b 21 31 36  |lock!24=block!16|
00001060  0d 05 aa 13 62 6c 6f 63  6b 21 32 38 3d 21 62 6c  |....block!28=!bl|
00001070  6f 63 6b 0d 05 b4 14 62  6c 6f 63 6b 21 33 32 3d  |ock....block!32=|
00001080  62 6c 6f 63 6b 21 34 0d  05 be 11 62 6c 6f 63 6b  |block!4....block|
00001090  21 33 36 3d 34 30 39 36  0d 05 c8 0d 21 62 6c 6f  |!36=4096....!blo|
000010a0  63 6b 3d 36 34 0d 05 d2  0e 62 6c 6f 63 6b 21 31  |ck=64....block!1|
000010b0  32 3d 30 0d 05 dc 0e 62  6c 6f 63 6b 21 31 36 3d  |2=0....block!16=|
000010c0  31 0d 05 e6 11 62 6c 6f  63 6b 21 34 30 3d 26 46  |1....block!40=&F|
000010d0  46 38 0d 05 f0 28 24 28  62 6c 6f 63 6b 2b 34 34  |F8...($(block+44|
000010e0  29 3d a4 67 65 74 66 69  6c 65 6e 61 6d 65 28 24  |)=.getfilename($|
000010f0  73 61 76 65 74 65 78 74  25 29 0d 05 fa 34 c8 99  |savetext%)...4..|
00001100  20 22 57 69 6d 70 5f 53  65 6e 64 4d 65 73 73 61  | "Wimp_SendMessa|
00001110  67 65 22 2c 31 38 2c 62  6c 6f 63 6b 2c 62 6c 6f  |ge",18,block,blo|
00001120  63 6b 21 32 30 2c 62 6c  6f 63 6b 21 32 34 0d 06  |ck!20,block!24..|
00001130  04 05 e1 0d 06 0e 19 dd  20 a4 67 65 74 66 69 6c  |........ .getfil|
00001140  65 6e 61 6d 65 28 70 61  74 68 24 29 0d 06 18 12  |ename(path$)....|
00001150  c8 95 20 a7 70 61 74 68  24 2c 22 2e 22 29 0d 06  |.. .path$,".")..|
00001160  22 20 20 70 61 74 68 24  3d c1 70 61 74 68 24 2c  |"  path$=.path$,|
00001170  a7 70 61 74 68 24 2c 22  2e 22 29 2b 31 29 0d 06  |.path$,".")+1)..|
00001180  2c 05 ce 0d 06 36 0d 3d  70 61 74 68 24 2b bd 30  |,....6.=path$+.0|
00001190  0d 06 40 0f dd 20 f2 64  61 74 61 73 61 76 65 0d  |..@.. .datasave.|
000011a0  06 4a 17 24 73 61 76 65  74 65 78 74 25 3d a4 67  |.J.$savetext%=.g|
000011b0  65 74 6e 61 6d 65 0d 06  54 20 f2 75 70 64 61 74  |etname..T .updat|
000011c0  65 5f 69 63 6f 6e 28 73  61 76 65 5f 77 69 6e 64  |e_icon(save_wind|
000011d0  6f 77 25 2c 31 29 0d 06  5e 11 e7 20 ac 20 a4 66  |ow%,1)..^.. . .f|
000011e0  69 78 5f 6f 6b 20 e1 0d  06 68 0e f2 64 6f 74 68  |ix_ok ...h..doth|
000011f0  65 73 61 76 65 0d 06 72  14 62 6c 6f 63 6b 21 31  |esave..r.block!1|
00001200  32 3d 62 6c 6f 63 6b 21  38 0d 06 7c 19 62 6c 6f  |2=block!8..|.blo|
00001210  63 6b 21 31 36 3d 33 3a  21 62 6c 6f 63 6b 3d 32  |ck!16=3:!block=2|
00001220  35 36 0d 06 86 34 c8 99  20 22 57 69 6d 70 5f 53  |56...4.. "Wimp_S|
00001230  65 6e 64 4d 65 73 73 61  67 65 22 2c 31 38 2c 62  |endMessage",18,b|
00001240  6c 6f 63 6b 2c 62 6c 6f  63 6b 21 32 30 2c 62 6c  |lock,block!20,bl|
00001250  6f 63 6b 21 32 34 0d 06  90 47 e7 20 62 75 74 74  |ock!24...G. butt|
00001260  6f 6e 3d 28 31 3c 3c 34  29 20 c8 99 20 22 57 69  |on=(1<<4) .. "Wi|
00001270  6d 70 5f 46 6f 72 63 65  52 65 64 72 61 77 22 2c  |mp_ForceRedraw",|
00001280  73 61 76 65 5f 77 69 6e  64 6f 77 25 2c 31 30 2c  |save_window%,10,|
00001290  2d 31 35 36 2c 31 38 34  2c 2d 31 32 30 0d 06 9a  |-156,184,-120...|
000012a0  05 e1 0d 06 a4 10 dd 20  f2 71 75 69 63 6b 73 61  |....... .quicksa|
000012b0  76 65 0d 06 ae 18 e7 20  a7 24 73 61 76 65 74 65  |ve..... .$savete|
000012c0  78 74 25 2c 22 2e 22 29  20 8c 0d 06 b8 12 20 e7  |xt%,".") ..... .|
000012d0  20 ac 20 a4 66 69 78 5f  6f 6b 20 e1 0d 06 c2 0f  | . .fix_ok .....|
000012e0  20 f2 64 6f 74 68 65 73  61 76 65 0d 06 cc 05 cc  | .dothesave.....|
000012f0  0d 06 d6 46 20 f2 65 72  72 6f 72 28 22 54 6f 20  |...F .error("To |
00001300  73 61 76 65 2c 20 64 72  61 67 20 74 68 65 20 66  |save, drag the f|
00001310  69 6c 65 20 69 63 6f 6e  20 74 6f 20 61 20 64 69  |ile icon to a di|
00001320  72 65 63 74 6f 72 79 20  64 69 73 70 6c 61 79 2e  |rectory display.|
00001330  22 2c 31 32 33 29 0d 06  e0 05 cd 0d 06 ea 05 e1  |",123)..........|
00001340  0d 06 f4 10 dd 20 f2 64  6f 74 68 65 73 61 76 65  |..... .dothesave|
00001350  0d 06 fe 0d f2 66 69 78  5f 6d 61 69 6c 0d 07 08  |.....fix_mail...|
00001360  18 21 69 62 6c 6f 63 6b  3d 73 61 76 65 5f 77 69  |.!iblock=save_wi|
00001370  6e 64 6f 77 25 0d 07 12  21 c8 99 20 22 57 69 6d  |ndow%...!.. "Wim|
00001380  70 5f 43 6c 6f 73 65 57  69 6e 64 6f 77 22 2c 2c  |p_CloseWindow",,|
00001390  69 62 6c 6f 63 6b 0d 07  1c 05 e1 0d 07 26 19 dd  |iblock.......&..|
000013a0  20 a4 66 69 6e 64 70 6f  69 6e 74 65 72 28 69 63  | .findpointer(ic|
000013b0  6f 6e 25 29 0d 07 30 1b  3d 62 6c 6f 63 6b 21 28  |on%)..0.=block!(|
000013c0  38 38 2b 33 32 2a 69 63  6f 6e 25 2b 32 30 29 0d  |88+32*icon%+20).|
000013d0  07 3a 20 dd f2 75 70 64  61 74 65 5f 69 63 6f 6e  |.: ..update_icon|
000013e0  28 77 69 6e 64 6f 77 25  2c 69 63 6f 6e 25 29 0d  |(window%,icon%).|
000013f0  07 44 13 21 69 62 6c 6f  63 6b 3d 77 69 6e 64 6f  |.D.!iblock=windo|
00001400  77 25 0d 07 4e 12 69 62  6c 6f 63 6b 21 34 3d 69  |w%..N.iblock!4=i|
00001410  63 6f 6e 25 0d 07 58 0e  69 62 6c 6f 63 6b 21 38  |con%..X.iblock!8|
00001420  3d 30 0d 07 62 0f 69 62  6c 6f 63 6b 21 31 32 3d  |=0..b.iblock!12=|
00001430  30 0d 07 6c 21 c8 99 22  57 69 6d 70 5f 53 65 74  |0..l!.."Wimp_Set|
00001440  49 63 6f 6e 53 74 61 74  65 22 2c 2c 69 62 6c 6f  |IconState",,iblo|
00001450  63 6b 0d 07 76 05 e1 0d  07 80 0c dd f2 75 70 64  |ck..v........upd|
00001460  61 74 65 0d 07 8a 1a f2  75 70 64 61 74 65 5f 69  |ate.....update_i|
00001470  63 6f 6e 28 73 74 61 74  75 73 2c 30 29 0d 07 94  |con(status,0)...|
00001480  1a f2 75 70 64 61 74 65  5f 69 63 6f 6e 28 73 74  |..update_icon(st|
00001490  61 74 75 73 2c 31 29 0d  07 9e 1b f2 75 70 64 61  |atus,1).....upda|
000014a0  74 65 5f 69 63 6f 6e 28  73 74 61 74 75 73 2c 31  |te_icon(status,1|
000014b0  34 29 0d 07 a8 1b f2 75  70 64 61 74 65 5f 69 63  |4).....update_ic|
000014c0  6f 6e 28 73 74 61 74 75  73 2c 31 36 29 0d 07 b2  |on(status,16)...|
000014d0  20 f2 75 70 64 61 74 65  5f 69 63 6f 6e 28 73 61  | .update_icon(sa|
000014e0  76 65 5f 77 69 6e 64 6f  77 25 2c 31 29 0d 07 bc  |ve_window%,1)...|
000014f0  05 e1 0d 07 c6 0d dd a4  67 65 74 6e 61 6d 65 0d  |........getname.|
00001500  07 d0 29 ea 54 25 2c 66  24 3a 66 24 3d c4 32 35  |..).T%,f$:f$=.25|
00001510  30 2c 22 20 22 29 3a 66  24 3d 22 22 3a 54 25 3d  |0," "):f$="":T%=|
00001520  62 6c 6f 63 6b 2b 34 34  0d 07 da 1d c8 95 3f 54  |block+44......?T|
00001530  25 3c 3e 30 3a 66 24 2b  3d bd 3f 54 25 3a 54 25  |%<>0:f$+=.?T%:T%|
00001540  2b 3d 31 3a ce 0d 07 e4  1a c8 99 22 4f 53 5f 46  |+=1:......."OS_F|
00001550  69 6c 65 22 2c 35 2c 66  24 20 b8 20 64 69 72 0d  |ile",5,f$ . dir.|
00001560  07 ee 07 3d 66 24 0d 07  f8 16 dd f2 73 65 6e 64  |...=f$......send|
00001570  5f 68 65 6c 70 28 68 65  6c 70 25 29 0d 08 02 17  |_help(help%)....|
00001580  20 ea 20 61 24 2c 77 69  6e 64 6f 77 25 2c 69 63  | . a$,window%,ic|
00001590  6f 6e 25 0d 08 0c 0a 20  61 24 3d 22 22 0d 08 16  |on%.... a$=""...|
000015a0  15 20 77 69 6e 64 6f 77  25 3d 68 65 6c 70 25 21  |. window%=help%!|
000015b0  33 32 0d 08 20 13 20 69  63 6f 6e 25 3d 68 65 6c  |32.. . icon%=hel|
000015c0  70 25 21 33 36 0d 08 2a  11 20 c8 8e 20 77 69 6e  |p%!36..*. .. win|
000015d0  64 6f 77 25 20 ca 0d 08  34 80 20 20 c9 20 2d 32  |dow% ...4.  . -2|
000015e0  3a e7 20 69 63 6f 6e 25  3d 69 63 20 61 24 3d 22  |:. icon%=ic a$="|
000015f0  54 68 69 73 20 69 73 20  74 68 65 20 42 42 53 20  |This is the BBS |
00001600  4d 61 69 6c 20 46 6f 72  6d 61 74 74 65 72 20 61  |Mail Formatter a|
00001610  70 70 6c 69 63 61 74 69  6f 6e 2e 7c 4d 44 72 61  |pplication.|MDra|
00001620  67 20 61 20 74 65 78 74  20 66 69 6c 65 20 63 6f  |g a text file co|
00001630  6e 74 61 69 6e 69 6e 67  20 79 6f 75 72 20 42 42  |ntaining your BB|
00001640  53 20 6d 65 73 73 61 67  65 73 20 74 6f 20 75 70  |S messages to up|
00001650  6c 6f 61 64 2e 22 0d 08  3e 73 20 20 c9 20 69 6e  |load."..>s  . in|
00001660  66 6f 62 6f 78 3a 61 24  3d 22 54 68 69 73 20 77  |fobox:a$="This w|
00001670  69 6e 64 6f 77 20 64 69  73 70 6c 61 79 73 20 69  |indow displays i|
00001680  6e 66 6f 72 6d 61 74 69  6f 6e 20 61 62 6f 75 74  |nformation about|
00001690  20 74 68 65 20 42 42 53  20 4d 61 69 6c 20 46 6f  | the BBS Mail Fo|
000016a0  72 6d 61 74 74 65 72 2e  7c 4d 53 74 61 79 20 43  |rmatter.|MStay C|
000016b0  6f 6f 6c 21 20 2d 20 4c  69 76 65 20 69 6e 20 61  |ool! - Live in a|
000016c0  20 66 72 69 64 67 65 21  22 0d 08 48 14 20 20 c9  | fridge!"..H.  .|
000016d0  20 73 61 76 65 5f 77 69  6e 64 6f 77 25 0d 08 52  | save_window%..R|
000016e0  69 20 20 20 61 24 3d 22  54 68 69 73 20 77 69 6e  |i   a$="This win|
000016f0  64 6f 77 20 61 6c 6c 6f  77 73 20 79 6f 75 20 74  |dow allows you t|
00001700  6f 20 73 61 76 65 20 79  6f 75 72 20 72 65 66 6f  |o save your refo|
00001710  72 6d 61 74 74 65 64 20  6d 61 69 6c 20 61 73 20  |rmatted mail as |
00001720  61 20 66 69 6c 65 20 6f  72 20 69 6e 74 6f 20 61  |a file or into a|
00001730  6e 6f 74 68 65 72 20 61  70 70 6c 69 63 61 74 69  |nother applicati|
00001740  6f 6e 2e 7c 4d 22 0d 08  5c 11 20 20 20 c8 8e 20  |on.|M"..\.   .. |
00001750  69 63 6f 6e 25 20 ca 0d  08 66 9a 20 20 20 20 c9  |icon% ...f.    .|
00001760  20 30 3a 61 24 2b 3d 22  44 72 61 67 20 74 68 69  | 0:a$+="Drag thi|
00001770  73 20 69 63 6f 6e 20 74  6f 20 74 68 65 20 64 69  |s icon to the di|
00001780  72 65 63 74 6f 72 79 20  69 6e 20 77 68 69 63 68  |rectory in which|
00001790  20 79 6f 75 20 77 61 6e  74 20 74 6f 20 73 61 76  | you want to sav|
000017a0  65 20 74 68 65 20 66 69  6c 65 2e 20 4f 72 2c 20  |e the file. Or, |
000017b0  64 72 61 67 20 69 74 20  74 6f 20 74 68 65 20 70  |drag it to the p|
000017c0  72 6f 67 72 61 6d 20 69  6e 74 6f 20 77 68 69 63  |rogram into whic|
000017d0  68 20 79 6f 75 20 77 61  6e 74 20 74 6f 20 74 72  |h you want to tr|
000017e0  61 6e 73 66 65 72 20 74  68 65 20 64 61 74 61 2e  |ansfer the data.|
000017f0  22 0d 08 70 8a 20 20 20  20 c9 20 31 3a 61 24 2b  |"..p.    . 1:a$+|
00001800  3d 22 54 68 69 73 20 73  68 6f 77 73 20 74 68 65  |="This shows the|
00001810  20 66 69 6c 65 6e 61 6d  65 20 66 6f 72 20 79 6f  | filename for yo|
00001820  75 72 20 72 65 66 6f 72  6d 61 74 74 65 64 20 6d  |ur reformatted m|
00001830  61 69 6c 2e 20 49 66 20  69 74 20 69 73 20 6e 6f  |ail. If it is no|
00001840  74 20 61 20 66 75 6c 6c  20 70 61 74 68 6e 61 6d  |t a full pathnam|
00001850  65 2c 20 64 72 61 67 20  74 68 65 20 69 63 6f 6e  |e, drag the icon|
00001860  20 69 6e 74 6f 20 61 20  64 69 72 65 63 74 6f 72  | into a director|
00001870  79 20 64 69 73 70 6c 61  79 2e 22 0d 08 7a 9a 20  |y display."..z. |
00001880  20 20 20 c9 20 32 3a 61  24 2b 3d 22 43 6c 69 63  |   . 2:a$+="Clic|
00001890  6b 20 53 45 4c 45 43 54  20 68 65 72 65 20 74 6f  |k SELECT here to|
000018a0  20 73 61 76 65 20 74 68  65 20 64 61 74 61 20 77  | save the data w|
000018b0  69 74 68 20 74 68 65 20  63 75 72 72 65 6e 74 20  |ith the current |
000018c0  66 69 6c 65 6e 61 6d 65  2e 20 49 66 20 69 74 20  |filename. If it |
000018d0  69 73 20 6e 6f 74 20 61  20 66 75 6c 6c 20 70 61  |is not a full pa|
000018e0  74 68 6e 61 6d 65 2c 20  79 6f 75 20 6d 75 73 74  |thname, you must|
000018f0  20 64 72 61 67 20 74 68  65 20 69 63 6f 6e 20 74  | drag the icon t|
00001900  6f 20 61 20 64 69 72 65  63 74 6f 72 79 20 66 69  |o a directory fi|
00001910  72 73 74 2e 22 0d 08 84  08 20 20 20 cb 0d 08 8e  |rst."....   ....|
00001920  0e 20 20 c9 20 73 74 61  74 75 73 0d 08 98 58 20  |.  . status...X |
00001930  20 20 61 24 3d 22 54 68  69 73 20 77 69 6e 64 6f  |  a$="This windo|
00001940  77 20 64 69 73 70 6c 61  79 73 20 74 68 65 20 63  |w displays the c|
00001950  75 72 72 65 6e 74 20 73  74 61 74 75 73 20 6f 66  |urrent status of|
00001960  20 74 68 65 20 42 42 53  20 4d 61 69 6c 20 46 6f  | the BBS Mail Fo|
00001970  72 6d 61 74 74 65 72 20  70 72 6f 67 72 61 6d 2e  |rmatter program.|
00001980  7c 4d 22 0d 08 a2 11 20  20 20 c8 8e 20 69 63 6f  ||M"....   .. ico|
00001990  6e 25 20 ca 0d 08 ac 45  20 20 20 20 c9 20 30 2c  |n% ....E    . 0,|
000019a0  36 3a 61 24 2b 3d 22 54  68 69 73 20 69 73 20 74  |6:a$+="This is t|
000019b0  68 65 20 66 69 6c 65 6e  61 6d 65 20 6f 66 20 74  |he filename of t|
000019c0  68 65 20 6d 61 69 6c 20  74 6f 20 62 65 20 66 6f  |he mail to be fo|
000019d0  72 6d 61 74 74 65 64 2e  22 0d 08 b6 82 20 20 20  |rmatted."....   |
000019e0  20 c9 20 32 3a 61 24 2b  3d 22 43 6c 69 63 6b 20  | . 2:a$+="Click |
000019f0  53 45 4c 45 43 54 20 74  6f 20 72 65 66 6f 72 6d  |SELECT to reform|
00001a00  61 74 20 79 6f 75 72 20  6d 61 69 6c 20 66 69 6c  |at your mail fil|
00001a10  65 2e 7c 4d 41 20 27 73  61 76 65 20 62 6f 78 27  |e.|MA 'save box'|
00001a20  20 77 69 6c 6c 20 6f 70  65 6e 20 75 70 20 61 6e  | will open up an|
00001a30  64 20 79 6f 75 20 63 61  6e 20 73 61 76 65 20 74  |d you can save t|
00001a40  68 65 20 6d 61 69 6c 20  77 68 65 72 65 76 65 72  |he mail wherever|
00001a50  20 79 6f 75 20 6c 69 6b  65 21 22 0d 08 c0 43 20  | you like!"...C |
00001a60  20 20 20 c9 20 33 3a 61  24 2b 3d 22 43 6c 69 63  |   . 3:a$+="Clic|
00001a70  6b 20 53 45 4c 45 43 54  20 74 6f 20 63 6c 65 61  |k SELECT to clea|
00001a80  72 20 74 68 65 20 66 69  6c 65 6e 61 6d 65 73 20  |r the filenames |
00001a90  61 6e 64 20 70 61 73 73  77 6f 72 64 2e 22 0d 08  |and password."..|
00001aa0  ca 39 20 20 20 20 c9 20  34 3a 61 24 2b 3d 22 43  |.9    . 4:a$+="C|
00001ab0  6c 69 63 6b 20 53 45 4c  45 43 54 20 74 6f 20 65  |lick SELECT to e|
00001ac0  64 69 74 20 79 6f 75 72  20 61 64 64 72 65 73 73  |dit your address|
00001ad0  20 62 6f 6f 6b 2e 22 0d  08 d4 40 20 20 20 20 c9  | book."...@    .|
00001ae0  20 35 3a 61 24 2b 3d 22  43 6c 69 63 6b 20 53 45  | 5:a$+="Click SE|
00001af0  4c 45 43 54 20 74 6f 20  75 73 65 20 61 20 6e 65  |LECT to use a ne|
00001b00  77 2f 65 64 69 74 65 64  20 61 64 64 72 65 73 73  |w/edited address|
00001b10  20 62 6f 6f 6b 2e 22 0d  08 de 36 20 20 20 20 c9  | book."...6    .|
00001b20  20 37 3a 61 24 2b 3d 22  43 6c 69 63 6b 20 53 45  | 7:a$+="Click SE|
00001b30  4c 45 43 54 20 74 6f 20  65 64 69 74 20 79 6f 75  |LECT to edit you|
00001b40  72 20 6d 61 69 6c 20 66  69 6c 65 2e 22 0d 08 e8  |r mail file."...|
00001b50  4b 20 20 20 20 c9 20 31  33 2c 31 34 3a 61 24 2b  |K    . 13,14:a$+|
00001b60  3d 22 59 6f 75 20 73 68  6f 75 6c 64 20 74 79 70  |="You should typ|
00001b70  65 20 79 6f 75 72 20 41  72 63 61 64 65 20 42 42  |e your Arcade BB|
00001b80  53 20 65 2d 6d 61 69 6c  20 70 61 73 73 77 6f 72  |S e-mail passwor|
00001b90  64 20 68 65 72 65 2e 22  0d 08 f2 6f 20 20 20 20  |d here."...o    |
00001ba0  c9 20 31 35 2c 31 36 3a  61 24 2b 3d 22 54 68 69  |. 15,16:a$+="Thi|
00001bb0  73 20 69 73 20 74 68 65  20 63 75 72 72 65 6e 74  |s is the current|
00001bc0  6c 79 20 73 65 6c 65 63  74 65 64 20 42 42 53 2c  |ly selected BBS,|
00001bd0  20 74 6f 20 63 68 6f 6f  73 65 20 61 20 42 42 53  | to choose a BBS|
00001be0  20 6a 75 73 74 20 63 6c  69 63 6b 20 53 45 4c 45  | just click SELE|
00001bf0  43 54 20 6f 76 65 72 20  74 68 65 20 6d 65 6e 75  |CT over the menu|
00001c00  20 69 63 6f 6e 2e 22 0d  08 fc 88 20 20 20 20 c9  | icon."....    .|
00001c10  20 31 38 3a 61 24 2b 3d  22 43 6c 69 63 6b 20 53  | 18:a$+="Click S|
00001c20  45 4c 45 43 54 20 74 6f  20 6f 70 65 6e 20 75 70  |ELECT to open up|
00001c30  20 61 20 6d 65 6e 75 20  63 6f 6e 74 61 69 6e 69  | a menu containi|
00001c40  6e 67 20 74 68 65 20 63  75 72 72 65 6e 74 6c 79  |ng the currently|
00001c50  20 6b 6e 6f 77 20 42 42  53 73 2e 7c 4d 43 6c 69  | know BBSs.|MCli|
00001c60  63 6b 20 53 45 4c 45 43  54 20 28 6f 6e 20 61 20  |ck SELECT (on a |
00001c70  6d 65 6e 75 20 69 74 65  6d 29 20 74 6f 20 63 68  |menu item) to ch|
00001c80  6f 6f 73 65 20 74 68 61  74 20 42 42 53 2e 22 0d  |oose that BBS.".|
00001c90  09 06 71 20 20 20 20 c9  20 31 37 3a 61 24 2b 3d  |..q    . 17:a$+=|
00001ca0  22 43 6c 69 63 6b 20 53  45 4c 45 43 54 20 74 6f  |"Click SELECT to|
00001cb0  20 65 64 69 74 20 79 6f  75 72 20 27 43 68 6f 69  | edit your 'Choi|
00001cc0  63 65 73 27 20 66 69 6c  65 2e 7c 4d 54 68 69 73  |ces' file.|MThis|
00001cd0  20 63 6f 6e 74 61 69 6e  73 20 74 68 65 20 69 6e  | contains the in|
00001ce0  66 6f 72 6d 61 74 69 6f  6e 20 61 62 6f 75 74 20  |formation about |
00001cf0  74 68 65 20 6b 6e 6f 77  6e 20 42 42 53 73 2e 22  |the known BBSs."|
00001d00  0d 09 10 43 20 20 20 20  c9 20 31 39 3a 61 24 2b  |...C    . 19:a$+|
00001d10  3d 22 43 6c 69 63 6b 20  53 45 4c 45 43 54 20 74  |="Click SELECT t|
00001d20  6f 20 75 73 65 20 61 20  6e 65 77 2f 65 64 69 74  |o use a new/edit|
00001d30  65 64 20 27 43 68 6f 69  63 65 73 27 20 66 69 6c  |ed 'Choices' fil|
00001d40  65 2e 22 0d 09 1a 08 20  20 20 cb 0d 09 24 06 20  |e."....   ...$. |
00001d50  cb 0d 09 2e 0f 20 21 68  65 6c 70 25 3d 32 35 36  |..... !help%=256|
00001d60  0d 09 38 15 20 68 65 6c  70 25 21 31 32 3d 68 65  |..8. help%!12=he|
00001d70  6c 70 25 21 38 0d 09 42  12 20 68 65 6c 70 25 21  |lp%!8..B. help%!|
00001d80  31 36 3d 26 35 30 33 0d  09 4c 16 20 24 28 68 65  |16=&503..L. $(he|
00001d90  6c 70 25 2b 32 30 29 3d  61 24 2b bd 30 0d 09 56  |lp%+20)=a$+.0..V|
00001da0  2b 20 c8 99 20 22 57 69  6d 70 5f 53 65 6e 64 4d  |+ .. "Wimp_SendM|
00001db0  65 73 73 61 67 65 22 2c  31 37 2c 68 65 6c 70 25  |essage",17,help%|
00001dc0  2c 68 65 6c 70 25 21 34  0d 09 60 05 e1 0d 09 6a  |,help%!4..`....j|
00001dd0  13 dd f2 75 70 64 61 74  65 5f 77 69 6e 64 6f 77  |...update_window|
00001de0  0d 09 74 0f 24 6f 6c 64  66 69 6c 65 3d 66 24 0d  |..t.$oldfile=f$.|
00001df0  09 7e 11 24 73 61 76 65  74 65 78 74 25 3d 66 24  |.~.$savetext%=f$|
00001e00  0d 09 88 0b f2 75 70 64  61 74 65 0d 09 92 05 e1  |.....update.....|
00001e10  0d 09 9c 0e dd f2 64 6f  63 61 6e 63 65 6c 0d 09  |......docancel..|
00001e20  a6 0f 24 6f 6c 64 66 69  6c 65 3d 22 22 0d 09 b0  |..$oldfile=""...|
00001e30  10 24 70 61 73 73 77 6f  72 64 3d 22 22 0d 09 ba  |.$password=""...|
00001e40  1a 24 73 61 76 65 74 65  78 74 25 3d 22 46 6f 72  |.$savetext%="For|
00001e50  6d 61 74 74 65 64 22 0d  09 c4 0b f2 75 70 64 61  |matted".....upda|
00001e60  74 65 0d 09 ce 05 e1 0d  09 d8 0c dd a4 66 69 78  |te...........fix|
00001e70  5f 6f 6b 0d 09 e2 4f e7  20 24 6f 6c 64 66 69 6c  |_ok...O. $oldfil|
00001e80  65 3d 22 22 20 84 20 24  73 61 76 65 74 65 78 74  |e="" . $savetext|
00001e90  25 3d 22 22 20 f2 65 72  72 6f 72 28 22 4d 6f 72  |%="" .error("Mor|
00001ea0  65 20 69 6e 66 6f 72 6d  61 74 69 6f 6e 20 72 65  |e information re|
00001eb0  71 75 69 72 65 64 2e 2e  2e 22 2c 31 32 33 29 3a  |quired...",123):|
00001ec0  3d a3 0d 09 ec 47 e7 20  24 73 61 76 65 74 65 78  |=....G. $savetex|
00001ed0  74 25 3d 24 6f 6c 64 66  69 6c 65 20 f2 65 72 72  |t%=$oldfile .err|
00001ee0  6f 72 28 22 46 69 6c 65  6e 61 6d 65 73 20 6d 75  |or("Filenames mu|
00001ef0  73 74 20 62 65 20 64 69  66 66 65 72 65 6e 74 2e  |st be different.|
00001f00  22 2c 31 32 33 29 3a 3d  a3 0d 09 f6 4d e7 20 ac  |",123):=....M. .|
00001f10  20 a4 65 78 69 73 74 28  24 6f 6c 64 66 69 6c 65  | .exist($oldfile|
00001f20  29 20 f2 65 72 72 6f 72  28 22 46 69 6c 65 20 27  |) .error("File '|
00001f30  22 2b 24 6f 6c 64 66 69  6c 65 2b 22 27 20 64 6f  |"+$oldfile+"' do|
00001f40  65 73 20 6e 6f 74 20 65  78 69 73 74 2e 22 2c 31  |es not exist.",1|
00001f50  32 33 29 3a 3d a3 0d 0a  00 0e 6e 65 65 64 70 61  |23):=.....needpa|
00001f60  73 73 3d a3 0d 0a 0a 43  68 65 61 64 65 72 24 3d  |ss=....Cheader$=|
00001f70  62 62 73 24 28 63 75 72  62 62 73 2c 32 29 3a e7  |bbs$(curbbs,2):.|
00001f80  20 62 62 73 24 28 63 75  72 62 62 73 2c 30 29 3d  | bbs$(curbbs,0)=|
00001f90  22 41 72 63 61 64 65 20  42 42 53 22 20 6e 65 65  |"Arcade BBS" nee|
00001fa0  64 70 61 73 73 3d b9 0d  0a 14 36 e7 20 68 65 61  |dpass=....6. hea|
00001fb0  64 65 72 24 3d 22 22 20  f2 65 72 72 6f 72 28 22  |der$="" .error("|
00001fc0  50 6c 65 61 73 65 20 63  68 6f 6f 73 65 20 61 20  |Please choose a |
00001fd0  42 42 53 2e 22 2c 31 32  33 29 3a 3d a3 0d 0a 1e  |BBS.",123):=....|
00001fe0  51 e7 20 6e 65 65 64 70  61 73 73 20 80 20 24 70  |Q. needpass . $p|
00001ff0  61 73 73 77 6f 72 64 3d  22 22 20 f2 65 72 72 6f  |assword="" .erro|
00002000  72 28 22 50 6c 65 61 73  65 20 65 6e 74 65 72 20  |r("Please enter |
00002010  79 6f 75 72 20 41 72 63  61 64 65 20 50 61 73 73  |your Arcade Pass|
00002020  77 6f 72 64 2e 22 2c 31  32 33 29 3a 3d a3 0d 0a  |word.",123):=...|
00002030  28 06 3d b9 0d 0a 32 0e  dd f2 66 69 78 5f 6d 61  |(.=...2...fix_ma|
00002040  69 6c 0d 0a 3c 2c ea 20  6c 65 6e 2c 41 25 2c 42  |il..<,. len,A%,B|
00002050  25 2c 6f 6b 2c 50 25 2c  4c 25 2c 43 25 2c 6e 65  |%,ok,P%,L%,C%,ne|
00002060  65 64 70 61 73 73 2c 68  65 61 64 65 72 24 0d 0a  |edpass,header$..|
00002070  46 11 e7 20 ac 20 a4 66  69 78 5f 6f 6b 20 e1 0d  |F.. . .fix_ok ..|
00002080  0a 50 10 41 25 3d 8e 24  6f 6c 64 66 69 6c 65 0d  |.P.A%=.$oldfile.|
00002090  0a 5a 0c 6c 65 6e 3d a2  23 41 25 0d 0a 64 12 42  |.Z.len=.#A%..d.B|
000020a0  25 3d ae 24 73 61 76 65  74 65 78 74 25 0d 0a 6e  |%=.$savetext%..n|
000020b0  09 50 25 3d 31 30 0d 0a  78 08 4c 25 3d 30 0d 0a  |.P%=10..x.L%=0..|
000020c0  82 15 c8 99 20 22 48 6f  75 72 67 6c 61 73 73 5f  |.... "Hourglass_|
000020d0  4f 6e 22 0d 0a 8c 05 f5  0d 0a 96 08 6f 6b 3d b9  |On".........ok=.|
000020e0  0d 0a a0 0b 43 25 3d 9a  23 41 25 0d 0a aa 11 e7  |....C%=.#A%.....|
000020f0  20 43 25 3d 31 33 20 43  25 3d 31 30 0d 0a b4 1a  | C%=13 C%=10....|
00002100  e7 20 43 25 3d 31 30 20  4c 25 3d 4c 25 2b 31 20  |. C%=10 L%=L%+1 |
00002110  8b 20 4c 25 3d 30 0d 0a  be 3b e7 20 4c 25 3d 32  |. L%=0...;. L%=2|
00002120  20 8f 23 42 25 3d 8f 23  42 25 2d 31 3a d5 23 42  | .#B%=.#B%-1:.#B|
00002130  25 2c 31 30 3a d5 23 42  25 2c 33 32 3a d5 23 42  |%,10:.#B%,32:.#B|
00002140  25 2c 33 32 3a d5 23 42  25 2c 31 30 3a 6f 6b 3d  |%,32:.#B%,10:ok=|
00002150  a3 0d 0a c8 25 e7 20 50  25 3d 31 30 20 80 20 43  |....%. P%=10 . C|
00002160  25 3d 97 22 3e 22 20 f2  64 6f 5f 68 65 61 64 65  |%=.">" .do_heade|
00002170  72 3a 6f 6b 3d a3 0d 0a  d2 10 e7 20 6f 6b 20 d5  |r:ok=...... ok .|
00002180  23 42 25 2c 43 25 0d 0a  dc 3d e7 20 28 8f 23 41  |#B%,C%...=. (.#A|
00002190  25 20 80 20 26 46 46 29  3d 30 20 c8 99 20 22 48  |% . &FF)=0 .. "H|
000021a0  6f 75 72 67 6c 61 73 73  5f 50 65 72 63 65 6e 74  |ourglass_Percent|
000021b0  61 67 65 22 2c 28 31 30  30 2f 6c 65 6e 29 2a 8f  |age",(100/len)*.|
000021c0  23 41 25 0d 0a e6 09 50  25 3d 43 25 0d 0a f0 09  |#A%....P%=C%....|
000021d0  fd c5 23 41 25 0d 0a fa  08 d9 23 41 25 0d 0b 04  |..#A%.....#A%...|
000021e0  08 d9 23 42 25 0d 0b 0e  21 ff 22 53 65 74 74 79  |..#B%...!."Setty|
000021f0  70 65 20 22 2b 24 73 61  76 65 74 65 78 74 25 2b  |pe "+$savetext%+|
00002200  22 20 46 46 46 22 0d 0b  18 16 c8 99 20 22 48 6f  |" FFF"...... "Ho|
00002210  75 72 67 6c 61 73 73 5f  4f 66 66 22 0d 0b 22 05  |urglass_Off"..".|
00002220  e1 0d 0b 2c 0f dd f2 64  6f 5f 68 65 61 64 65 72  |...,...do_header|
00002230  0d 0b 36 11 ea 20 43 24  2c 43 25 2c 70 61 73 73  |..6.. C$,C%,pass|
00002240  24 0d 0b 40 0b 43 24 3d  be 23 41 25 0d 0b 4a 30  |$..@.C$=.#A%..J0|
00002250  70 61 73 73 24 3d c4 2d  6e 65 65 64 70 61 73 73  |pass$=.-needpass|
00002260  2c 22 50 61 73 73 77 6f  72 64 3a 20 22 2b 24 70  |,"Password: "+$p|
00002270  61 73 73 77 6f 72 64 2b  bd 31 30 29 0d 0b 54 27  |assword+.10)..T'|
00002280  e7 20 c0 43 24 2c 31 29  3d 22 3e 22 20 43 24 3d  |. .C$,1)=">" C$=|
00002290  a4 63 68 61 6e 67 65 6e  61 6d 65 28 c1 43 24 2c  |.changename(.C$,|
000022a0  32 29 29 0d 0b 5e 2e e7  20 c0 43 24 2c 31 29 3d  |2))..^.. .C$,1)=|
000022b0  22 40 22 20 d5 23 42 25  2c 62 62 73 24 28 63 75  |"@" .#B%,bbs$(cu|
000022c0  72 62 62 73 2c 34 29 2b  43 24 3a 4c 25 3d 31 3a  |rbbs,4)+C$:L%=1:|
000022d0  e1 0d 0b 68 4d e7 20 a7  43 24 2c 22 40 22 29 20  |...hM. .C$,"@") |
000022e0  20 d5 23 42 25 2c 68 65  61 64 65 72 24 3a d5 23  | .#B%,header$:.#|
000022f0  42 25 2c 43 24 3a 43 24  3d be 23 41 25 3a d5 23  |B%,C$:C$=.#A%:.#|
00002300  42 25 2c 70 61 73 73 24  2b 22 53 75 62 6a 65 63  |B%,pass$+"Subjec|
00002310  74 3a 20 22 2b 43 24 3a  4c 25 3d 31 3a e1 0d 0b  |t: "+C$:L%=1:...|
00002320  72 35 e7 20 a7 43 24 2c  22 23 22 29 3c 3e 30 20  |r5. .C$,"#")<>0 |
00002330  80 20 a7 43 24 2c 22 20  61 74 20 22 29 3c 3e 30  |. .C$," at ")<>0|
00002340  20 f2 64 6f 6e 65 74 6d  61 69 6c 68 65 61 64 65  | .donetmailheade|
00002350  72 3a e1 0d 0b 7c 1f d5  23 42 25 2c 62 62 73 24  |r:...|..#B%,bbs$|
00002360  28 63 75 72 62 62 73 2c  31 29 2b 43 24 3a 4c 25  |(curbbs,1)+C$:L%|
00002370  3d 31 0d 0b 86 05 e1 0d  0b 90 15 dd f2 64 6f 6e  |=1...........don|
00002380  65 74 6d 61 69 6c 68 65  61 64 65 72 0d 0b 9a 0b  |etmailheader....|
00002390  ea 20 65 6d 61 69 6c 0d  0b a4 0b 65 6d 61 69 6c  |. email....email|
000023a0  3d a3 0d 0b ae 1a d5 23  42 25 2c 62 62 73 24 28  |=......#B%,bbs$(|
000023b0  63 75 72 62 62 73 2c 33  29 2b 43 24 0d 0b b8 0b  |curbbs,3)+C$....|
000023c0  43 24 3d be 23 41 25 0d  0b c2 3f e7 20 a7 43 24  |C$=.#A%...?. .C$|
000023d0  2c 22 40 22 29 20 d5 23  42 25 2c 43 24 3a 43 24  |,"@") .#B%,C$:C$|
000023e0  3d be 23 41 25 3a d5 23  42 25 2c 70 61 73 73 24  |=.#A%:.#B%,pass$|
000023f0  2b 22 53 75 62 6a 65 63  74 3a 20 22 2b 43 24 3a  |+"Subject: "+C$:|
00002400  4c 25 3d 31 3a e1 0d 0b  cc 17 d5 23 42 25 2c 22  |L%=1:......#B%,"|
00002410  53 75 62 6a 65 63 74 3a  20 22 2b 43 24 0d 0b d6  |Subject: "+C$...|
00002420  05 e1 0d 0b e0 17 dd a4  63 68 61 6e 67 65 6e 61  |........changena|
00002430  6d 65 28 6e 61 6d 65 24  29 0d 0b ea 16 ea 20 58  |me(name$)..... X|
00002440  25 2c 74 65 6d 70 24 2c  63 68 61 6e 67 65 64 0d  |%,temp$,changed.|
00002450  0b f4 21 74 65 6d 70 24  3d a4 75 70 70 65 72 28  |..!temp$=.upper(|
00002460  6e 61 6d 65 24 29 3a 63  68 61 6e 67 65 64 3d a3  |name$):changed=.|
00002470  0d 0b fe 14 e3 20 58 25  3d 30 20 b8 20 6e 61 6d  |..... X%=0 . nam|
00002480  65 73 2d 31 0d 0c 08 47  e7 20 6e 61 6d 65 24 28  |es-1...G. name$(|
00002490  58 25 2c 30 29 3d 74 65  6d 70 24 20 84 20 6e 61  |X%,0)=temp$ . na|
000024a0  6d 65 24 28 58 25 2c 31  29 3d 74 65 6d 70 24 20  |me$(X%,1)=temp$ |
000024b0  74 65 6d 70 24 3d 6e 61  6d 65 24 28 58 25 2c 32  |temp$=name$(X%,2|
000024c0  29 3a 63 68 61 6e 67 65  64 3d b9 0d 0c 12 05 ed  |):changed=......|
000024d0  0d 0c 1c 4d e7 20 ac 20  63 68 61 6e 67 65 64 20  |...M. . changed |
000024e0  f2 65 72 72 6f 72 28 22  4e 61 6d 65 20 27 22 2b  |.error("Name '"+|
000024f0  6e 61 6d 65 24 2b 22 27  20 6e 6f 74 20 66 6f 75  |name$+"' not fou|
00002500  6e 64 20 69 6e 20 74 68  65 20 61 64 64 72 65 73  |nd in the addres|
00002510  73 20 62 6f 6f 6b 2e 22  2c 31 32 33 29 0d 0c 26  |s book.",123)..&|
00002520  0a 3d 74 65 6d 70 24 0d  0c 30 14 dd f2 63 72 65  |.=temp$..0...cre|
00002530  61 74 65 6e 61 6d 65 66  69 6c 65 0d 0c 3a 08 ea  |atenamefile..:..|
00002540  20 41 25 0d 0c 44 1e 41  25 3d ae 28 61 70 70 64  | A%..D.A%=.(appd|
00002550  69 72 24 2b 22 2e 45 4d  61 69 6c 42 6f 6f 6b 22  |ir$+".EMailBook"|
00002560  29 0d 0c 4e 35 d5 23 41  25 2c 22 23 20 41 64 64  |)..N5.#A%,"# Add|
00002570  72 65 73 73 20 62 6f 6f  6b 20 66 6f 72 20 21 4d  |ress book for !M|
00002580  61 69 6c 46 6f 72 6d 74  20 56 65 72 73 69 6f 6e  |ailFormt Version|
00002590  20 31 2e 35 30 22 0d 0c  58 22 d5 23 41 25 2c 22  | 1.50"..X".#A%,"|
000025a0  23 20 28 43 29 20 4a 6f  6e 20 52 69 70 6c 65 79  |# (C) Jon Ripley|
000025b0  20 31 39 39 37 2f 38 22  0d 0c 62 0b d5 23 41 25  | 1997/8"..b..#A%|
000025c0  2c 22 22 0d 0c 6c 35 d5  23 41 25 2c 22 23 20 42  |,""..l5.#A%,"# B|
000025d0  6c 61 6e 6b 20 6c 69 6e  65 73 20 61 6e 64 20 6c  |lank lines and l|
000025e0  69 6e 65 73 20 73 74 61  72 74 69 6e 67 20 77 69  |ines starting wi|
000025f0  74 68 20 27 23 27 73 22  0d 0c 76 1b d5 23 41 25  |th '#'s"..v..#A%|
00002600  2c 22 23 20 61 72 65 20  69 67 6e 6f 72 65 64 2e  |,"# are ignored.|
00002610  2e 2e 22 0d 0c 80 0b d5  23 41 25 2c 22 22 0d 0c  |..".....#A%,""..|
00002620  8a 2c d5 23 41 25 2c 22  23 20 46 6f 72 6d 61 74  |.,.#A%,"# Format|
00002630  20 69 73 20 2e 2e 2e 20  28 77 69 74 68 6f 75 74  | is ... (without|
00002640  20 74 68 65 20 27 23 27  29 22 0d 0c 94 36 d5 23  | the '#')"...6.#|
00002650  41 25 2c 22 23 20 4e 61  6d 65 2c 61 6c 74 65 72  |A%,"# Name,alter|
00002660  6e 61 74 69 76 65 20 6e  61 6d 65 2c 45 2d 6d 61  |native name,E-ma|
00002670  69 6c 20 61 64 64 72 65  73 73 2f 55 73 65 72 22  |il address/User"|
00002680  0d 0c 9e 25 d5 23 41 25  2c 22 23 20 6e 61 6d 65  |...%.#A%,"# name|
00002690  2f 4e 65 74 4d 61 69 6c  20 41 64 64 72 65 73 73  |/NetMail Address|
000026a0  2f 65 74 63 22 0d 0c a8  0b d5 23 41 25 2c 22 22  |/etc".....#A%,""|
000026b0  0d 0c b2 1a d5 23 41 25  2c 22 23 20 54 68 65 20  |.....#A%,"# The |
000026c0  61 75 74 68 6f 72 2e 2e  2e 22 0d 0c bc 0b d5 23  |author...".....#|
000026d0  41 25 2c 22 22 0d 0c c6  33 d5 23 41 25 2c 22 4a  |A%,""...3.#A%,"J|
000026e0  6f 6e 20 52 69 70 6c 65  79 2c 2c 6a 6f 6e 72 69  |on Ripley,,jonri|
000026f0  70 6c 65 79 40 61 72 63  61 64 65 2e 64 65 6d 6f  |pley@arcade.demo|
00002700  6e 2e 63 6f 2e 75 6b 22  0d 0c d0 08 d9 23 41 25  |n.co.uk".....#A%|
00002710  0d 0c da 27 ff 22 53 65  74 74 79 70 65 20 3c 4f  |...'."Settype <O|
00002720  62 65 79 24 44 69 72 3e  2e 45 4d 61 69 6c 42 6f  |bey$Dir>.EMailBo|
00002730  6f 6b 20 46 46 46 22 0d  0c e4 05 e1 0d 0c ee 0f  |ok FFF".........|
00002740  dd a4 72 65 61 64 6e 61  6d 65 73 0d 0c f8 13 ea  |..readnames.....|
00002750  20 41 25 2c 72 65 6d 2c  70 6f 73 2c 41 24 0d 0d  | A%,rem,pos,A$..|
00002760  02 1e 41 25 3d 8e 28 61  70 70 64 69 72 24 2b 22  |..A%=.(appdir$+"|
00002770  2e 45 4d 61 69 6c 42 6f  6f 6b 22 29 0d 0d 0c 26  |.EMailBook")...&|
00002780  e7 20 41 25 3d 30 20 f2  63 72 65 61 74 65 6e 61  |. A%=0 .createna|
00002790  6d 65 66 69 6c 65 3a 3d  a4 72 65 61 64 6e 61 6d  |mefile:=.readnam|
000027a0  65 73 0d 0d 16 09 70 6f  73 3d 30 0d 0d 20 05 f5  |es....pos=0.. ..|
000027b0  0d 0d 2a 09 72 65 6d 3d  a3 0d 0d 34 0b 41 24 3d  |..*.rem=...4.A$=|
000027c0  be 23 41 25 0d 0d 3e 1e  e7 20 c0 41 24 2c 31 29  |.#A%..>.. .A$,1)|
000027d0  3d 22 23 22 20 84 20 41  24 3d 22 22 20 72 65 6d  |="#" . A$="" rem|
000027e0  3d b9 0d 0d 48 20 e7 20  ac 20 72 65 6d 20 f2 6e  |=...H . . rem .n|
000027f0  61 6d 65 28 41 24 2c 70  6f 73 29 3a 70 6f 73 2b  |ame(A$,pos):pos+|
00002800  3d 31 0d 0d 52 09 fd c5  23 41 25 0d 0d 5c 08 d9  |=1..R...#A%..\..|
00002810  23 41 25 0d 0d 66 08 3d  70 6f 73 0d 0d 70 12 dd  |#A%..f.=pos..p..|
00002820  f2 6e 61 6d 65 28 41 24  2c 70 6f 73 29 0d 0d 7a  |.name(A$,pos)..z|
00002830  10 ea 20 74 65 6d 70 2c  74 65 6d 70 32 0d 0d 84  |.. temp,temp2...|
00002840  11 74 65 6d 70 3d a7 41  24 2c 22 2c 22 29 0d 0d  |.temp=.A$,",")..|
00002850  8e 19 74 65 6d 70 32 3d  a7 41 24 2c 22 2c 22 2c  |..temp2=.A$,",",|
00002860  74 65 6d 70 2b 31 29 0d  0d 98 24 6e 61 6d 65 24  |temp+1)...$name$|
00002870  28 70 6f 73 2c 30 29 3d  a4 75 70 70 65 72 28 c0  |(pos,0)=.upper(.|
00002880  41 24 2c 74 65 6d 70 2d  31 29 29 0d 0d a2 31 6e  |A$,temp-1))...1n|
00002890  61 6d 65 24 28 70 6f 73  2c 31 29 3d a4 75 70 70  |ame$(pos,1)=.upp|
000028a0  65 72 28 c1 41 24 2c 74  65 6d 70 2b 31 2c 74 65  |er(.A$,temp+1,te|
000028b0  6d 70 32 2d 74 65 6d 70  2d 31 29 29 0d 0d ac 1d  |mp2-temp-1))....|
000028c0  6e 61 6d 65 24 28 70 6f  73 2c 32 29 3d c1 41 24  |name$(pos,2)=.A$|
000028d0  2c 74 65 6d 70 32 2b 31  29 0d 0d b6 05 e1 0d 0d  |,temp2+1).......|
000028e0  c0 11 dd f2 65 64 69 74  28 66 69 6c 65 24 29 0d  |....edit(file$).|
000028f0  0d ca 0e 21 62 6c 6f 63  6b 3d 32 35 36 0d 0d d4  |...!block=256...|
00002900  17 62 6c 6f 63 6b 21 34  3d 30 3a 62 6c 6f 63 6b  |.block!4=0:block|
00002910  21 38 3d 30 0d 0d de 0e  62 6c 6f 63 6b 21 31 32  |!8=0....block!12|
00002920  3d 30 0d 0d e8 0e 62 6c  6f 63 6b 21 31 36 3d 35  |=0....block!16=5|
00002930  0d 0d f2 0e 62 6c 6f 63  6b 21 32 30 3d 30 0d 0d  |....block!20=0..|
00002940  fc 2f 62 6c 6f 63 6b 21  32 34 3d 30 3a 62 6c 6f  |./block!24=0:blo|
00002950  63 6b 21 32 38 3d 30 3a  62 6c 6f 63 6b 21 33 32  |ck!28=0:block!32|
00002960  3d 30 3a 62 6c 6f 63 6b  21 33 36 3d 30 0d 0e 06  |=0:block!36=0...|
00002970  11 62 6c 6f 63 6b 21 34  30 3d 26 66 66 66 0d 0e  |.block!40=&fff..|
00002980  10 1a 24 28 62 6c 6f 63  6b 2b 34 34 29 3d 66 69  |..$(block+44)=fi|
00002990  6c 65 24 2b bd 28 30 29  0d 0e 1a 15 e7 20 a4 65  |le$+.(0)..... .e|
000029a0  78 69 73 74 28 66 69 6c  65 24 29 20 8c 0d 0e 24  |xist(file$) ...$|
000029b0  24 20 c8 99 22 57 69 6d  70 5f 53 65 6e 64 4d 65  |$ .."Wimp_SendMe|
000029c0  73 73 61 67 65 22 2c 31  38 2c 62 6c 6f 63 6b 2c  |ssage",18,block,|
000029d0  30 0d 0e 2e 05 cc 0d 0e  38 33 20 f2 65 72 72 6f  |0.......83 .erro|
000029e0  72 28 22 46 69 6c 65 20  27 22 2b 66 69 6c 65 24  |r("File '"+file$|
000029f0  2b 22 27 20 64 6f 65 73  20 6e 6f 74 20 65 78 69  |+"' does not exi|
00002a00  73 74 2e 22 2c 31 32 33  29 0d 0e 42 05 cd 0d 0e  |st.",123)..B....|
00002a10  4c 05 e1 0d 0e 56 0f dd  a4 65 78 69 73 74 28 6e  |L....V...exist(n|
00002a20  24 29 0d 0e 60 0f ea 20  6f 6b 25 2c 74 79 70 65  |$)..`.. ok%,type|
00002a30  25 0d 0e 6a 09 6f 6b 25  3d b9 0d 0e 74 07 ea 20  |%..j.ok%=...t.. |
00002a40  85 0d 0e 7e 0d ee 85 ea  20 6f 6b 25 3d a3 0d 0e  |...~.... ok%=...|
00002a50  88 0b e7 20 6f 6b 25 20  8c 0d 0e 92 1d c8 99 22  |... ok% ......."|
00002a60  4f 53 5f 46 69 6c 65 22  2c 31 37 2c 6e 24 20 b8  |OS_File",17,n$ .|
00002a70  20 74 79 70 65 25 0d 0e  9c 14 e7 20 74 79 70 65  | type%..... type|
00002a80  25 3c 3e 31 20 6f 6b 25  3d a3 0d 0e a6 05 cd 0d  |%<>1 ok%=.......|
00002a90  0e b0 07 f7 20 85 0d 0e  ba 08 3d 6f 6b 25 0d 0e  |.... .....=ok%..|
00002aa0  c4 0f dd a4 75 70 70 65  72 28 41 24 29 0d 0e ce  |....upper(A$)...|
00002ab0  0e ea 20 42 24 2c 58 25  2c 43 24 0d 0e d8 09 42  |.. B$,X%,C$....B|
00002ac0  24 3d 22 22 0d 0e e2 10  e3 20 58 25 3d 31 20 b8  |$=""..... X%=1 .|
00002ad0  20 a9 41 24 0d 0e ec 10  43 24 3d c1 41 24 2c 58  | .A$....C$=.A$,X|
00002ae0  25 2c 31 29 0d 0e f6 24  e7 20 43 24 3e 3d 22 61  |%,1)...$. C$>="a|
00002af0  22 20 80 20 43 24 3c 3d  22 7a 22 20 43 24 3d bd  |" . C$<="z" C$=.|
00002b00  28 97 43 24 2d 33 32 29  0d 0f 00 0c 42 24 3d 42  |(.C$-32)....B$=B|
00002b10  24 2b 43 24 0d 0f 0a 05  ed 0d 0f 14 07 3d 42 24  |$+C$.........=B$|
00002b20  0d 0f 1e 16 dd f2 63 72  65 61 74 65 63 6f 6e 66  |......createconf|
00002b30  69 67 66 69 6c 65 0d 0f  28 08 ea 20 41 25 0d 0f  |igfile..(.. A%..|
00002b40  32 1c 41 25 3d ae 28 61  70 70 64 69 72 24 2b 22  |2.A%=.(appdir$+"|
00002b50  2e 43 68 6f 69 63 65 73  22 29 0d 0f 3c 2f d5 23  |.Choices")..</.#|
00002b60  41 25 2c 22 23 20 43 6f  6e 66 69 67 20 61 6e 64  |A%,"# Config and|
00002b70  20 42 42 53 20 64 61 74  61 20 66 6f 72 20 21 4d  | BBS data for !M|
00002b80  61 69 6c 46 6f 72 6d 74  22 0d 0f 46 2f d5 23 41  |ailFormt"..F/.#A|
00002b90  25 2c 22 23 20 56 65 72  73 69 6f 6e 20 31 2e 35  |%,"# Version 1.5|
00002ba0  30 20 28 43 29 20 4a 6f  6e 20 52 69 70 6c 65 79  |0 (C) Jon Ripley|
00002bb0  20 31 39 39 37 2f 38 22  0d 0f 50 0b d5 23 41 25  | 1997/8"..P..#A%|
00002bc0  2c 22 22 0d 0f 5a 24 d5  23 41 25 2c 22 23 20 44  |,""..Z$.#A%,"# D|
00002bd0  65 66 61 75 6c 74 20 42  42 53 3a 20 41 72 63 61  |efault BBS: Arca|
00002be0  64 65 20 42 42 53 22 0d  0f 64 0b d5 23 41 25 2c  |de BBS"..d..#A%,|
00002bf0  22 22 0d 0f 6e 2c d5 23  41 25 2c 22 23 20 46 6f  |""..n,.#A%,"# Fo|
00002c00  72 6d 61 74 20 69 73 20  2e 2e 2e 20 28 77 69 74  |rmat is ... (wit|
00002c10  68 6f 75 74 20 74 68 65  20 27 23 27 29 22 0d 0f  |hout the '#')"..|
00002c20  78 38 d5 23 41 25 2c 22  23 20 42 42 53 20 4e 61  |x8.#A%,"# BBS Na|
00002c30  6d 65 2c 69 6e 74 65 72  6e 61 6c 20 6d 61 69 6c  |me,internal mail|
00002c40  2c 65 2d 6d 61 69 6c 2c  6e 65 74 6d 61 69 6c 2c  |,e-mail,netmail,|
00002c50  40 61 72 65 61 22 0d 0f  82 0b d5 23 41 25 2c 22  |@area".....#A%,"|
00002c60  22 0d 0f 8c 46 d5 23 41  25 2c 22 41 72 63 61 64  |"...F.#A%,"Arcad|
00002c70  65 20 42 42 53 2c 3c 6d  61 69 6c 3e 20 2d 3e 2c  |e BBS,<mail> ->,|
00002c80  3c 6d 73 67 3e 20 40 31  39 36 20 2d 3e 45 6d 61  |<msg> @196 ->Ema|
00002c90  69 6c 2c 3c 6e 65 74 6d  61 69 6c 3e 20 2d 3e 2c  |il,<netmail> ->,|
00002ca0  3c 6d 73 67 3e 20 22 0d  0f 96 46 d5 23 41 25 2c  |<msg> "...F.#A%,|
00002cb0  22 41 72 63 54 69 63 20  42 42 53 2c 3c 6d 61 69  |"ArcTic BBS,<mai|
00002cc0  6c 3e 20 2d 3e 2c 3c 6d  73 67 3e 20 40 31 35 30  |l> ->,<msg> @150|
00002cd0  20 2d 3e 45 6d 61 69 6c  2c 3c 6e 65 74 6d 61 69  | ->Email,<netmai|
00002ce0  6c 3e 20 2d 3e 2c 3c 6d  73 67 3e 20 22 0d 0f a0  |l> ->,<msg> "...|
00002cf0  59 d5 23 41 25 2c 22 44  69 67 69 74 61 6c 20 44  |Y.#A%,"Digital D|
00002d00  61 74 61 62 61 6e 6b 20  42 42 53 2c 3c 6d 61 69  |atabank BBS,<mai|
00002d10  6c 3e 20 2d 3e 2c 3c 6d  73 67 3e 20 40 32 35 34  |l> ->,<msg> @254|
00002d20  20 2d 3e 44 69 67 69 4c  69 6e 6b 20 45 6d 61 69  | ->DigiLink Emai|
00002d30  6c 2c 3c 6e 65 74 6d 61  69 6c 3e 20 2d 3e 2c 3c  |l,<netmail> ->,<|
00002d40  6d 73 67 3e 20 22 0d 0f  aa 08 d9 23 41 25 0d 0f  |msg> ".....#A%..|
00002d50  b4 25 ff 22 53 65 74 74  79 70 65 20 3c 4f 62 65  |.%."Settype <Obe|
00002d60  79 24 44 69 72 3e 2e 43  68 6f 69 63 65 73 20 46  |y$Dir>.Choices F|
00002d70  46 46 22 0d 0f be 05 e1  0d 0f c8 10 dd a4 72 65  |FF"...........re|
00002d80  61 64 63 6f 6e 66 69 67  0d 0f d2 13 ea 20 41 25  |adconfig..... A%|
00002d90  2c 72 65 6d 2c 70 6f 73  2c 41 24 0d 0f dc 20 62  |,rem,pos,A$... b|
00002da0  62 73 24 28 30 2c 30 29  3d 22 4e 6f 20 42 42 53  |bs$(0,0)="No BBS|
00002db0  20 53 65 6c 65 63 74 65  64 2e 22 0d 0f e6 0c 63  | Selected."....c|
00002dc0  75 72 62 62 73 3d 30 0d  0f f0 1c 41 25 3d 8e 28  |urbbs=0....A%=.(|
00002dd0  61 70 70 64 69 72 24 2b  22 2e 43 68 6f 69 63 65  |appdir$+".Choice|
00002de0  73 22 29 0d 0f fa 29 e7  20 41 25 3d 30 20 f2 63  |s")...). A%=0 .c|
00002df0  72 65 61 74 65 63 6f 6e  66 69 67 66 69 6c 65 3a  |reateconfigfile:|
00002e00  3d a4 72 65 61 64 63 6f  6e 66 69 67 0d 10 04 09  |=.readconfig....|
00002e10  70 6f 73 3d 31 0d 10 0e  05 f5 0d 10 18 09 72 65  |pos=1.........re|
00002e20  6d 3d a3 0d 10 22 0b 41  24 3d be 23 41 25 0d 10  |m=...".A$=.#A%..|
00002e30  2c 1e e7 20 c0 41 24 2c  31 29 3d 22 23 22 20 84  |,.. .A$,1)="#" .|
00002e40  20 41 24 3d 22 22 20 72  65 6d 3d b9 0d 10 36 23  | A$="" rem=...6#|
00002e50  e7 20 ac 20 72 65 6d 20  f2 72 65 61 64 62 62 73  |. . rem .readbbs|
00002e60  28 41 24 2c 70 6f 73 29  3a 70 6f 73 2b 3d 31 0d  |(A$,pos):pos+=1.|
00002e70  10 40 09 fd c5 23 41 25  0d 10 4a 08 d9 23 41 25  |.@...#A%..J..#A%|
00002e80  0d 10 54 08 3d 70 6f 73  0d 10 5e 15 dd f2 72 65  |..T.=pos..^...re|
00002e90  61 64 62 62 73 28 41 24  2c 70 6f 73 29 0d 10 68  |adbbs(A$,pos)..h|
00002ea0  1c ea 20 74 65 6d 70 2c  74 65 6d 70 32 2c 74 65  |.. temp,temp2,te|
00002eb0  6d 70 33 2c 74 65 6d 70  34 0d 10 72 11 74 65 6d  |mp3,temp4..r.tem|
00002ec0  70 3d a7 41 24 2c 22 2c  22 29 0d 10 7c 19 74 65  |p=.A$,",")..|.te|
00002ed0  6d 70 32 3d a7 41 24 2c  22 2c 22 2c 74 65 6d 70  |mp2=.A$,",",temp|
00002ee0  2b 31 29 0d 10 86 1a 74  65 6d 70 33 3d a7 41 24  |+1)....temp3=.A$|
00002ef0  2c 22 2c 22 2c 74 65 6d  70 32 2b 31 29 0d 10 90  |,",",temp2+1)...|
00002f00  1a 74 65 6d 70 34 3d a7  41 24 2c 22 2c 22 2c 74  |.temp4=.A$,",",t|
00002f10  65 6d 70 33 2b 31 29 0d  10 9a 1b 62 62 73 24 28  |emp3+1)....bbs$(|
00002f20  70 6f 73 2c 30 29 3d c0  41 24 2c 74 65 6d 70 2d  |pos,0)=.A$,temp-|
00002f30  31 29 0d 10 a4 28 62 62  73 24 28 70 6f 73 2c 31  |1)...(bbs$(pos,1|
00002f40  29 3d c1 41 24 2c 74 65  6d 70 2b 31 2c 74 65 6d  |)=.A$,temp+1,tem|
00002f50  70 32 2d 74 65 6d 70 2d  31 29 0d 10 ae 2a 62 62  |p2-temp-1)...*bb|
00002f60  73 24 28 70 6f 73 2c 32  29 3d c1 41 24 2c 74 65  |s$(pos,2)=.A$,te|
00002f70  6d 70 32 2b 31 2c 74 65  6d 70 33 2d 74 65 6d 70  |mp2+1,temp3-temp|
00002f80  32 2d 31 29 0d 10 b8 2a  62 62 73 24 28 70 6f 73  |2-1)...*bbs$(pos|
00002f90  2c 33 29 3d c1 41 24 2c  74 65 6d 70 33 2b 31 2c  |,3)=.A$,temp3+1,|
00002fa0  74 65 6d 70 34 2d 74 65  6d 70 33 2d 31 29 0d 10  |temp4-temp3-1)..|
00002fb0  c2 1c 62 62 73 24 28 70  6f 73 2c 34 29 3d c1 41  |..bbs$(pos,4)=.A|
00002fc0  24 2c 74 65 6d 70 34 2b  31 29 0d 10 cc 05 e1 0d  |$,temp4+1)......|
00002fd0  10 d6 14 dd 20 f2 6f 70  65 6e 5f 62 62 73 5f 6d  |.... .open_bbs_m|
00002fe0  65 6e 75 0d 10 e0 26 ea  20 70 74 72 25 2c 6d 65  |enu...&. ptr%,me|
00002ff0  6e 75 24 2c 74 79 70 65  25 2c 6e 61 6d 65 24 2c  |nu$,type%,name$,|
00003000  73 6d 65 6e 75 25 2c 66  24 0d 10 ea 14 73 6d 65  |smenu%,f$....sme|
00003010  6e 75 25 3d 62 62 73 5f  6d 65 6e 75 25 0d 10 f4  |nu%=bbs_menu%...|
00003020  12 24 73 6d 65 6e 75 25  3d 22 42 42 53 73 22 0d  |.$smenu%="BBSs".|
00003030  10 fe 14 73 6d 65 6e 75  25 21 31 32 3d 26 37 30  |...smenu%!12=&70|
00003040  32 30 37 0d 11 08 11 73  6d 65 6e 75 25 21 31 36  |207....smenu%!16|
00003050  3d 32 30 38 0d 11 12 10  73 6d 65 6e 75 25 21 32  |=208....smenu%!2|
00003060  30 3d 34 30 0d 11 1c 0f  73 6d 65 6e 75 25 21 32  |0=40....smenu%!2|
00003070  34 3d 30 0d 11 26 0e 73  6d 65 6e 75 25 2b 3d 32  |4=0..&.smenu%+=2|
00003080  38 0d 11 30 13 e7 20 6e  75 6d 6f 66 62 62 73 3c  |8..0.. numofbbs<|
00003090  3e 31 20 8c 0d 11 3a 1c  20 e3 20 70 74 72 25 20  |>1 ...:. . ptr% |
000030a0  3d 20 31 20 b8 20 6e 75  6d 6f 66 62 62 73 2d 31  |= 1 . numofbbs-1|
000030b0  0d 11 44 2c 20 20 20 f2  61 64 64 5f 73 6f 75 72  |..D,   .add_sour|
000030c0  63 65 5f 69 74 65 6d 28  c0 62 62 73 24 28 70 74  |ce_item(.bbs$(pt|
000030d0  72 25 2c 30 29 2c 31 32  29 2c 30 29 0d 11 4e 06  |r%,0),12),0)..N.|
000030e0  20 ed 0d 11 58 05 cd 0d  11 62 39 e7 20 73 6d 65  | ...X....b9. sme|
000030f0  6e 75 25 3d 62 62 73 5f  6d 65 6e 75 25 2b 32 38  |nu%=bbs_menu%+28|
00003100  20 8c 20 f2 61 64 64 5f  73 6f 75 72 63 65 5f 69  | . .add_source_i|
00003110  74 65 6d 28 22 4e 6f 20  42 42 53 73 22 2c 30 29  |tem("No BBSs",0)|
00003120  0d 11 6c 1f 73 6d 65 6e  75 25 21 2d 32 34 3d 73  |..l.smenu%!-24=s|
00003130  6d 65 6e 75 25 21 2d 32  34 20 84 20 26 38 30 0d  |menu%!-24 . &80.|
00003140  11 76 1a f2 74 69 63 6b  28 73 6d 65 6e 75 25 2c  |.v..tick(smenu%,|
00003150  63 75 72 62 62 73 2c 31  29 0d 11 80 2b f2 6f 70  |curbbs,1)...+.op|
00003160  65 6e 5f 6d 65 6e 75 28  62 62 73 5f 6d 65 6e 75  |en_menu(bbs_menu|
00003170  25 2c 6d 6f 75 73 65 5f  78 25 2c 6d 6f 75 73 65  |%,mouse_x%,mouse|
00003180  5f 79 25 29 0d 11 8a 05  e1 0d 11 94 23 dd 20 f2  |_y%)........#. .|
00003190  61 64 64 5f 73 6f 75 72  63 65 5f 69 74 65 6d 28  |add_source_item(|
000031a0  6e 61 6d 65 24 2c 77 61  6c 6b 25 29 0d 11 9e 16  |name$,walk%)....|
000031b0  24 28 73 6d 65 6e 75 25  2b 31 32 29 3d 6e 61 6d  |$(smenu%+12)=nam|
000031c0  65 24 0d 11 a8 11 21 73  6d 65 6e 75 25 3d 77 61  |e$....!smenu%=wa|
000031d0  6c 6b 25 0d 11 b2 0f 73  6d 65 6e 75 25 21 34 3d  |lk%....smenu%!4=|
000031e0  2d 31 0d 11 bc 15 73 6d  65 6e 75 25 21 38 3d 26  |-1....smenu%!8=&|
000031f0  37 30 30 30 30 32 31 0d  11 c6 0e 73 6d 65 6e 75  |7000021....smenu|
00003200  25 2b 3d 32 34 0d 11 d0  05 e1 0d 11 da 2a dd 20  |%+=24........*. |
00003210  f2 6f 70 65 6e 5f 6d 65  6e 75 28 6d 65 6e 75 5f  |.open_menu(menu_|
00003220  68 61 6e 64 6c 65 25 2c  78 70 6f 73 25 2c 79 70  |handle%,xpos%,yp|
00003230  6f 73 25 29 0d 11 e4 14  ea 20 69 74 65 6d 73 25  |os%)..... items%|
00003240  2c 64 6f 74 74 65 64 25  0d 11 ee 0c 69 74 65 6d  |,dotted%....item|
00003250  73 25 3d 30 0d 11 f8 0d  64 6f 74 74 65 64 25 3d  |s%=0....dotted%=|
00003260  30 0d 12 02 2c c8 95 20  28 28 6d 65 6e 75 5f 68  |0...,.. ((menu_h|
00003270  61 6e 64 6c 65 25 21 28  32 38 2b 69 74 65 6d 73  |andle%!(28+items|
00003280  25 2a 32 34 29 29 80 31  32 38 29 3d 30 0d 12 0c  |%*24)).128)=0...|
00003290  0e 20 69 74 65 6d 73 25  2b 3d 31 0d 12 16 30 20  |. items%+=1...0 |
000032a0  e7 20 6d 65 6e 75 5f 68  61 6e 64 6c 65 25 21 28  |. menu_handle%!(|
000032b0  32 38 2b 69 74 65 6d 73  25 2a 32 34 29 3d 32 20  |28+items%*24)=2 |
000032c0  20 64 6f 74 74 65 64 25  2b 3d 31 0d 12 20 05 ce  | dotted%+=1.. ..|
000032d0  0d 12 2a 11 6d 65 6e 75  5f 78 25 3d 78 70 6f 73  |..*.menu_x%=xpos|
000032e0  25 0d 12 34 11 6d 65 6e  75 5f 79 25 3d 79 70 6f  |%..4.menu_y%=ypo|
000032f0  73 25 0d 12 3e 0f e7 20  79 70 6f 73 25 3d 30 20  |s%..>.. ypos%=0 |
00003300  8c 0d 12 48 27 20 79 70  6f 73 25 3d 31 34 34 2b  |...H' ypos%=144+|
00003310  28 69 74 65 6d 73 25 2a  34 34 29 2b 28 64 6f 74  |(items%*44)+(dot|
00003320  74 65 64 25 2a 32 32 29  0d 12 52 05 cc 0d 12 5c  |ted%*22)..R....\|
00003330  0e 20 79 70 6f 73 25 2b  3d 32 30 0d 12 66 05 cd  |. ypos%+=20..f..|
00003340  0d 12 70 34 c8 99 22 57  69 6d 70 5f 43 72 65 61  |..p4.."Wimp_Crea|
00003350  74 65 4d 65 6e 75 22 2c  2c 6d 65 6e 75 5f 68 61  |teMenu",,menu_ha|
00003360  6e 64 6c 65 25 2c 78 70  6f 73 25 2d 36 34 2c 79  |ndle%,xpos%-64,y|
00003370  70 6f 73 25 0d 12 7a 1b  6c 61 73 74 5f 6d 65 6e  |pos%..z.last_men|
00003380  75 25 3d 6d 65 6e 75 5f  68 61 6e 64 6c 65 25 0d  |u%=menu_handle%.|
00003390  12 84 05 e1 0d 12 8e 20  dd 20 f2 6d 65 6e 75 73  |....... . .menus|
000033a0  65 6c 65 63 74 28 62 61  73 65 25 2c 68 61 6e 64  |elect(base%,hand|
000033b0  6c 65 25 29 0d 12 98 11  ea 20 69 74 65 6d 73 25  |le%)..... items%|
000033c0  2c 69 74 65 6d 0d 12 a2  0f 69 74 65 6d 3d 21 62  |,item....item=!b|
000033d0  6c 6f 63 6b 0d 12 ac 23  c8 99 20 22 57 69 6d 70  |lock...#.. "Wimp|
000033e0  5f 47 65 74 50 6f 69 6e  74 65 72 49 6e 66 6f 22  |_GetPointerInfo"|
000033f0  2c 2c 62 61 73 65 25 0d  12 b6 16 61 64 6a 25 3d  |,,base%....adj%=|
00003400  28 62 6c 6f 63 6b 21 38  20 80 20 31 29 0d 12 c0  |(block!8 . 1)...|
00003410  10 c8 8e 20 68 61 6e 64  6c 65 25 20 ca 0d 12 ca  |... handle% ....|
00003420  1f 20 20 c9 20 6d 65 6e  75 20 3a 20 e7 20 69 74  |.  . menu : . it|
00003430  65 6d 3d 31 20 71 75 69  74 25 3d b9 0d 12 d4 11  |em=1 quit%=.....|
00003440  20 20 c9 20 62 62 73 5f  6d 65 6e 75 25 0d 12 de  |  . bbs_menu%...|
00003450  25 20 20 20 20 e7 20 24  28 62 62 73 5f 6d 65 6e  |%    . $(bbs_men|
00003460  75 25 2b 31 32 29 3d 22  4e 6f 20 42 42 53 73 22  |u%+12)="No BBSs"|
00003470  20 8c 0d 12 e8 1c 20 20  20 20 20 20 24 62 62 73  | .....      $bbs|
00003480  6e 61 6d 65 3d 62 62 73  24 28 30 2c 30 29 0d 12  |name=bbs$(0,0)..|
00003490  f2 12 20 20 20 20 20 20  63 75 72 62 62 73 3d 30  |..      curbbs=0|
000034a0  0d 12 fc 09 20 20 20 20  cc 0d 13 06 17 20 20 20  |....    .....   |
000034b0  20 20 20 63 75 72 62 62  73 3d 69 74 65 6d 2b 31  |   curbbs=item+1|
000034c0  0d 13 10 21 20 20 20 20  20 20 24 62 62 73 6e 61  |...!      $bbsna|
000034d0  6d 65 3d 62 62 73 24 28  63 75 72 62 62 73 2c 30  |me=bbs$(curbbs,0|
000034e0  29 0d 13 1a 26 20 20 f4  20 49 46 20 61 64 6a 25  |)...&  . IF adj%|
000034f0  20 54 48 45 4e 20 50 52  4f 43 6f 70 65 6e 5f 62  | THEN PROCopen_b|
00003500  62 73 5f 6d 65 6e 75 0d  13 24 13 20 20 20 20 20  |bs_menu..$.     |
00003510  20 69 74 65 6d 73 25 3d  2d 31 0d 13 2e 2f 20 20  | items%=-1.../  |
00003520  20 20 20 20 c8 95 20 28  28 62 62 73 5f 6d 65 6e  |    .. ((bbs_men|
00003530  75 25 21 28 32 38 2b 69  74 65 6d 73 25 2a 32 34  |u%!(28+items%*24|
00003540  29 29 80 31 32 38 29 3d  30 0d 13 38 15 20 20 20  |)).128)=0..8.   |
00003550  20 20 20 20 20 69 74 65  6d 73 25 2b 3d 31 0d 13  |     items%+=1..|
00003560  42 43 20 20 20 20 20 20  20 20 e7 20 a4 74 69 63  |BC        . .tic|
00003570  6b 65 64 28 62 62 73 5f  6d 65 6e 75 25 2c 69 74  |ked(bbs_menu%,it|
00003580  65 6d 73 25 29 20 8c 20  f2 74 6f 67 67 6c 65 28  |ems%) . .toggle(|
00003590  62 62 73 5f 6d 65 6e 75  25 2c 69 74 65 6d 73 25  |bbs_menu%,items%|
000035a0  29 0d 13 4c 0b 20 20 20  20 20 20 ce 0d 13 56 21  |)..L.      ...V!|
000035b0  20 20 20 20 20 20 f2 74  6f 67 67 6c 65 28 62 62  |      .toggle(bb|
000035c0  73 5f 6d 65 6e 75 25 2c  69 74 65 6d 29 0d 13 60  |s_menu%,item)..`|
000035d0  11 20 20 20 20 20 20 f2  75 70 64 61 74 65 0d 13  |.      .update..|
000035e0  6a 09 20 20 20 20 cd 0d  13 74 05 cb 0d 13 7e 33  |j.    ...t....~3|
000035f0  e7 20 61 64 6a 25 20 8c  20 f2 6f 70 65 6e 5f 6d  |. adj% . .open_m|
00003600  65 6e 75 28 6c 61 73 74  5f 6d 65 6e 75 25 2c 6d  |enu(last_menu%,m|
00003610  65 6e 75 5f 78 25 2c 6d  65 6e 75 5f 79 25 29 0d  |enu_x%,menu_y%).|
00003620  13 88 05 e1 0d 13 92 21  dd 20 f2 74 6f 67 67 6c  |.......!. .toggl|
00003630  65 28 6d 65 6e 75 5f 68  61 6e 64 6c 65 25 2c 69  |e(menu_handle%,i|
00003640  74 65 6d 25 29 0d 13 9c  3b 6d 65 6e 75 5f 68 61  |tem%)...;menu_ha|
00003650  6e 64 6c 65 25 21 28 32  38 2b 32 34 2a 69 74 65  |ndle%!(28+24*ite|
00003660  6d 25 29 3d 6d 65 6e 75  5f 68 61 6e 64 6c 65 25  |m%)=menu_handle%|
00003670  21 28 32 38 2b 32 34 2a  69 74 65 6d 25 29 82 31  |!(28+24*item%).1|
00003680  0d 13 a6 05 e1 0d 13 b0  26 dd 20 f2 74 69 63 6b  |........&. .tick|
00003690  28 6d 65 6e 75 5f 68 61  6e 64 6c 65 25 2c 69 74  |(menu_handle%,it|
000036a0  65 6d 25 2c 73 74 61 74  65 25 29 0d 13 ba 46 6d  |em%,state%)...Fm|
000036b0  65 6e 75 5f 68 61 6e 64  6c 65 25 21 28 32 38 2b  |enu_handle%!(28+|
000036c0  32 34 2a 69 74 65 6d 25  29 3d 28 6d 65 6e 75 5f  |24*item%)=(menu_|
000036d0  68 61 6e 64 6c 65 25 21  28 32 38 2b 32 34 2a 69  |handle%!(28+24*i|
000036e0  74 65 6d 25 29 80 32 35  34 29 2d 73 74 61 74 65  |tem%).254)-state|
000036f0  25 0d 13 c4 05 e1 0d 13  ce 21 dd 20 a4 74 69 63  |%........!. .tic|
00003700  6b 65 64 28 6d 65 6e 75  5f 68 61 6e 64 6c 65 25  |ked(menu_handle%|
00003710  2c 69 74 65 6d 25 29 0d  13 d8 25 3d 28 6d 65 6e  |,item%)...%=(men|
00003720  75 5f 68 61 6e 64 6c 65  25 21 28 32 38 2b 32 34  |u_handle%!(28+24|
00003730  2a 69 74 65 6d 25 29 80  31 29 3d 31 0d ff        |*item%).1)=1..|
0000373e