Home » Archimedes archive » Acorn User » AU 1998-02 B.adf » JFShared » !JFShared/BasicLib/ExtEditLib

!JFShared/BasicLib/ExtEditLib

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-02 B.adf » JFShared
Filename: !JFShared/BasicLib/ExtEditLib
Read OK:
File size: 2DEE bytes
Load address: 0000
Exec address: 0000
File contents
   10REM >External edit library
   20REM LEN Justin Fletcher, 1995
   30REM Requires WimpLib from JFShared to have been loaded
   40REM Version 1.05 : (08 Aug 1997)
   50ERROR 0,"Do not run the ExtEditLib in this way"
   60:
   70REM PROCee_init : Initialise library
   80DEFPROCee_init
   90DIM exth% 64*16
  100FORI=0TO63*16 STEP 4:exth%!I=-1:NEXT
  110exttop%=-1:extstatus=0:extcode=0:extref=0
  120ENDPROC
  130:
  140REM Internal routines called extedit_
  150REM External routines called ee_
  160REM User routines called edit_
  170:
  180REM exth% handle block
  190REM  0  job number
  200REM  4  edit flags
  210REM  8  task handle
  220REM  12 internal state
  230:
  240REM Internal state : &xccccccc
  250REM ccccc: Internal code used by user program
  260REM    x : flags bits used by ExtEditLib, bits :
  270REM    7 : Set if we are an editor
  280:
  290REM Extstatus :
  300REM CE 0  no operation pending
  310REM C  1  awaiting acknowledgement of start (extcode)
  320REM CE 2  returning new handle in code (-1=not found)
  330REM CE 3  awaiting acknowledgement of save (extcode=num%)
  340REM CE 4  save done (-1=error, 0=ok) - awaiting ack of load
  350REM C  5  returning load results (-1=not ack)
  360REM C  6  awaiting datasaveack (extcode=num%)
  370REM C  7  awaiting confirmation of return
  380REM C  8  awaiting cursor return (extcode=num%)
  390REM C  9  returning position of cursor in extcode
  400REM E  10 awaiting datasaveack (extcode=num%) (equiv. 6)
  410REM E  11 return data ok, next is sendfile (extcode=num%)
  420:
  430REM For a Client :
  440REM The following lines should be added to the 17,18 handler
  450 WHEN 2:IF extstatus=3 THENextcode=0:extstatus=4
  460 WHEN 3:IF extstatus=6 THENPROCextedit_saved
  470 WHEN 4:IF extstatus=4 THENextcode=0:extstatus=5
  480 WHEN &45D81:PROCextedit_ack
  490 WHEN &45D83:PROCextedit_abort(b%!24)
  500 WHEN &45D84:PROCextedit_save(b%!20)
  510 WHEN &45D85:PROCextedit_cursor(b%!24,b%!44)
  520REM The following lines should be added to the 19 handler
  530 WHEN 2:REM Possible DataTransfer abort
  540 WHEN 3:IF extstatus=4 THENextcode=-1:extstatus=5
  550 WHEN &45D80:PROCextedit_noack
  560 WHEN &45D84:PROCextedit_nosave
  570 WHEN &45D85:PROCextedit_cursor(b%!24,-2)
  580REM The program should have routines which handle :-
  590REM Aborted edits :
  600REM  PROCedit_aborted(number,code)
  610REM Save data requests :
  620REM  FNedit_saverq(number,code,type) = 0 for ok to load
  630REM  FNedit_returned(number,code,file$) = 0 for ok
  640:
  650REM For an editor :
  660REM The following lines should be added to the 17,18 handler
  670 WHEN 2:IF extstatus=3 THENextcode=0:extstatus=4
  680 WHEN 3:IF extstatus=6 OR extstatus=10 THENPROCextedit_saved
  690 WHEN 4:IF extstatus=4 THENextcode=0:extstatus=5
  700 WHEN &45D80:PROCedit_requested(b%!20,b%!28,FNstring0(b%+32),FNstring0(b%+52))
  710 WHEN &45D82:PROCextedit_return(b%!24)
  720 WHEN &45D83:PROCextedit_abort(b%!24)
  730 WHEN &45D84:PROCextedit_save(b%!20)
  740REM The following lines should be added to the 19 handler
  750 WHEN 2:REM Possible DataTransfer abort
  760 WHEN 3:IF extstatus=4 THENextcode=-1:extstatus=5
  770 WHEN &45D84:PROCextedit_nosave
  780REM The program should have routines which handle :-
  790REM Aborted edits :
  800REM  PROCedit_aborted(number,code)
  810REM Edit requests :
  820REM  PROCedit_requested(type,flags,parent$,leaf$)
  830REM  (which should call FNee_requestack(flags,code) )
  840REM Save data (to editor) requests :
  850REM  FNedit_saverq(number,code,type) = 0 for ok to load
  860REM  FNedit_savedto(number,code,file$) = 0 for loaded
  870REM Save data (to client) requests :
  880REM  FNedit_returnrq(number,code,datatype,flags) = filename/null
  890REM  PROCedit_saveback(number,code,file$,type,flags)
  900:
  910REM External editting flags (bits) :
  920REM  0  Continue editting
  930REM  1  Selection only
  940REM  2  Read-only
  950REM  3  Immediate execution
  960REM  4  Adjust selection
  970:
  980REM FNee_begin : Start an external editting session
  990REM  returns -1 if not possible
 1000REM  type% = data type (&eeee0ttt)
 1010REM  flags%= editting flags
 1020REM  leaf$ = leaf name for editor
 1030REM  code  = code to refer to file as
 1040REM Valid flags : 0,2,3
 1050DEFFNee_begin(type%,flags%,leaf$,code%)
 1060LOCAL I
 1070num%=FNextedit_handlenum
 1080IF num%=-1 THEN=-1
 1090exth%!(num%*16+12)=code%:PROCextedit_new
 1100IF extcode=-1 THEN
 1110 IF (type% OR &FFF)<>&FFF THENtype%=type% AND &FFF:PROCextedit_new
 1120ENDIF
 1130IF extcode=-1 THEN=-1
 1140=num%
 1150DEFPROCextedit_new:extstatus=1:extcode=num%
 1160PROCextedit_blk(&45D80,52+(LEN(leaf$)+4) AND-4,type%,(exttop%<<6)+num%,flags%)
 1170$(b%+32)=Appname$+CHR$0:$(b%+52)=leaf$+CHR$0
 1180SYS "Wimp_SendMessage",18,b%,0
 1190REPEAT:PROCPoll:UNTIL extstatus=2 OR quit%<>FALSE:extstatus=0
 1200IF extcode=-1 AND quit%=FALSE THEN
 1210 IF type%<&1000 THEN
 1220  a$="Alias$@EditType_"+RIGHT$("00"+STR$~type%,3)
 1230 ELSE
 1240  a$="Alias$@EditType_"+RIGHT$("0000000"+STR$~type%,8)
 1250 ENDIF
 1260 a$=FNsystemvar(a$)
 1270 IF a$<>"" THEN
 1280  SYS "Wimp_StartTask",a$:PROCPoll
 1290  extstatus=1:extcode=num%
 1300  PROCextedit_blk(&45D80,52+(LEN(leaf$)+4) AND-4,type%,(exttop%<<6)+num%,flags%)
 1310  $(b%+32)=Appname$+CHR$0:$(b%+52)=leaf$+CHR$0
 1320  SYS "Wimp_SendMessage",18,b%,0
 1330  REPEAT:PROCPoll:UNTIL extstatus=2 OR quit%<>FALSE:extstatus=0
 1340 ENDIF
 1350ENDIF
 1360IF quit% THENextcode=-1
 1370ENDPROC
 1380DEFPROCextedit_blk(msg%,len%,type%,job%,flags%)
 1390!b%=len%:b%!12=0:b%!16=msg%:b%!20=type%:b%!24=job%:b%!28=flags%
 1400ENDPROC
 1410:
 1420REM FNextedit_handlenum : return file number and set exttop%
 1430DEFFNextedit_handlenum
 1440IF exttop%=-1 THEN
 1450 exttop%=VAL(FNsystemvar("ExtEdit$Seq%JF"))
 1460 IF exttop%=0 THENexttop%=700
 1470 OSCLI("*SetEval ExtEdit$Seq%JF "+STR$(exttop%+1))
 1480ENDIF
 1490num%=-1:FORI=0TO63:IF exth%!(I*16)=-1 THENnum%=I:I=63
 1500NEXT
 1510=num%
 1520:
 1530REM PROCextedit_ack : (I) receive EditAck
 1540DEFPROCextedit_ack
 1550IF extstatus=1 THEN
 1560 extstatus=2:exth%!(extcode*16)=b%!24
 1570 exth%!(extcode*16+4)=b%!28:exth%!(extcode*16+8)=b%!4
 1580 extcode=b%!24
 1590ELSE
 1600 ERROR &802,"Unexpected ExtEditAck message"
 1610ENDIF
 1620ENDPROC
 1630:
 1640REM PROCextedit_noack : (I) no EditAck received
 1650DEFPROCextedit_noack
 1660IF extstatus=1 THENextstatus=2:extcode=-1
 1670ENDPROC
 1680:
 1690REM FNee_sendfile : send a file to an ExtEdit session (E/C)
 1700REM  returns -1 if error, 0 if ok
 1710REM  num%=number of internal job
 1720REM  type=file type (not datatype)
 1730REM  file$ returns name to save as
 1740DEFFNee_sendfile(num%,type%,RETURN file$)
 1750LOCAL job%:job%=FNee_findjob(num%)
 1760IF job%=-1 THENERROR &802,"Attempt to open unknown ExtEdit job"
 1770b%!0=44+(LEN(Appname$)+4) AND-4:b%!12=0
 1780b%!16=&45D84:b%!20=job%:b%!24=0:b%!28=0:b%!32=0
 1790b%!36=-1:b%!40=type%:$(b%+44)=Appname$+CHR$0
 1800SYS "Wimp_SendMessage",18,b%,FNee_findtask(num%)
 1810extstatus=3:extcode=num%
 1820REPEAT:PROCPoll:UNTIL extstatus=4 OR quit%<>FALSE
 1830IF quit% THENextcode=-1
 1840IF extcode=0 THENfile$=FNstring0(b%+44):extref=b%!8
 1850=extcode
 1860:
 1870REM PROCextedit_return : Try to return data to client
 1880DEFPROCextedit_return(job%)
 1890num%=FNee_findnum(job%):type%=b%!40:flags%=b%!28:extref=b%!8
 1900file$=FNedit_returnrq(num%,FNee_findcode(num%),type%,flags%)
 1910IF file$<>"" THEN
 1920 b%!0=44+(LEN(file$)+4) AND-4:b%!12=extref
 1930 b%!16=&45D84:b%!20=job%:b%!24=0:b%!28=0:b%!32=0
 1940 b%!36=-1:b%!40=type% AND &FFF:$(b%+44)=file$+CHR$0
 1950 SYS "Wimp_SendMessage",18,b%,FNee_findtask(num%)
 1960 extstatus=3:extcode=num%
 1970 REPEAT:PROCPoll:UNTIL extstatus=4 OR quit%<>FALSE
 1980 IF quit% THENextcode=-1
 1990 IF extcode=0 THEN
 2000  extstatus=11:extcode=num%:extref=b%!8
 2010  PROCedit_saveback(num%,FNee_findcode(num%),FNstring0(b%+44),type%,flags%)
 2020 ENDIF
 2030ENDIF
 2040ENDPROC
 2050:
 2060REM FNee_sendfiledone : Notify application that save was ok
 2070REM  must be called after FNee_sendfile
 2080DEFFNee_sendfiledone(extcode)
 2090file$=FNstring0(b%+44):b%!0=44+(LEN(file$)+4) AND-4
 2100b%!36=FNfilelength(file$):b%!12=extref:b%!16=3
 2110SYS "Wimp_SendMessage",18,b%,FNee_findtask(extcode)
 2120extstatus=4:extcode=num%
 2130REPEAT:PROCPoll:UNTIL extstatus=5 OR quit%<>FALSE
 2140IF quit% THENextcode=-1
 2150=extcode
 2160:
 2170DEFFNee_findjob(num%):=exth%!(num%*16)
 2180DEFFNee_findflags(num%):=exth%!(num%*16+4)
 2190DEFFNee_findtask(num%):=exth%!(num%*16+8)
 2200DEFFNee_findcode(num%):=exth%!(num%*16+12)
 2210DEFFNee_findnum(job%)
 2220LOCAL f,I:f=-1:FORI=0TO63:IF exth%!(I*16)=job% THENf=I:I=63
 2230NEXT:=f
 2240DEFFNee_findnumfromcode(code%)
 2250LOCAL f,I:f=-1:FORI=0TO63:IF exth%!(I*16+12)=code% AND exth%!(I*16)<>0 THENf=I:I=63
 2260NEXT:=f
 2270DEFFNee_findnext(num%)
 2280REPEAT:num%+=1:UNTIL exth%!(num%*16)<>0 AND exth%!(num%*16)<>-1OR num%>63
 2290IF num%>63 THEN=-1
 2300=num%
 2310:
 2320REM PROCextedit_nosave : (I) no EditDataSave received
 2330DEFPROCextedit_nosave
 2340IF extstatus=3 THENextstatus=4:extcode=-1
 2350ENDPROC
 2360:
 2370REM PROCextedit_abort : (I) a job has aborted
 2380DEFPROCextedit_abort(job%)
 2390num%=FNee_findnum(job%):exth%!(num%*16)=0
 2400PROCedit_aborted(num%,exth%!(num%*16+12))
 2410ENDPROC
 2420:
 2430REM PROCextedit_save : (I) EditDataSave received
 2440DEFPROCextedit_save(job%)
 2450num%=FNee_findnum(job%):extref=b%!8
 2460IF num%=-1 THENENDPROC
 2470IF ((exth%!(num%*16+12)) AND (1<<31))<>0 THEN
 2480 REM We are an editor being asked to load a file. arrgh!
 2490 ok=FNedit_saverq(num%,FNee_findcode(num%),b%!40)
 2500 IF ok=0 THEN
 2510  file$=FNextedit_savename(FNstring0(b%+44))
 2520  b%!0=48+(LEN(file$) AND NOT 3):b%!12=extref:b%!16=2
 2530  $(b%+44)=file$+CHR$0:b%!36=-1:b%!4=FNee_findtask(num%)
 2540  SYS "Wimp_SendMessage",18,b%,b%!4
 2550  extstatus=10:extcode=num%
 2560 ENDIF
 2570ELSE
 2580 ok=FNedit_saverq(num%,FNee_findcode(num%),b%!40)
 2590 IF ok=0 THEN
 2600  file$=FNextedit_savename(FNstring0(b%+44))
 2610  b%!0=44+(LEN(file$)+4) AND-4:b%!12=extref:b%!16=2
 2620  $(b%+44)=file$+CHR$0:b%!36=-1:b%!4=FNee_findtask(num%)
 2630  SYS "Wimp_SendMessage",18,b%,b%!4
 2640  extstatus=6:extcode=num%
 2650 ENDIF
 2660ENDIF
 2670ENDPROC
 2680:
 2690DEFPROCextedit_saved
 2700LOCAL reply,ref:ref=b%!8:file$=FNstring0(b%+44)
 2710IF extstatus=6 THEN
 2720 reply=FNedit_returned(extcode,exth%!(extcode*16+12),file$)
 2730ELSE
 2740 reply=FNedit_savedto(extcode,exth%!(extcode*16+12),file$)
 2750ENDIF
 2760IF reply=0 THEN
 2770 b%!0=44+(LEN(file$)+4) AND-4:b%!16=4:b%!12=ref:b%!8=ref
 2780 $(b%+44)=file$+CHR$0
 2790 SYS "Wimp_SendMessage",17,b%,FNee_findtask(extcode)
 2800ENDIF
 2810SYS "XOS_File",6,file$
 2820extstatus=0
 2830ENDPROC
 2840:
 2850REM FNee_return : Force the return of data
 2860REM  returns 0 for ok
 2870REM  num%  = number of file
 2880REM  flags%= flags
 2890REM  status on ok is data in transferTHEN
 2900REM Valid flags : 0,1
 2910DEFFNee_return(num%,flags%,type%)
 2920LOCAL cnt:job%=FNee_findjob(num%)
 2930b%!0=32:b%!16=&45D82:b%!12=0:b%!20=type%:b%!24=job%:b%!28=flags%
 2940SYS "Wimp_SendMessage",17,b%,FNee_findtask(num%)
 2950extstatus=7:cnt=0
 2960REPEAT
 2970 PROCPoll:cnt+=1
 2980UNTIL extstatus<>7 OR quit% OR cnt=50
 2990IF quit% OR extstatus=7 THENextstatus=0:=-1
 3000=0
 3010:
 3020REM PROCee_abort : Force abortion of edit
 3030REM  num% = number of file
 3040REM flags%= 1 to call PROCedit_aborted
 3050DEFPROCee_abort(num%,flags%)
 3060job%=FNee_findjob(num%):exth%!(num%*16)=0
 3070b%!0=28:b%!16=&45D83:b%!12=0:b%!20=0:b%!24=job%
 3080SYS "Wimp_SendMessage",17,b%,FNee_findtask(num%)
 3090IF (flags% AND 1)=1THENPROCedit_aborted(num%,exth%!(num%*16+12))
 3100ENDPROC
 3110:
 3120REM PROCee_abortall : Force abortion of all
 3130REM flags%= 1 to call PROCedit_aborted
 3140DEFPROCee_abortall(flags%)
 3150LOCAL num%:num%=-1
 3160REPEAT
 3170 num%=FNee_findnext(num%)
 3180 IF num%<>-1 THENPROCee_abort(num%,flags%)
 3190UNTILnum%=-1
 3200ENDPROC
 3210:
 3220REM FNee_setcursor : set cursor position
 3230REM returns previous position (or -2 if no response)
 3240REM  num% = number of file
 3250REM  pos% = cursor position (or -1 to read, -2 for end)
 3260DEFFNee_setcursor(num%,pos%)
 3270job%=FNee_findjob(num%)
 3280b%!0=56:b%!16=&45D85:b%!12=0:b%!20=0:b%!24=job%
 3290b%!28=FNee_findflags(num%):b%!32=pos%:b%!36=-1:b%!40=-1
 3300SYS "Wimp_SendMessage",18,b%,FNee_findtask(num%)
 3310extstatus=8
 3320REPEAT:PROCPoll:UNTIL extstatus<>8 OR quit%
 3330extstatus=0:IF quit% THEN=-1
 3340=extcode
 3350:
 3360DEFPROCextedit_cursor(job%,cur)
 3370extcode=cur:extstatus=9
 3380ENDPROC
 3390:
 3400REM FNee_requestack(flags,code) : Acknowledge request for ExtEdit
 3410REM  flags are modified or passed through
 3420REM  code is internal reference code
 3430REM  returns number of file or -1 if unable to allocate
 3440REM b% block must remain unaltered
 3450DEFFNee_requestack(flags,code)
 3460job%=(b%!24) AND &FFFF:num%=FNextedit_handlenum
 3470IF num%=-1THEN=-1
 3480job%=job%+(((exttop%<<6)+num%)<<16)
 3490exth%!(num%*16+12)=code+(1<<31):exth%!(num%*16)=job%
 3500exth%!(num%*16+4)=flags:exth%!(num%*16+8)=b%!4
 3510b%!12=b%!8:b%!16=&45D81:b%!24=job%:b%!28=flags
 3520SYS "Wimp_SendMessage",17,b%,b%!4
 3530=num%
 3540:
 3550REM FNextedit_savename : Return a name of a scrap file to save to
 3560DEFFNextedit_savename(n$)
 3570IF LEN(n$)>10 THEN="<Wimp$ScrapDir>."+STR$~TIME
 3580LOCAL file$:file$="<Wimp$ScrapDir>."+n$
 3590WHILE FNfiletype(file$)<>-2
 3600 file$="<Wimp$ScrapDir>."+STR$~TIME
 3610ENDWHILE
 3620=file$
 3630:

� >External edit library
� � Justin Fletcher, 1995
8� Requires WimpLib from JFShared to have been loaded
("� Version 1.05 : (08 Aug 1997)
2/� 0,"Do not run the ExtEditLib in this way"
<:
F&� PROCee_init : Initialise library
P
��ee_init
Z� exth% 64*16
d�I=0�63*16 � 4:exth%!I=-1:�
n-exttop%=-1:extstatus=0:extcode=0:extref=0
x�
�:
�'� Internal routines called extedit_
�"� External routines called ee_
� � User routines called edit_
�:
�� exth% handle block
��  0  job number
��  4  edit flags
��  8  task handle
��  12 internal state
�:
� � Internal state : &xccccccc
�/� ccccc: Internal code used by user program
2�    x : flags bits used by ExtEditLib, bits :
$�    7 : Set if we are an editor
:
"� Extstatus :
, � CE 0  no operation pending
67� C  1  awaiting acknowledgement of start (extcode)
@7� CE 2  returning new handle in code (-1=not found)
J;� CE 3  awaiting acknowledgement of save (extcode=num%)
T=� CE 4  save done (-1=error, 0=ok) - awaiting ack of load
^/� C  5  returning load results (-1=not ack)
h/� C  6  awaiting datasaveack (extcode=num%)
r+� C  7  awaiting confirmation of return
|1� C  8  awaiting cursor return (extcode=num%)
�3� C  9  returning position of cursor in extcode
�:� E  10 awaiting datasaveack (extcode=num%) (equiv. 6)
�;� E  11 return data ok, next is sendfile (extcode=num%)
�:
�� For a Client :
�>� The following lines should be added to the 17,18 handler
�- � 2:� extstatus=3 �extcode=0:extstatus=4
�& � 3:� extstatus=6 ��extedit_saved
�- � 4:� extstatus=4 �extcode=0:extstatus=5
� � &45D81:�extedit_ack
�# � &45D83:�extedit_abort(b%!24)
�" � &45D84:�extedit_save(b%!20)
�* � &45D85:�extedit_cursor(b%!24,b%!44)
;� The following lines should be added to the 19 handler
& � 2:� Possible DataTransfer abort
. � 3:� extstatus=4 �extcode=-1:extstatus=5
& � &45D80:�extedit_noack
0 � &45D84:�extedit_nosave
:' � &45D85:�extedit_cursor(b%!24,-2)
D6� The program should have routines which handle :-
N� Aborted edits :
X$�  PROCedit_aborted(number,code)
b� Save data requests :
l9�  FNedit_saverq(number,code,type) = 0 for ok to load
v4�  FNedit_returned(number,code,file$) = 0 for ok
�:
�� For an editor :
�>� The following lines should be added to the 17,18 handler
�- � 2:� extstatus=3 �extcode=0:extstatus=4
�5 � 3:� extstatus=6 � extstatus=10 ��extedit_saved
�- � 4:� extstatus=4 �extcode=0:extstatus=5
�J � &45D80:�edit_requested(b%!20,b%!28,�string0(b%+32),�string0(b%+52))
�$ � &45D82:�extedit_return(b%!24)
�# � &45D83:�extedit_abort(b%!24)
�" � &45D84:�extedit_save(b%!20)
�;� The following lines should be added to the 19 handler
�& � 2:� Possible DataTransfer abort
�. � 3:� extstatus=4 �extcode=-1:extstatus=5
 � &45D84:�extedit_nosave
6� The program should have routines which handle :-
� Aborted edits :
 $�  PROCedit_aborted(number,code)
*� Edit requests :
43�  PROCedit_requested(type,flags,parent$,leaf$)
>7�  (which should call FNee_requestack(flags,code) )
H&� Save data (to editor) requests :
R9�  FNedit_saverq(number,code,type) = 0 for ok to load
\7�  FNedit_savedto(number,code,file$) = 0 for loaded
f&� Save data (to client) requests :
pB�  FNedit_returnrq(number,code,datatype,flags) = filename/null
z6�  PROCedit_saveback(number,code,file$,type,flags)
�:
�&� External editting flags (bits) :
��  0  Continue editting
��  1  Selection only
��  2  Read-only
��  3  Immediate execution
��  4  Adjust selection
�:
�5� FNee_begin : Start an external editting session
�!�  returns -1 if not possible
�$�  type% = data type (&eeee0ttt)
��  flags%= editting flags
�#�  leaf$ = leaf name for editor
'�  code  = code to refer to file as
� Valid flags : 0,2,3
(ݤee_begin(type%,flags%,leaf$,code%)
$� I
.num%=�extedit_handlenum
8� num%=-1 �=-1
B)exth%!(num%*16+12)=code%:�extedit_new
L� extcode=-1 �
V< � (type% � &FFF)<>&FFF �type%=type% � &FFF:�extedit_new
`�
j� extcode=-1 �=-1
t	=num%
~*��extedit_new:extstatus=1:extcode=num%
�K�extedit_blk(&45D80,52+(�(leaf$)+4) �-4,type%,(exttop%<<6)+num%,flags%)
�*$(b%+32)=Appname$+�0:$(b%+52)=leaf$+�0
�!ș "Wimp_SendMessage",18,b%,0
�0�:�Poll:� extstatus=2 � quit%<>�:extstatus=0
�� extcode=-1 � quit%=� �
� � type%<&1000 �
�,  a$="Alias$@EditType_"+�"00"+�~type%,3)
� �
�1  a$="Alias$@EditType_"+�"0000000"+�~type%,8)
� �
� a$=�systemvar(a$)
� � a$<>"" �
"  ș "Wimp_StartTask",a$:�Poll

  extstatus=1:extcode=num%
M  �extedit_blk(&45D80,52+(�(leaf$)+4) �-4,type%,(exttop%<<6)+num%,flags%)
,  $(b%+32)=Appname$+�0:$(b%+52)=leaf$+�0
(#  ș "Wimp_SendMessage",18,b%,0
22  �:�Poll:� extstatus=2 � quit%<>�:extstatus=0
< �
F�
P� quit% �extcode=-1
Z�
d.��extedit_blk(msg%,len%,type%,job%,flags%)
nC!b%=len%:b%!12=0:b%!16=msg%:b%!20=type%:b%!24=job%:b%!28=flags%
x�
�:
�>� FNextedit_handlenum : return file number and set exttop%
�ݤextedit_handlenum
�� exttop%=-1 �
�, exttop%=�(�systemvar("ExtEdit$Seq%JF"))
� � exttop%=0 �exttop%=700
�/ �("*SetEval ExtEdit$Seq%JF "+�(exttop%+1))
��
�2num%=-1:�I=0�63:� exth%!(I*16)=-1 �num%=I:I=63
��
�	=num%
�:
�+� PROCextedit_ack : (I) receive EditAck
��extedit_ack
� extstatus=1 �
) extstatus=2:exth%!(extcode*16)=b%!24
"9 exth%!(extcode*16+4)=b%!28:exth%!(extcode*16+8)=b%!4
, extcode=b%!24
6�
@+ � &802,"Unexpected ExtEditAck message"
J�
T�
^:
h1� PROCextedit_noack : (I) no EditAck received
r��extedit_noack
|)� extstatus=1 �extstatus=2:extcode=-1
��
�:
�=� FNee_sendfile : send a file to an ExtEdit session (E/C)
�#�  returns -1 if error, 0 if ok
�"�  num%=number of internal job
�$�  type=file type (not datatype)
�$�  file$ returns name to save as
�%ݤee_sendfile(num%,type%,� file$)
�!� job%:job%=�ee_findjob(num%)
�;� job%=-1 �� &802,"Attempt to open unknown ExtEdit job"
�'b%!0=44+(�(Appname$)+4) �-4:b%!12=0
�3b%!16=&45D84:b%!20=job%:b%!24=0:b%!28=0:b%!32=0
�-b%!36=-1:b%!40=type%:$(b%+44)=Appname$+�0
2ș "Wimp_SendMessage",18,b%,�ee_findtask(num%)
extstatus=3:extcode=num%
$�:�Poll:� extstatus=4 � quit%<>�
&� quit% �extcode=-1
02� extcode=0 �file$=�string0(b%+44):extref=b%!8
:=extcode
D:
N7� PROCextedit_return : Try to return data to client
X��extedit_return(job%)
b?num%=�ee_findnum(job%):type%=b%!40:flags%=b%!28:extref=b%!8
l>file$=�edit_returnrq(num%,�ee_findcode(num%),type%,flags%)
v� file$<>"" �
�* b%!0=44+(�(file$)+4) �-4:b%!12=extref
�4 b%!16=&45D84:b%!20=job%:b%!24=0:b%!28=0:b%!32=0
�2 b%!36=-1:b%!40=type% � &FFF:$(b%+44)=file$+�0
�3 ș "Wimp_SendMessage",18,b%,�ee_findtask(num%)
� extstatus=3:extcode=num%
�% �:�Poll:� extstatus=4 � quit%<>�
� � quit% �extcode=-1
� � extcode=0 �
�+  extstatus=11:extcode=num%:extref=b%!8
�J  �edit_saveback(num%,�ee_findcode(num%),�string0(b%+44),type%,flags%)
� �
��
��
:
=� FNee_sendfiledone : Notify application that save was ok
)�  must be called after FNee_sendfile
 ݤee_sendfiledone(extcode)
*2file$=�string0(b%+44):b%!0=44+(�(file$)+4) �-4
41b%!36=�filelength(file$):b%!12=extref:b%!16=3
>5ș "Wimp_SendMessage",18,b%,�ee_findtask(extcode)
Hextstatus=4:extcode=num%
R$�:�Poll:� extstatus=5 � quit%<>�
\� quit% �extcode=-1
f=extcode
p:
z'ݤee_findjob(num%):=exth%!(num%*16)
�+ݤee_findflags(num%):=exth%!(num%*16+4)
�*ݤee_findtask(num%):=exth%!(num%*16+8)
�+ݤee_findcode(num%):=exth%!(num%*16+12)
�ݤee_findnum(job%)
�4� f,I:f=-1:�I=0�63:� exth%!(I*16)=job% �f=I:I=63
��:=f
�ݤee_findnumfromcode(code%)
�J� f,I:f=-1:�I=0�63:� exth%!(I*16+12)=code% � exth%!(I*16)<>0 �f=I:I=63
��:=f
�ݤee_findnext(num%)
�A�:num%+=1:� exth%!(num%*16)<>0 � exth%!(num%*16)<>-1� num%>63
�� num%>63 �=-1
�	=num%
	:
	7� PROCextedit_nosave : (I) no EditDataSave received
	��extedit_nosave
	$)� extstatus=3 �extstatus=4:extcode=-1
	.�
	8:
	B/� PROCextedit_abort : (I) a job has aborted
	L��extedit_abort(job%)
	V,num%=�ee_findnum(job%):exth%!(num%*16)=0
	`*�edit_aborted(num%,exth%!(num%*16+12))
	j�
	t:
	~2� PROCextedit_save : (I) EditDataSave received
	���extedit_save(job%)
	�&num%=�ee_findnum(job%):extref=b%!8
	�� num%=-1 ��
	�+� ((exth%!(num%*16+12)) � (1<<31))<>0 �
	�: � We are an editor being asked to load a file. arrgh!
	�3 ok=�edit_saverq(num%,�ee_findcode(num%),b%!40)
	�
 � ok=0 �
	�.  file$=�extedit_savename(�string0(b%+44))
	�3  b%!0=48+(�(file$) � � 3):b%!12=extref:b%!16=2
	�8  $(b%+44)=file$+�0:b%!36=-1:b%!4=�ee_findtask(num%)
	�&  ș "Wimp_SendMessage",18,b%,b%!4
	�  extstatus=10:extcode=num%
 �

�
3 ok=�edit_saverq(num%,�ee_findcode(num%),b%!40)

 � ok=0 �
(.  file$=�extedit_savename(�string0(b%+44))
23  b%!0=44+(�(file$)+4) �-4:b%!12=extref:b%!16=2
<8  $(b%+44)=file$+�0:b%!36=-1:b%!4=�ee_findtask(num%)
F&  ș "Wimp_SendMessage",18,b%,b%!4
P  extstatus=6:extcode=num%
Z �
d�
n�
x:
���extedit_saved
�.� reply,ref:ref=b%!8:file$=�string0(b%+44)
�� extstatus=6 �
�> reply=�edit_returned(extcode,exth%!(extcode*16+12),file$)
��
�= reply=�edit_savedto(extcode,exth%!(extcode*16+12),file$)
��
�� reply=0 �
�8 b%!0=44+(�(file$)+4) �-4:b%!16=4:b%!12=ref:b%!8=ref
� $(b%+44)=file$+�0
�6 ș "Wimp_SendMessage",17,b%,�ee_findtask(extcode)
��
�ș "XOS_File",6,file$
extstatus=0
�
:
",� FNee_return : Force the return of data
,�  returns 0 for ok
6�  num%  = number of file
@�  flags%= flags
J(�  status on ok is data in transfer�
T� Valid flags : 0,1
^"ݤee_return(num%,flags%,type%)
h � cnt:job%=�ee_findjob(num%)
rDb%!0=32:b%!16=&45D82:b%!12=0:b%!20=type%:b%!24=job%:b%!28=flags%
|2ș "Wimp_SendMessage",17,b%,�ee_findtask(num%)
�extstatus=7:cnt=0
��
� �Poll:cnt+=1
�#� extstatus<>7 � quit% � cnt=50
�*� quit% � extstatus=7 �extstatus=0:=-1
�=0
�:
�+� PROCee_abort : Force abortion of edit
��  num% = number of file
�(� flags%= 1 to call PROCedit_aborted
���ee_abort(num%,flags%)
�,job%=�ee_findjob(num%):exth%!(num%*16)=0
�3b%!0=28:b%!16=&45D83:b%!12=0:b%!20=0:b%!24=job%
2ș "Wimp_SendMessage",17,b%,�ee_findtask(num%)
;� (flags% � 1)=1��edit_aborted(num%,exth%!(num%*16+12))
�
&:
0-� PROCee_abortall : Force abortion of all
:(� flags%= 1 to call PROCedit_aborted
D��ee_abortall(flags%)
N� num%:num%=-1
X�
b num%=�ee_findnext(num%)
l' � num%<>-1 ��ee_abort(num%,flags%)
v�num%=-1
��
�:
�*� FNee_setcursor : set cursor position
�6� returns previous position (or -2 if no response)
��  num% = number of file
�9�  pos% = cursor position (or -1 to read, -2 for end)
�ݤee_setcursor(num%,pos%)
�job%=�ee_findjob(num%)
�3b%!0=56:b%!16=&45D85:b%!12=0:b%!20=0:b%!24=job%
�:b%!28=�ee_findflags(num%):b%!32=pos%:b%!36=-1:b%!40=-1
�2ș "Wimp_SendMessage",18,b%,�ee_findtask(num%)
�extstatus=8
�"�:�Poll:� extstatus<>8 � quit%

extstatus=0:� quit% �=-1

=extcode

:

 ��extedit_cursor(job%,cur)

*extcode=cur:extstatus=9

4�

>:

HC� FNee_requestack(flags,code) : Acknowledge request for ExtEdit

R+�  flags are modified or passed through

\&�  code is internal reference code

f9�  returns number of file or -1 if unable to allocate

p$� b% block must remain unaltered

zݤee_requestack(flags,code)

�0job%=(b%!24) � &FFFF:num%=�extedit_handlenum

�� num%=-1�=-1

�'job%=job%+(((exttop%<<6)+num%)<<16)

�8exth%!(num%*16+12)=code+(1<<31):exth%!(num%*16)=job%

�2exth%!(num%*16+4)=flags:exth%!(num%*16+8)=b%!4

�2b%!12=b%!8:b%!16=&45D81:b%!24=job%:b%!28=flags

�$ș "Wimp_SendMessage",17,b%,b%!4

�	=num%

�:

�C� FNextedit_savename : Return a name of a scrap file to save to

�ݤextedit_savename(n$)

�'� �(n$)>10 �="<Wimp$ScrapDir>."+�~�

�'� file$:file$="<Wimp$ScrapDir>."+n$
ȕ �filetype(file$)<>-2
! file$="<Wimp$ScrapDir>."+�~�
�
$
=file$
.:
�
00000000  0d 00 0a 1c f4 20 3e 45  78 74 65 72 6e 61 6c 20  |..... >External |
00000010  65 64 69 74 20 6c 69 62  72 61 72 79 0d 00 14 1d  |edit library....|
00000020  f4 20 a9 20 4a 75 73 74  69 6e 20 46 6c 65 74 63  |. . Justin Fletc|
00000030  68 65 72 2c 20 31 39 39  35 0d 00 1e 38 f4 20 52  |her, 1995...8. R|
00000040  65 71 75 69 72 65 73 20  57 69 6d 70 4c 69 62 20  |equires WimpLib |
00000050  66 72 6f 6d 20 4a 46 53  68 61 72 65 64 20 74 6f  |from JFShared to|
00000060  20 68 61 76 65 20 62 65  65 6e 20 6c 6f 61 64 65  | have been loade|
00000070  64 0d 00 28 22 f4 20 56  65 72 73 69 6f 6e 20 31  |d..(". Version 1|
00000080  2e 30 35 20 3a 20 28 30  38 20 41 75 67 20 31 39  |.05 : (08 Aug 19|
00000090  39 37 29 0d 00 32 2f 85  20 30 2c 22 44 6f 20 6e  |97)..2/. 0,"Do n|
000000a0  6f 74 20 72 75 6e 20 74  68 65 20 45 78 74 45 64  |ot run the ExtEd|
000000b0  69 74 4c 69 62 20 69 6e  20 74 68 69 73 20 77 61  |itLib in this wa|
000000c0  79 22 0d 00 3c 05 3a 0d  00 46 26 f4 20 50 52 4f  |y"..<.:..F&. PRO|
000000d0  43 65 65 5f 69 6e 69 74  20 3a 20 49 6e 69 74 69  |Cee_init : Initi|
000000e0  61 6c 69 73 65 20 6c 69  62 72 61 72 79 0d 00 50  |alise library..P|
000000f0  0d dd f2 65 65 5f 69 6e  69 74 0d 00 5a 11 de 20  |...ee_init..Z.. |
00000100  65 78 74 68 25 20 36 34  2a 31 36 0d 00 64 1f e3  |exth% 64*16..d..|
00000110  49 3d 30 b8 36 33 2a 31  36 20 88 20 34 3a 65 78  |I=0.63*16 . 4:ex|
00000120  74 68 25 21 49 3d 2d 31  3a ed 0d 00 6e 2d 65 78  |th%!I=-1:...n-ex|
00000130  74 74 6f 70 25 3d 2d 31  3a 65 78 74 73 74 61 74  |ttop%=-1:extstat|
00000140  75 73 3d 30 3a 65 78 74  63 6f 64 65 3d 30 3a 65  |us=0:extcode=0:e|
00000150  78 74 72 65 66 3d 30 0d  00 78 05 e1 0d 00 82 05  |xtref=0..x......|
00000160  3a 0d 00 8c 27 f4 20 49  6e 74 65 72 6e 61 6c 20  |:...'. Internal |
00000170  72 6f 75 74 69 6e 65 73  20 63 61 6c 6c 65 64 20  |routines called |
00000180  65 78 74 65 64 69 74 5f  0d 00 96 22 f4 20 45 78  |extedit_...". Ex|
00000190  74 65 72 6e 61 6c 20 72  6f 75 74 69 6e 65 73 20  |ternal routines |
000001a0  63 61 6c 6c 65 64 20 65  65 5f 0d 00 a0 20 f4 20  |called ee_... . |
000001b0  55 73 65 72 20 72 6f 75  74 69 6e 65 73 20 63 61  |User routines ca|
000001c0  6c 6c 65 64 20 65 64 69  74 5f 0d 00 aa 05 3a 0d  |lled edit_....:.|
000001d0  00 b4 18 f4 20 65 78 74  68 25 20 68 61 6e 64 6c  |.... exth% handl|
000001e0  65 20 62 6c 6f 63 6b 0d  00 be 14 f4 20 20 30 20  |e block.....  0 |
000001f0  20 6a 6f 62 20 6e 75 6d  62 65 72 0d 00 c8 14 f4  | job number.....|
00000200  20 20 34 20 20 65 64 69  74 20 66 6c 61 67 73 0d  |  4  edit flags.|
00000210  00 d2 15 f4 20 20 38 20  20 74 61 73 6b 20 68 61  |....  8  task ha|
00000220  6e 64 6c 65 0d 00 dc 18  f4 20 20 31 32 20 69 6e  |ndle.....  12 in|
00000230  74 65 72 6e 61 6c 20 73  74 61 74 65 0d 00 e6 05  |ternal state....|
00000240  3a 0d 00 f0 20 f4 20 49  6e 74 65 72 6e 61 6c 20  |:... . Internal |
00000250  73 74 61 74 65 20 3a 20  26 78 63 63 63 63 63 63  |state : &xcccccc|
00000260  63 0d 00 fa 2f f4 20 63  63 63 63 63 3a 20 49 6e  |c.../. ccccc: In|
00000270  74 65 72 6e 61 6c 20 63  6f 64 65 20 75 73 65 64  |ternal code used|
00000280  20 62 79 20 75 73 65 72  20 70 72 6f 67 72 61 6d  | by user program|
00000290  0d 01 04 32 f4 20 20 20  20 78 20 3a 20 66 6c 61  |...2.    x : fla|
000002a0  67 73 20 62 69 74 73 20  75 73 65 64 20 62 79 20  |gs bits used by |
000002b0  45 78 74 45 64 69 74 4c  69 62 2c 20 62 69 74 73  |ExtEditLib, bits|
000002c0  20 3a 0d 01 0e 24 f4 20  20 20 20 37 20 3a 20 53  | :...$.    7 : S|
000002d0  65 74 20 69 66 20 77 65  20 61 72 65 20 61 6e 20  |et if we are an |
000002e0  65 64 69 74 6f 72 0d 01  18 05 3a 0d 01 22 11 f4  |editor....:.."..|
000002f0  20 45 78 74 73 74 61 74  75 73 20 3a 0d 01 2c 20  | Extstatus :.., |
00000300  f4 20 43 45 20 30 20 20  6e 6f 20 6f 70 65 72 61  |. CE 0  no opera|
00000310  74 69 6f 6e 20 70 65 6e  64 69 6e 67 0d 01 36 37  |tion pending..67|
00000320  f4 20 43 20 20 31 20 20  61 77 61 69 74 69 6e 67  |. C  1  awaiting|
00000330  20 61 63 6b 6e 6f 77 6c  65 64 67 65 6d 65 6e 74  | acknowledgement|
00000340  20 6f 66 20 73 74 61 72  74 20 28 65 78 74 63 6f  | of start (extco|
00000350  64 65 29 0d 01 40 37 f4  20 43 45 20 32 20 20 72  |de)..@7. CE 2  r|
00000360  65 74 75 72 6e 69 6e 67  20 6e 65 77 20 68 61 6e  |eturning new han|
00000370  64 6c 65 20 69 6e 20 63  6f 64 65 20 28 2d 31 3d  |dle in code (-1=|
00000380  6e 6f 74 20 66 6f 75 6e  64 29 0d 01 4a 3b f4 20  |not found)..J;. |
00000390  43 45 20 33 20 20 61 77  61 69 74 69 6e 67 20 61  |CE 3  awaiting a|
000003a0  63 6b 6e 6f 77 6c 65 64  67 65 6d 65 6e 74 20 6f  |cknowledgement o|
000003b0  66 20 73 61 76 65 20 28  65 78 74 63 6f 64 65 3d  |f save (extcode=|
000003c0  6e 75 6d 25 29 0d 01 54  3d f4 20 43 45 20 34 20  |num%)..T=. CE 4 |
000003d0  20 73 61 76 65 20 64 6f  6e 65 20 28 2d 31 3d 65  | save done (-1=e|
000003e0  72 72 6f 72 2c 20 30 3d  6f 6b 29 20 2d 20 61 77  |rror, 0=ok) - aw|
000003f0  61 69 74 69 6e 67 20 61  63 6b 20 6f 66 20 6c 6f  |aiting ack of lo|
00000400  61 64 0d 01 5e 2f f4 20  43 20 20 35 20 20 72 65  |ad..^/. C  5  re|
00000410  74 75 72 6e 69 6e 67 20  6c 6f 61 64 20 72 65 73  |turning load res|
00000420  75 6c 74 73 20 28 2d 31  3d 6e 6f 74 20 61 63 6b  |ults (-1=not ack|
00000430  29 0d 01 68 2f f4 20 43  20 20 36 20 20 61 77 61  |)..h/. C  6  awa|
00000440  69 74 69 6e 67 20 64 61  74 61 73 61 76 65 61 63  |iting datasaveac|
00000450  6b 20 28 65 78 74 63 6f  64 65 3d 6e 75 6d 25 29  |k (extcode=num%)|
00000460  0d 01 72 2b f4 20 43 20  20 37 20 20 61 77 61 69  |..r+. C  7  awai|
00000470  74 69 6e 67 20 63 6f 6e  66 69 72 6d 61 74 69 6f  |ting confirmatio|
00000480  6e 20 6f 66 20 72 65 74  75 72 6e 0d 01 7c 31 f4  |n of return..|1.|
00000490  20 43 20 20 38 20 20 61  77 61 69 74 69 6e 67 20  | C  8  awaiting |
000004a0  63 75 72 73 6f 72 20 72  65 74 75 72 6e 20 28 65  |cursor return (e|
000004b0  78 74 63 6f 64 65 3d 6e  75 6d 25 29 0d 01 86 33  |xtcode=num%)...3|
000004c0  f4 20 43 20 20 39 20 20  72 65 74 75 72 6e 69 6e  |. C  9  returnin|
000004d0  67 20 70 6f 73 69 74 69  6f 6e 20 6f 66 20 63 75  |g position of cu|
000004e0  72 73 6f 72 20 69 6e 20  65 78 74 63 6f 64 65 0d  |rsor in extcode.|
000004f0  01 90 3a f4 20 45 20 20  31 30 20 61 77 61 69 74  |..:. E  10 await|
00000500  69 6e 67 20 64 61 74 61  73 61 76 65 61 63 6b 20  |ing datasaveack |
00000510  28 65 78 74 63 6f 64 65  3d 6e 75 6d 25 29 20 28  |(extcode=num%) (|
00000520  65 71 75 69 76 2e 20 36  29 0d 01 9a 3b f4 20 45  |equiv. 6)...;. E|
00000530  20 20 31 31 20 72 65 74  75 72 6e 20 64 61 74 61  |  11 return data|
00000540  20 6f 6b 2c 20 6e 65 78  74 20 69 73 20 73 65 6e  | ok, next is sen|
00000550  64 66 69 6c 65 20 28 65  78 74 63 6f 64 65 3d 6e  |dfile (extcode=n|
00000560  75 6d 25 29 0d 01 a4 05  3a 0d 01 ae 14 f4 20 46  |um%)....:..... F|
00000570  6f 72 20 61 20 43 6c 69  65 6e 74 20 3a 0d 01 b8  |or a Client :...|
00000580  3e f4 20 54 68 65 20 66  6f 6c 6c 6f 77 69 6e 67  |>. The following|
00000590  20 6c 69 6e 65 73 20 73  68 6f 75 6c 64 20 62 65  | lines should be|
000005a0  20 61 64 64 65 64 20 74  6f 20 74 68 65 20 31 37  | added to the 17|
000005b0  2c 31 38 20 68 61 6e 64  6c 65 72 0d 01 c2 2d 20  |,18 handler...- |
000005c0  c9 20 32 3a e7 20 65 78  74 73 74 61 74 75 73 3d  |. 2:. extstatus=|
000005d0  33 20 8c 65 78 74 63 6f  64 65 3d 30 3a 65 78 74  |3 .extcode=0:ext|
000005e0  73 74 61 74 75 73 3d 34  0d 01 cc 26 20 c9 20 33  |status=4...& . 3|
000005f0  3a e7 20 65 78 74 73 74  61 74 75 73 3d 36 20 8c  |:. extstatus=6 .|
00000600  f2 65 78 74 65 64 69 74  5f 73 61 76 65 64 0d 01  |.extedit_saved..|
00000610  d6 2d 20 c9 20 34 3a e7  20 65 78 74 73 74 61 74  |.- . 4:. extstat|
00000620  75 73 3d 34 20 8c 65 78  74 63 6f 64 65 3d 30 3a  |us=4 .extcode=0:|
00000630  65 78 74 73 74 61 74 75  73 3d 35 0d 01 e0 1a 20  |extstatus=5.... |
00000640  c9 20 26 34 35 44 38 31  3a f2 65 78 74 65 64 69  |. &45D81:.extedi|
00000650  74 5f 61 63 6b 0d 01 ea  23 20 c9 20 26 34 35 44  |t_ack...# . &45D|
00000660  38 33 3a f2 65 78 74 65  64 69 74 5f 61 62 6f 72  |83:.extedit_abor|
00000670  74 28 62 25 21 32 34 29  0d 01 f4 22 20 c9 20 26  |t(b%!24)..." . &|
00000680  34 35 44 38 34 3a f2 65  78 74 65 64 69 74 5f 73  |45D84:.extedit_s|
00000690  61 76 65 28 62 25 21 32  30 29 0d 01 fe 2a 20 c9  |ave(b%!20)...* .|
000006a0  20 26 34 35 44 38 35 3a  f2 65 78 74 65 64 69 74  | &45D85:.extedit|
000006b0  5f 63 75 72 73 6f 72 28  62 25 21 32 34 2c 62 25  |_cursor(b%!24,b%|
000006c0  21 34 34 29 0d 02 08 3b  f4 20 54 68 65 20 66 6f  |!44)...;. The fo|
000006d0  6c 6c 6f 77 69 6e 67 20  6c 69 6e 65 73 20 73 68  |llowing lines sh|
000006e0  6f 75 6c 64 20 62 65 20  61 64 64 65 64 20 74 6f  |ould be added to|
000006f0  20 74 68 65 20 31 39 20  68 61 6e 64 6c 65 72 0d  | the 19 handler.|
00000700  02 12 26 20 c9 20 32 3a  f4 20 50 6f 73 73 69 62  |..& . 2:. Possib|
00000710  6c 65 20 44 61 74 61 54  72 61 6e 73 66 65 72 20  |le DataTransfer |
00000720  61 62 6f 72 74 0d 02 1c  2e 20 c9 20 33 3a e7 20  |abort.... . 3:. |
00000730  65 78 74 73 74 61 74 75  73 3d 34 20 8c 65 78 74  |extstatus=4 .ext|
00000740  63 6f 64 65 3d 2d 31 3a  65 78 74 73 74 61 74 75  |code=-1:extstatu|
00000750  73 3d 35 0d 02 26 1c 20  c9 20 26 34 35 44 38 30  |s=5..&. . &45D80|
00000760  3a f2 65 78 74 65 64 69  74 5f 6e 6f 61 63 6b 0d  |:.extedit_noack.|
00000770  02 30 1d 20 c9 20 26 34  35 44 38 34 3a f2 65 78  |.0. . &45D84:.ex|
00000780  74 65 64 69 74 5f 6e 6f  73 61 76 65 0d 02 3a 27  |tedit_nosave..:'|
00000790  20 c9 20 26 34 35 44 38  35 3a f2 65 78 74 65 64  | . &45D85:.exted|
000007a0  69 74 5f 63 75 72 73 6f  72 28 62 25 21 32 34 2c  |it_cursor(b%!24,|
000007b0  2d 32 29 0d 02 44 36 f4  20 54 68 65 20 70 72 6f  |-2)..D6. The pro|
000007c0  67 72 61 6d 20 73 68 6f  75 6c 64 20 68 61 76 65  |gram should have|
000007d0  20 72 6f 75 74 69 6e 65  73 20 77 68 69 63 68 20  | routines which |
000007e0  68 61 6e 64 6c 65 20 3a  2d 0d 02 4e 15 f4 20 41  |handle :-..N.. A|
000007f0  62 6f 72 74 65 64 20 65  64 69 74 73 20 3a 0d 02  |borted edits :..|
00000800  58 24 f4 20 20 50 52 4f  43 65 64 69 74 5f 61 62  |X$.  PROCedit_ab|
00000810  6f 72 74 65 64 28 6e 75  6d 62 65 72 2c 63 6f 64  |orted(number,cod|
00000820  65 29 0d 02 62 1a f4 20  53 61 76 65 20 64 61 74  |e)..b.. Save dat|
00000830  61 20 72 65 71 75 65 73  74 73 20 3a 0d 02 6c 39  |a requests :..l9|
00000840  f4 20 20 46 4e 65 64 69  74 5f 73 61 76 65 72 71  |.  FNedit_saverq|
00000850  28 6e 75 6d 62 65 72 2c  63 6f 64 65 2c 74 79 70  |(number,code,typ|
00000860  65 29 20 3d 20 30 20 66  6f 72 20 6f 6b 20 74 6f  |e) = 0 for ok to|
00000870  20 6c 6f 61 64 0d 02 76  34 f4 20 20 46 4e 65 64  | load..v4.  FNed|
00000880  69 74 5f 72 65 74 75 72  6e 65 64 28 6e 75 6d 62  |it_returned(numb|
00000890  65 72 2c 63 6f 64 65 2c  66 69 6c 65 24 29 20 3d  |er,code,file$) =|
000008a0  20 30 20 66 6f 72 20 6f  6b 0d 02 80 05 3a 0d 02  | 0 for ok....:..|
000008b0  8a 15 f4 20 46 6f 72 20  61 6e 20 65 64 69 74 6f  |... For an edito|
000008c0  72 20 3a 0d 02 94 3e f4  20 54 68 65 20 66 6f 6c  |r :...>. The fol|
000008d0  6c 6f 77 69 6e 67 20 6c  69 6e 65 73 20 73 68 6f  |lowing lines sho|
000008e0  75 6c 64 20 62 65 20 61  64 64 65 64 20 74 6f 20  |uld be added to |
000008f0  74 68 65 20 31 37 2c 31  38 20 68 61 6e 64 6c 65  |the 17,18 handle|
00000900  72 0d 02 9e 2d 20 c9 20  32 3a e7 20 65 78 74 73  |r...- . 2:. exts|
00000910  74 61 74 75 73 3d 33 20  8c 65 78 74 63 6f 64 65  |tatus=3 .extcode|
00000920  3d 30 3a 65 78 74 73 74  61 74 75 73 3d 34 0d 02  |=0:extstatus=4..|
00000930  a8 35 20 c9 20 33 3a e7  20 65 78 74 73 74 61 74  |.5 . 3:. extstat|
00000940  75 73 3d 36 20 84 20 65  78 74 73 74 61 74 75 73  |us=6 . extstatus|
00000950  3d 31 30 20 8c f2 65 78  74 65 64 69 74 5f 73 61  |=10 ..extedit_sa|
00000960  76 65 64 0d 02 b2 2d 20  c9 20 34 3a e7 20 65 78  |ved...- . 4:. ex|
00000970  74 73 74 61 74 75 73 3d  34 20 8c 65 78 74 63 6f  |tstatus=4 .extco|
00000980  64 65 3d 30 3a 65 78 74  73 74 61 74 75 73 3d 35  |de=0:extstatus=5|
00000990  0d 02 bc 4a 20 c9 20 26  34 35 44 38 30 3a f2 65  |...J . &45D80:.e|
000009a0  64 69 74 5f 72 65 71 75  65 73 74 65 64 28 62 25  |dit_requested(b%|
000009b0  21 32 30 2c 62 25 21 32  38 2c a4 73 74 72 69 6e  |!20,b%!28,.strin|
000009c0  67 30 28 62 25 2b 33 32  29 2c a4 73 74 72 69 6e  |g0(b%+32),.strin|
000009d0  67 30 28 62 25 2b 35 32  29 29 0d 02 c6 24 20 c9  |g0(b%+52))...$ .|
000009e0  20 26 34 35 44 38 32 3a  f2 65 78 74 65 64 69 74  | &45D82:.extedit|
000009f0  5f 72 65 74 75 72 6e 28  62 25 21 32 34 29 0d 02  |_return(b%!24)..|
00000a00  d0 23 20 c9 20 26 34 35  44 38 33 3a f2 65 78 74  |.# . &45D83:.ext|
00000a10  65 64 69 74 5f 61 62 6f  72 74 28 62 25 21 32 34  |edit_abort(b%!24|
00000a20  29 0d 02 da 22 20 c9 20  26 34 35 44 38 34 3a f2  |)..." . &45D84:.|
00000a30  65 78 74 65 64 69 74 5f  73 61 76 65 28 62 25 21  |extedit_save(b%!|
00000a40  32 30 29 0d 02 e4 3b f4  20 54 68 65 20 66 6f 6c  |20)...;. The fol|
00000a50  6c 6f 77 69 6e 67 20 6c  69 6e 65 73 20 73 68 6f  |lowing lines sho|
00000a60  75 6c 64 20 62 65 20 61  64 64 65 64 20 74 6f 20  |uld be added to |
00000a70  74 68 65 20 31 39 20 68  61 6e 64 6c 65 72 0d 02  |the 19 handler..|
00000a80  ee 26 20 c9 20 32 3a f4  20 50 6f 73 73 69 62 6c  |.& . 2:. Possibl|
00000a90  65 20 44 61 74 61 54 72  61 6e 73 66 65 72 20 61  |e DataTransfer a|
00000aa0  62 6f 72 74 0d 02 f8 2e  20 c9 20 33 3a e7 20 65  |bort.... . 3:. e|
00000ab0  78 74 73 74 61 74 75 73  3d 34 20 8c 65 78 74 63  |xtstatus=4 .extc|
00000ac0  6f 64 65 3d 2d 31 3a 65  78 74 73 74 61 74 75 73  |ode=-1:extstatus|
00000ad0  3d 35 0d 03 02 1d 20 c9  20 26 34 35 44 38 34 3a  |=5.... . &45D84:|
00000ae0  f2 65 78 74 65 64 69 74  5f 6e 6f 73 61 76 65 0d  |.extedit_nosave.|
00000af0  03 0c 36 f4 20 54 68 65  20 70 72 6f 67 72 61 6d  |..6. The program|
00000b00  20 73 68 6f 75 6c 64 20  68 61 76 65 20 72 6f 75  | should have rou|
00000b10  74 69 6e 65 73 20 77 68  69 63 68 20 68 61 6e 64  |tines which hand|
00000b20  6c 65 20 3a 2d 0d 03 16  15 f4 20 41 62 6f 72 74  |le :-..... Abort|
00000b30  65 64 20 65 64 69 74 73  20 3a 0d 03 20 24 f4 20  |ed edits :.. $. |
00000b40  20 50 52 4f 43 65 64 69  74 5f 61 62 6f 72 74 65  | PROCedit_aborte|
00000b50  64 28 6e 75 6d 62 65 72  2c 63 6f 64 65 29 0d 03  |d(number,code)..|
00000b60  2a 15 f4 20 45 64 69 74  20 72 65 71 75 65 73 74  |*.. Edit request|
00000b70  73 20 3a 0d 03 34 33 f4  20 20 50 52 4f 43 65 64  |s :..43.  PROCed|
00000b80  69 74 5f 72 65 71 75 65  73 74 65 64 28 74 79 70  |it_requested(typ|
00000b90  65 2c 66 6c 61 67 73 2c  70 61 72 65 6e 74 24 2c  |e,flags,parent$,|
00000ba0  6c 65 61 66 24 29 0d 03  3e 37 f4 20 20 28 77 68  |leaf$)..>7.  (wh|
00000bb0  69 63 68 20 73 68 6f 75  6c 64 20 63 61 6c 6c 20  |ich should call |
00000bc0  46 4e 65 65 5f 72 65 71  75 65 73 74 61 63 6b 28  |FNee_requestack(|
00000bd0  66 6c 61 67 73 2c 63 6f  64 65 29 20 29 0d 03 48  |flags,code) )..H|
00000be0  26 f4 20 53 61 76 65 20  64 61 74 61 20 28 74 6f  |&. Save data (to|
00000bf0  20 65 64 69 74 6f 72 29  20 72 65 71 75 65 73 74  | editor) request|
00000c00  73 20 3a 0d 03 52 39 f4  20 20 46 4e 65 64 69 74  |s :..R9.  FNedit|
00000c10  5f 73 61 76 65 72 71 28  6e 75 6d 62 65 72 2c 63  |_saverq(number,c|
00000c20  6f 64 65 2c 74 79 70 65  29 20 3d 20 30 20 66 6f  |ode,type) = 0 fo|
00000c30  72 20 6f 6b 20 74 6f 20  6c 6f 61 64 0d 03 5c 37  |r ok to load..\7|
00000c40  f4 20 20 46 4e 65 64 69  74 5f 73 61 76 65 64 74  |.  FNedit_savedt|
00000c50  6f 28 6e 75 6d 62 65 72  2c 63 6f 64 65 2c 66 69  |o(number,code,fi|
00000c60  6c 65 24 29 20 3d 20 30  20 66 6f 72 20 6c 6f 61  |le$) = 0 for loa|
00000c70  64 65 64 0d 03 66 26 f4  20 53 61 76 65 20 64 61  |ded..f&. Save da|
00000c80  74 61 20 28 74 6f 20 63  6c 69 65 6e 74 29 20 72  |ta (to client) r|
00000c90  65 71 75 65 73 74 73 20  3a 0d 03 70 42 f4 20 20  |equests :..pB.  |
00000ca0  46 4e 65 64 69 74 5f 72  65 74 75 72 6e 72 71 28  |FNedit_returnrq(|
00000cb0  6e 75 6d 62 65 72 2c 63  6f 64 65 2c 64 61 74 61  |number,code,data|
00000cc0  74 79 70 65 2c 66 6c 61  67 73 29 20 3d 20 66 69  |type,flags) = fi|
00000cd0  6c 65 6e 61 6d 65 2f 6e  75 6c 6c 0d 03 7a 36 f4  |lename/null..z6.|
00000ce0  20 20 50 52 4f 43 65 64  69 74 5f 73 61 76 65 62  |  PROCedit_saveb|
00000cf0  61 63 6b 28 6e 75 6d 62  65 72 2c 63 6f 64 65 2c  |ack(number,code,|
00000d00  66 69 6c 65 24 2c 74 79  70 65 2c 66 6c 61 67 73  |file$,type,flags|
00000d10  29 0d 03 84 05 3a 0d 03  8e 26 f4 20 45 78 74 65  |)....:...&. Exte|
00000d20  72 6e 61 6c 20 65 64 69  74 74 69 6e 67 20 66 6c  |rnal editting fl|
00000d30  61 67 73 20 28 62 69 74  73 29 20 3a 0d 03 98 1b  |ags (bits) :....|
00000d40  f4 20 20 30 20 20 43 6f  6e 74 69 6e 75 65 20 65  |.  0  Continue e|
00000d50  64 69 74 74 69 6e 67 0d  03 a2 18 f4 20 20 31 20  |ditting.....  1 |
00000d60  20 53 65 6c 65 63 74 69  6f 6e 20 6f 6e 6c 79 0d  | Selection only.|
00000d70  03 ac 13 f4 20 20 32 20  20 52 65 61 64 2d 6f 6e  |....  2  Read-on|
00000d80  6c 79 0d 03 b6 1d f4 20  20 33 20 20 49 6d 6d 65  |ly.....  3  Imme|
00000d90  64 69 61 74 65 20 65 78  65 63 75 74 69 6f 6e 0d  |diate execution.|
00000da0  03 c0 1a f4 20 20 34 20  20 41 64 6a 75 73 74 20  |....  4  Adjust |
00000db0  73 65 6c 65 63 74 69 6f  6e 0d 03 ca 05 3a 0d 03  |selection....:..|
00000dc0  d4 35 f4 20 46 4e 65 65  5f 62 65 67 69 6e 20 3a  |.5. FNee_begin :|
00000dd0  20 53 74 61 72 74 20 61  6e 20 65 78 74 65 72 6e  | Start an extern|
00000de0  61 6c 20 65 64 69 74 74  69 6e 67 20 73 65 73 73  |al editting sess|
00000df0  69 6f 6e 0d 03 de 21 f4  20 20 72 65 74 75 72 6e  |ion...!.  return|
00000e00  73 20 2d 31 20 69 66 20  6e 6f 74 20 70 6f 73 73  |s -1 if not poss|
00000e10  69 62 6c 65 0d 03 e8 24  f4 20 20 74 79 70 65 25  |ible...$.  type%|
00000e20  20 3d 20 64 61 74 61 20  74 79 70 65 20 28 26 65  | = data type (&e|
00000e30  65 65 65 30 74 74 74 29  0d 03 f2 1d f4 20 20 66  |eee0ttt).....  f|
00000e40  6c 61 67 73 25 3d 20 65  64 69 74 74 69 6e 67 20  |lags%= editting |
00000e50  66 6c 61 67 73 0d 03 fc  23 f4 20 20 6c 65 61 66  |flags...#.  leaf|
00000e60  24 20 3d 20 6c 65 61 66  20 6e 61 6d 65 20 66 6f  |$ = leaf name fo|
00000e70  72 20 65 64 69 74 6f 72  0d 04 06 27 f4 20 20 63  |r editor...'.  c|
00000e80  6f 64 65 20 20 3d 20 63  6f 64 65 20 74 6f 20 72  |ode  = code to r|
00000e90  65 66 65 72 20 74 6f 20  66 69 6c 65 20 61 73 0d  |efer to file as.|
00000ea0  04 10 19 f4 20 56 61 6c  69 64 20 66 6c 61 67 73  |.... Valid flags|
00000eb0  20 3a 20 30 2c 32 2c 33  0d 04 1a 28 dd a4 65 65  | : 0,2,3...(..ee|
00000ec0  5f 62 65 67 69 6e 28 74  79 70 65 25 2c 66 6c 61  |_begin(type%,fla|
00000ed0  67 73 25 2c 6c 65 61 66  24 2c 63 6f 64 65 25 29  |gs%,leaf$,code%)|
00000ee0  0d 04 24 07 ea 20 49 0d  04 2e 1b 6e 75 6d 25 3d  |..$.. I....num%=|
00000ef0  a4 65 78 74 65 64 69 74  5f 68 61 6e 64 6c 65 6e  |.extedit_handlen|
00000f00  75 6d 0d 04 38 12 e7 20  6e 75 6d 25 3d 2d 31 20  |um..8.. num%=-1 |
00000f10  8c 3d 2d 31 0d 04 42 29  65 78 74 68 25 21 28 6e  |.=-1..B)exth%!(n|
00000f20  75 6d 25 2a 31 36 2b 31  32 29 3d 63 6f 64 65 25  |um%*16+12)=code%|
00000f30  3a f2 65 78 74 65 64 69  74 5f 6e 65 77 0d 04 4c  |:.extedit_new..L|
00000f40  12 e7 20 65 78 74 63 6f  64 65 3d 2d 31 20 8c 0d  |.. extcode=-1 ..|
00000f50  04 56 3c 20 e7 20 28 74  79 70 65 25 20 84 20 26  |.V< . (type% . &|
00000f60  46 46 46 29 3c 3e 26 46  46 46 20 8c 74 79 70 65  |FFF)<>&FFF .type|
00000f70  25 3d 74 79 70 65 25 20  80 20 26 46 46 46 3a f2  |%=type% . &FFF:.|
00000f80  65 78 74 65 64 69 74 5f  6e 65 77 0d 04 60 05 cd  |extedit_new..`..|
00000f90  0d 04 6a 15 e7 20 65 78  74 63 6f 64 65 3d 2d 31  |..j.. extcode=-1|
00000fa0  20 8c 3d 2d 31 0d 04 74  09 3d 6e 75 6d 25 0d 04  | .=-1..t.=num%..|
00000fb0  7e 2a dd f2 65 78 74 65  64 69 74 5f 6e 65 77 3a  |~*..extedit_new:|
00000fc0  65 78 74 73 74 61 74 75  73 3d 31 3a 65 78 74 63  |extstatus=1:extc|
00000fd0  6f 64 65 3d 6e 75 6d 25  0d 04 88 4b f2 65 78 74  |ode=num%...K.ext|
00000fe0  65 64 69 74 5f 62 6c 6b  28 26 34 35 44 38 30 2c  |edit_blk(&45D80,|
00000ff0  35 32 2b 28 a9 28 6c 65  61 66 24 29 2b 34 29 20  |52+(.(leaf$)+4) |
00001000  80 2d 34 2c 74 79 70 65  25 2c 28 65 78 74 74 6f  |.-4,type%,(extto|
00001010  70 25 3c 3c 36 29 2b 6e  75 6d 25 2c 66 6c 61 67  |p%<<6)+num%,flag|
00001020  73 25 29 0d 04 92 2a 24  28 62 25 2b 33 32 29 3d  |s%)...*$(b%+32)=|
00001030  41 70 70 6e 61 6d 65 24  2b bd 30 3a 24 28 62 25  |Appname$+.0:$(b%|
00001040  2b 35 32 29 3d 6c 65 61  66 24 2b bd 30 0d 04 9c  |+52)=leaf$+.0...|
00001050  21 c8 99 20 22 57 69 6d  70 5f 53 65 6e 64 4d 65  |!.. "Wimp_SendMe|
00001060  73 73 61 67 65 22 2c 31  38 2c 62 25 2c 30 0d 04  |ssage",18,b%,0..|
00001070  a6 30 f5 3a f2 50 6f 6c  6c 3a fd 20 65 78 74 73  |.0.:.Poll:. exts|
00001080  74 61 74 75 73 3d 32 20  84 20 71 75 69 74 25 3c  |tatus=2 . quit%<|
00001090  3e a3 3a 65 78 74 73 74  61 74 75 73 3d 30 0d 04  |>.:extstatus=0..|
000010a0  b0 1c e7 20 65 78 74 63  6f 64 65 3d 2d 31 20 80  |... extcode=-1 .|
000010b0  20 71 75 69 74 25 3d a3  20 8c 0d 04 ba 14 20 e7  | quit%=. ..... .|
000010c0  20 74 79 70 65 25 3c 26  31 30 30 30 20 8c 0d 04  | type%<&1000 ...|
000010d0  c4 2c 20 20 61 24 3d 22  41 6c 69 61 73 24 40 45  |.,  a$="Alias$@E|
000010e0  64 69 74 54 79 70 65 5f  22 2b c2 22 30 30 22 2b  |ditType_"+."00"+|
000010f0  c3 7e 74 79 70 65 25 2c  33 29 0d 04 ce 06 20 cc  |.~type%,3).... .|
00001100  0d 04 d8 31 20 20 61 24  3d 22 41 6c 69 61 73 24  |...1  a$="Alias$|
00001110  40 45 64 69 74 54 79 70  65 5f 22 2b c2 22 30 30  |@EditType_"+."00|
00001120  30 30 30 30 30 22 2b c3  7e 74 79 70 65 25 2c 38  |00000"+.~type%,8|
00001130  29 0d 04 e2 06 20 cd 0d  04 ec 16 20 61 24 3d a4  |).... ..... a$=.|
00001140  73 79 73 74 65 6d 76 61  72 28 61 24 29 0d 04 f6  |systemvar(a$)...|
00001150  0f 20 e7 20 61 24 3c 3e  22 22 20 8c 0d 05 00 22  |. . a$<>"" ...."|
00001160  20 20 c8 99 20 22 57 69  6d 70 5f 53 74 61 72 74  |  .. "Wimp_Start|
00001170  54 61 73 6b 22 2c 61 24  3a f2 50 6f 6c 6c 0d 05  |Task",a$:.Poll..|
00001180  0a 1e 20 20 65 78 74 73  74 61 74 75 73 3d 31 3a  |..  extstatus=1:|
00001190  65 78 74 63 6f 64 65 3d  6e 75 6d 25 0d 05 14 4d  |extcode=num%...M|
000011a0  20 20 f2 65 78 74 65 64  69 74 5f 62 6c 6b 28 26  |  .extedit_blk(&|
000011b0  34 35 44 38 30 2c 35 32  2b 28 a9 28 6c 65 61 66  |45D80,52+(.(leaf|
000011c0  24 29 2b 34 29 20 80 2d  34 2c 74 79 70 65 25 2c  |$)+4) .-4,type%,|
000011d0  28 65 78 74 74 6f 70 25  3c 3c 36 29 2b 6e 75 6d  |(exttop%<<6)+num|
000011e0  25 2c 66 6c 61 67 73 25  29 0d 05 1e 2c 20 20 24  |%,flags%)...,  $|
000011f0  28 62 25 2b 33 32 29 3d  41 70 70 6e 61 6d 65 24  |(b%+32)=Appname$|
00001200  2b bd 30 3a 24 28 62 25  2b 35 32 29 3d 6c 65 61  |+.0:$(b%+52)=lea|
00001210  66 24 2b bd 30 0d 05 28  23 20 20 c8 99 20 22 57  |f$+.0..(#  .. "W|
00001220  69 6d 70 5f 53 65 6e 64  4d 65 73 73 61 67 65 22  |imp_SendMessage"|
00001230  2c 31 38 2c 62 25 2c 30  0d 05 32 32 20 20 f5 3a  |,18,b%,0..22  .:|
00001240  f2 50 6f 6c 6c 3a fd 20  65 78 74 73 74 61 74 75  |.Poll:. extstatu|
00001250  73 3d 32 20 84 20 71 75  69 74 25 3c 3e a3 3a 65  |s=2 . quit%<>.:e|
00001260  78 74 73 74 61 74 75 73  3d 30 0d 05 3c 06 20 cd  |xtstatus=0..<. .|
00001270  0d 05 46 05 cd 0d 05 50  17 e7 20 71 75 69 74 25  |..F....P.. quit%|
00001280  20 8c 65 78 74 63 6f 64  65 3d 2d 31 0d 05 5a 05  | .extcode=-1..Z.|
00001290  e1 0d 05 64 2e dd f2 65  78 74 65 64 69 74 5f 62  |...d...extedit_b|
000012a0  6c 6b 28 6d 73 67 25 2c  6c 65 6e 25 2c 74 79 70  |lk(msg%,len%,typ|
000012b0  65 25 2c 6a 6f 62 25 2c  66 6c 61 67 73 25 29 0d  |e%,job%,flags%).|
000012c0  05 6e 43 21 62 25 3d 6c  65 6e 25 3a 62 25 21 31  |.nC!b%=len%:b%!1|
000012d0  32 3d 30 3a 62 25 21 31  36 3d 6d 73 67 25 3a 62  |2=0:b%!16=msg%:b|
000012e0  25 21 32 30 3d 74 79 70  65 25 3a 62 25 21 32 34  |%!20=type%:b%!24|
000012f0  3d 6a 6f 62 25 3a 62 25  21 32 38 3d 66 6c 61 67  |=job%:b%!28=flag|
00001300  73 25 0d 05 78 05 e1 0d  05 82 05 3a 0d 05 8c 3e  |s%..x......:...>|
00001310  f4 20 46 4e 65 78 74 65  64 69 74 5f 68 61 6e 64  |. FNextedit_hand|
00001320  6c 65 6e 75 6d 20 3a 20  72 65 74 75 72 6e 20 66  |lenum : return f|
00001330  69 6c 65 20 6e 75 6d 62  65 72 20 61 6e 64 20 73  |ile number and s|
00001340  65 74 20 65 78 74 74 6f  70 25 0d 05 96 17 dd a4  |et exttop%......|
00001350  65 78 74 65 64 69 74 5f  68 61 6e 64 6c 65 6e 75  |extedit_handlenu|
00001360  6d 0d 05 a0 12 e7 20 65  78 74 74 6f 70 25 3d 2d  |m..... exttop%=-|
00001370  31 20 8c 0d 05 aa 2c 20  65 78 74 74 6f 70 25 3d  |1 ...., exttop%=|
00001380  bb 28 a4 73 79 73 74 65  6d 76 61 72 28 22 45 78  |.(.systemvar("Ex|
00001390  74 45 64 69 74 24 53 65  71 25 4a 46 22 29 29 0d  |tEdit$Seq%JF")).|
000013a0  05 b4 1d 20 e7 20 65 78  74 74 6f 70 25 3d 30 20  |... . exttop%=0 |
000013b0  8c 65 78 74 74 6f 70 25  3d 37 30 30 0d 05 be 2f  |.exttop%=700.../|
000013c0  20 ff 28 22 2a 53 65 74  45 76 61 6c 20 45 78 74  | .("*SetEval Ext|
000013d0  45 64 69 74 24 53 65 71  25 4a 46 20 22 2b c3 28  |Edit$Seq%JF "+.(|
000013e0  65 78 74 74 6f 70 25 2b  31 29 29 0d 05 c8 05 cd  |exttop%+1)).....|
000013f0  0d 05 d2 32 6e 75 6d 25  3d 2d 31 3a e3 49 3d 30  |...2num%=-1:.I=0|
00001400  b8 36 33 3a e7 20 65 78  74 68 25 21 28 49 2a 31  |.63:. exth%!(I*1|
00001410  36 29 3d 2d 31 20 8c 6e  75 6d 25 3d 49 3a 49 3d  |6)=-1 .num%=I:I=|
00001420  36 33 0d 05 dc 05 ed 0d  05 e6 09 3d 6e 75 6d 25  |63.........=num%|
00001430  0d 05 f0 05 3a 0d 05 fa  2b f4 20 50 52 4f 43 65  |....:...+. PROCe|
00001440  78 74 65 64 69 74 5f 61  63 6b 20 3a 20 28 49 29  |xtedit_ack : (I)|
00001450  20 72 65 63 65 69 76 65  20 45 64 69 74 41 63 6b  | receive EditAck|
00001460  0d 06 04 11 dd f2 65 78  74 65 64 69 74 5f 61 63  |......extedit_ac|
00001470  6b 0d 06 0e 13 e7 20 65  78 74 73 74 61 74 75 73  |k..... extstatus|
00001480  3d 31 20 8c 0d 06 18 29  20 65 78 74 73 74 61 74  |=1 ....) extstat|
00001490  75 73 3d 32 3a 65 78 74  68 25 21 28 65 78 74 63  |us=2:exth%!(extc|
000014a0  6f 64 65 2a 31 36 29 3d  62 25 21 32 34 0d 06 22  |ode*16)=b%!24.."|
000014b0  39 20 65 78 74 68 25 21  28 65 78 74 63 6f 64 65  |9 exth%!(extcode|
000014c0  2a 31 36 2b 34 29 3d 62  25 21 32 38 3a 65 78 74  |*16+4)=b%!28:ext|
000014d0  68 25 21 28 65 78 74 63  6f 64 65 2a 31 36 2b 38  |h%!(extcode*16+8|
000014e0  29 3d 62 25 21 34 0d 06  2c 12 20 65 78 74 63 6f  |)=b%!4..,. extco|
000014f0  64 65 3d 62 25 21 32 34  0d 06 36 05 cc 0d 06 40  |de=b%!24..6....@|
00001500  2b 20 85 20 26 38 30 32  2c 22 55 6e 65 78 70 65  |+ . &802,"Unexpe|
00001510  63 74 65 64 20 45 78 74  45 64 69 74 41 63 6b 20  |cted ExtEditAck |
00001520  6d 65 73 73 61 67 65 22  0d 06 4a 05 cd 0d 06 54  |message"..J....T|
00001530  05 e1 0d 06 5e 05 3a 0d  06 68 31 f4 20 50 52 4f  |....^.:..h1. PRO|
00001540  43 65 78 74 65 64 69 74  5f 6e 6f 61 63 6b 20 3a  |Cextedit_noack :|
00001550  20 28 49 29 20 6e 6f 20  45 64 69 74 41 63 6b 20  | (I) no EditAck |
00001560  72 65 63 65 69 76 65 64  0d 06 72 13 dd f2 65 78  |received..r...ex|
00001570  74 65 64 69 74 5f 6e 6f  61 63 6b 0d 06 7c 29 e7  |tedit_noack..|).|
00001580  20 65 78 74 73 74 61 74  75 73 3d 31 20 8c 65 78  | extstatus=1 .ex|
00001590  74 73 74 61 74 75 73 3d  32 3a 65 78 74 63 6f 64  |tstatus=2:extcod|
000015a0  65 3d 2d 31 0d 06 86 05  e1 0d 06 90 05 3a 0d 06  |e=-1.........:..|
000015b0  9a 3d f4 20 46 4e 65 65  5f 73 65 6e 64 66 69 6c  |.=. FNee_sendfil|
000015c0  65 20 3a 20 73 65 6e 64  20 61 20 66 69 6c 65 20  |e : send a file |
000015d0  74 6f 20 61 6e 20 45 78  74 45 64 69 74 20 73 65  |to an ExtEdit se|
000015e0  73 73 69 6f 6e 20 28 45  2f 43 29 0d 06 a4 23 f4  |ssion (E/C)...#.|
000015f0  20 20 72 65 74 75 72 6e  73 20 2d 31 20 69 66 20  |  returns -1 if |
00001600  65 72 72 6f 72 2c 20 30  20 69 66 20 6f 6b 0d 06  |error, 0 if ok..|
00001610  ae 22 f4 20 20 6e 75 6d  25 3d 6e 75 6d 62 65 72  |.".  num%=number|
00001620  20 6f 66 20 69 6e 74 65  72 6e 61 6c 20 6a 6f 62  | of internal job|
00001630  0d 06 b8 24 f4 20 20 74  79 70 65 3d 66 69 6c 65  |...$.  type=file|
00001640  20 74 79 70 65 20 28 6e  6f 74 20 64 61 74 61 74  | type (not datat|
00001650  79 70 65 29 0d 06 c2 24  f4 20 20 66 69 6c 65 24  |ype)...$.  file$|
00001660  20 72 65 74 75 72 6e 73  20 6e 61 6d 65 20 74 6f  | returns name to|
00001670  20 73 61 76 65 20 61 73  0d 06 cc 25 dd a4 65 65  | save as...%..ee|
00001680  5f 73 65 6e 64 66 69 6c  65 28 6e 75 6d 25 2c 74  |_sendfile(num%,t|
00001690  79 70 65 25 2c f8 20 66  69 6c 65 24 29 0d 06 d6  |ype%,. file$)...|
000016a0  21 ea 20 6a 6f 62 25 3a  6a 6f 62 25 3d a4 65 65  |!. job%:job%=.ee|
000016b0  5f 66 69 6e 64 6a 6f 62  28 6e 75 6d 25 29 0d 06  |_findjob(num%)..|
000016c0  e0 3b e7 20 6a 6f 62 25  3d 2d 31 20 8c 85 20 26  |.;. job%=-1 .. &|
000016d0  38 30 32 2c 22 41 74 74  65 6d 70 74 20 74 6f 20  |802,"Attempt to |
000016e0  6f 70 65 6e 20 75 6e 6b  6e 6f 77 6e 20 45 78 74  |open unknown Ext|
000016f0  45 64 69 74 20 6a 6f 62  22 0d 06 ea 27 62 25 21  |Edit job"...'b%!|
00001700  30 3d 34 34 2b 28 a9 28  41 70 70 6e 61 6d 65 24  |0=44+(.(Appname$|
00001710  29 2b 34 29 20 80 2d 34  3a 62 25 21 31 32 3d 30  |)+4) .-4:b%!12=0|
00001720  0d 06 f4 33 62 25 21 31  36 3d 26 34 35 44 38 34  |...3b%!16=&45D84|
00001730  3a 62 25 21 32 30 3d 6a  6f 62 25 3a 62 25 21 32  |:b%!20=job%:b%!2|
00001740  34 3d 30 3a 62 25 21 32  38 3d 30 3a 62 25 21 33  |4=0:b%!28=0:b%!3|
00001750  32 3d 30 0d 06 fe 2d 62  25 21 33 36 3d 2d 31 3a  |2=0...-b%!36=-1:|
00001760  62 25 21 34 30 3d 74 79  70 65 25 3a 24 28 62 25  |b%!40=type%:$(b%|
00001770  2b 34 34 29 3d 41 70 70  6e 61 6d 65 24 2b bd 30  |+44)=Appname$+.0|
00001780  0d 07 08 32 c8 99 20 22  57 69 6d 70 5f 53 65 6e  |...2.. "Wimp_Sen|
00001790  64 4d 65 73 73 61 67 65  22 2c 31 38 2c 62 25 2c  |dMessage",18,b%,|
000017a0  a4 65 65 5f 66 69 6e 64  74 61 73 6b 28 6e 75 6d  |.ee_findtask(num|
000017b0  25 29 0d 07 12 1c 65 78  74 73 74 61 74 75 73 3d  |%)....extstatus=|
000017c0  33 3a 65 78 74 63 6f 64  65 3d 6e 75 6d 25 0d 07  |3:extcode=num%..|
000017d0  1c 24 f5 3a f2 50 6f 6c  6c 3a fd 20 65 78 74 73  |.$.:.Poll:. exts|
000017e0  74 61 74 75 73 3d 34 20  84 20 71 75 69 74 25 3c  |tatus=4 . quit%<|
000017f0  3e a3 0d 07 26 17 e7 20  71 75 69 74 25 20 8c 65  |>...&.. quit% .e|
00001800  78 74 63 6f 64 65 3d 2d  31 0d 07 30 32 e7 20 65  |xtcode=-1..02. e|
00001810  78 74 63 6f 64 65 3d 30  20 8c 66 69 6c 65 24 3d  |xtcode=0 .file$=|
00001820  a4 73 74 72 69 6e 67 30  28 62 25 2b 34 34 29 3a  |.string0(b%+44):|
00001830  65 78 74 72 65 66 3d 62  25 21 38 0d 07 3a 0c 3d  |extref=b%!8..:.=|
00001840  65 78 74 63 6f 64 65 0d  07 44 05 3a 0d 07 4e 37  |extcode..D.:..N7|
00001850  f4 20 50 52 4f 43 65 78  74 65 64 69 74 5f 72 65  |. PROCextedit_re|
00001860  74 75 72 6e 20 3a 20 54  72 79 20 74 6f 20 72 65  |turn : Try to re|
00001870  74 75 72 6e 20 64 61 74  61 20 74 6f 20 63 6c 69  |turn data to cli|
00001880  65 6e 74 0d 07 58 1a dd  f2 65 78 74 65 64 69 74  |ent..X...extedit|
00001890  5f 72 65 74 75 72 6e 28  6a 6f 62 25 29 0d 07 62  |_return(job%)..b|
000018a0  3f 6e 75 6d 25 3d a4 65  65 5f 66 69 6e 64 6e 75  |?num%=.ee_findnu|
000018b0  6d 28 6a 6f 62 25 29 3a  74 79 70 65 25 3d 62 25  |m(job%):type%=b%|
000018c0  21 34 30 3a 66 6c 61 67  73 25 3d 62 25 21 32 38  |!40:flags%=b%!28|
000018d0  3a 65 78 74 72 65 66 3d  62 25 21 38 0d 07 6c 3e  |:extref=b%!8..l>|
000018e0  66 69 6c 65 24 3d a4 65  64 69 74 5f 72 65 74 75  |file$=.edit_retu|
000018f0  72 6e 72 71 28 6e 75 6d  25 2c a4 65 65 5f 66 69  |rnrq(num%,.ee_fi|
00001900  6e 64 63 6f 64 65 28 6e  75 6d 25 29 2c 74 79 70  |ndcode(num%),typ|
00001910  65 25 2c 66 6c 61 67 73  25 29 0d 07 76 11 e7 20  |e%,flags%)..v.. |
00001920  66 69 6c 65 24 3c 3e 22  22 20 8c 0d 07 80 2a 20  |file$<>"" ....* |
00001930  62 25 21 30 3d 34 34 2b  28 a9 28 66 69 6c 65 24  |b%!0=44+(.(file$|
00001940  29 2b 34 29 20 80 2d 34  3a 62 25 21 31 32 3d 65  |)+4) .-4:b%!12=e|
00001950  78 74 72 65 66 0d 07 8a  34 20 62 25 21 31 36 3d  |xtref...4 b%!16=|
00001960  26 34 35 44 38 34 3a 62  25 21 32 30 3d 6a 6f 62  |&45D84:b%!20=job|
00001970  25 3a 62 25 21 32 34 3d  30 3a 62 25 21 32 38 3d  |%:b%!24=0:b%!28=|
00001980  30 3a 62 25 21 33 32 3d  30 0d 07 94 32 20 62 25  |0:b%!32=0...2 b%|
00001990  21 33 36 3d 2d 31 3a 62  25 21 34 30 3d 74 79 70  |!36=-1:b%!40=typ|
000019a0  65 25 20 80 20 26 46 46  46 3a 24 28 62 25 2b 34  |e% . &FFF:$(b%+4|
000019b0  34 29 3d 66 69 6c 65 24  2b bd 30 0d 07 9e 33 20  |4)=file$+.0...3 |
000019c0  c8 99 20 22 57 69 6d 70  5f 53 65 6e 64 4d 65 73  |.. "Wimp_SendMes|
000019d0  73 61 67 65 22 2c 31 38  2c 62 25 2c a4 65 65 5f  |sage",18,b%,.ee_|
000019e0  66 69 6e 64 74 61 73 6b  28 6e 75 6d 25 29 0d 07  |findtask(num%)..|
000019f0  a8 1d 20 65 78 74 73 74  61 74 75 73 3d 33 3a 65  |.. extstatus=3:e|
00001a00  78 74 63 6f 64 65 3d 6e  75 6d 25 0d 07 b2 25 20  |xtcode=num%...% |
00001a10  f5 3a f2 50 6f 6c 6c 3a  fd 20 65 78 74 73 74 61  |.:.Poll:. extsta|
00001a20  74 75 73 3d 34 20 84 20  71 75 69 74 25 3c 3e a3  |tus=4 . quit%<>.|
00001a30  0d 07 bc 18 20 e7 20 71  75 69 74 25 20 8c 65 78  |.... . quit% .ex|
00001a40  74 63 6f 64 65 3d 2d 31  0d 07 c6 12 20 e7 20 65  |tcode=-1.... . e|
00001a50  78 74 63 6f 64 65 3d 30  20 8c 0d 07 d0 2b 20 20  |xtcode=0 ....+  |
00001a60  65 78 74 73 74 61 74 75  73 3d 31 31 3a 65 78 74  |extstatus=11:ext|
00001a70  63 6f 64 65 3d 6e 75 6d  25 3a 65 78 74 72 65 66  |code=num%:extref|
00001a80  3d 62 25 21 38 0d 07 da  4a 20 20 f2 65 64 69 74  |=b%!8...J  .edit|
00001a90  5f 73 61 76 65 62 61 63  6b 28 6e 75 6d 25 2c a4  |_saveback(num%,.|
00001aa0  65 65 5f 66 69 6e 64 63  6f 64 65 28 6e 75 6d 25  |ee_findcode(num%|
00001ab0  29 2c a4 73 74 72 69 6e  67 30 28 62 25 2b 34 34  |),.string0(b%+44|
00001ac0  29 2c 74 79 70 65 25 2c  66 6c 61 67 73 25 29 0d  |),type%,flags%).|
00001ad0  07 e4 06 20 cd 0d 07 ee  05 cd 0d 07 f8 05 e1 0d  |... ............|
00001ae0  08 02 05 3a 0d 08 0c 3d  f4 20 46 4e 65 65 5f 73  |...:...=. FNee_s|
00001af0  65 6e 64 66 69 6c 65 64  6f 6e 65 20 3a 20 4e 6f  |endfiledone : No|
00001b00  74 69 66 79 20 61 70 70  6c 69 63 61 74 69 6f 6e  |tify application|
00001b10  20 74 68 61 74 20 73 61  76 65 20 77 61 73 20 6f  | that save was o|
00001b20  6b 0d 08 16 29 f4 20 20  6d 75 73 74 20 62 65 20  |k...).  must be |
00001b30  63 61 6c 6c 65 64 20 61  66 74 65 72 20 46 4e 65  |called after FNe|
00001b40  65 5f 73 65 6e 64 66 69  6c 65 0d 08 20 1e dd a4  |e_sendfile.. ...|
00001b50  65 65 5f 73 65 6e 64 66  69 6c 65 64 6f 6e 65 28  |ee_sendfiledone(|
00001b60  65 78 74 63 6f 64 65 29  0d 08 2a 32 66 69 6c 65  |extcode)..*2file|
00001b70  24 3d a4 73 74 72 69 6e  67 30 28 62 25 2b 34 34  |$=.string0(b%+44|
00001b80  29 3a 62 25 21 30 3d 34  34 2b 28 a9 28 66 69 6c  |):b%!0=44+(.(fil|
00001b90  65 24 29 2b 34 29 20 80  2d 34 0d 08 34 31 62 25  |e$)+4) .-4..41b%|
00001ba0  21 33 36 3d a4 66 69 6c  65 6c 65 6e 67 74 68 28  |!36=.filelength(|
00001bb0  66 69 6c 65 24 29 3a 62  25 21 31 32 3d 65 78 74  |file$):b%!12=ext|
00001bc0  72 65 66 3a 62 25 21 31  36 3d 33 0d 08 3e 35 c8  |ref:b%!16=3..>5.|
00001bd0  99 20 22 57 69 6d 70 5f  53 65 6e 64 4d 65 73 73  |. "Wimp_SendMess|
00001be0  61 67 65 22 2c 31 38 2c  62 25 2c a4 65 65 5f 66  |age",18,b%,.ee_f|
00001bf0  69 6e 64 74 61 73 6b 28  65 78 74 63 6f 64 65 29  |indtask(extcode)|
00001c00  0d 08 48 1c 65 78 74 73  74 61 74 75 73 3d 34 3a  |..H.extstatus=4:|
00001c10  65 78 74 63 6f 64 65 3d  6e 75 6d 25 0d 08 52 24  |extcode=num%..R$|
00001c20  f5 3a f2 50 6f 6c 6c 3a  fd 20 65 78 74 73 74 61  |.:.Poll:. extsta|
00001c30  74 75 73 3d 35 20 84 20  71 75 69 74 25 3c 3e a3  |tus=5 . quit%<>.|
00001c40  0d 08 5c 17 e7 20 71 75  69 74 25 20 8c 65 78 74  |..\.. quit% .ext|
00001c50  63 6f 64 65 3d 2d 31 0d  08 66 0c 3d 65 78 74 63  |code=-1..f.=extc|
00001c60  6f 64 65 0d 08 70 05 3a  0d 08 7a 27 dd a4 65 65  |ode..p.:..z'..ee|
00001c70  5f 66 69 6e 64 6a 6f 62  28 6e 75 6d 25 29 3a 3d  |_findjob(num%):=|
00001c80  65 78 74 68 25 21 28 6e  75 6d 25 2a 31 36 29 0d  |exth%!(num%*16).|
00001c90  08 84 2b dd a4 65 65 5f  66 69 6e 64 66 6c 61 67  |..+..ee_findflag|
00001ca0  73 28 6e 75 6d 25 29 3a  3d 65 78 74 68 25 21 28  |s(num%):=exth%!(|
00001cb0  6e 75 6d 25 2a 31 36 2b  34 29 0d 08 8e 2a dd a4  |num%*16+4)...*..|
00001cc0  65 65 5f 66 69 6e 64 74  61 73 6b 28 6e 75 6d 25  |ee_findtask(num%|
00001cd0  29 3a 3d 65 78 74 68 25  21 28 6e 75 6d 25 2a 31  |):=exth%!(num%*1|
00001ce0  36 2b 38 29 0d 08 98 2b  dd a4 65 65 5f 66 69 6e  |6+8)...+..ee_fin|
00001cf0  64 63 6f 64 65 28 6e 75  6d 25 29 3a 3d 65 78 74  |dcode(num%):=ext|
00001d00  68 25 21 28 6e 75 6d 25  2a 31 36 2b 31 32 29 0d  |h%!(num%*16+12).|
00001d10  08 a2 16 dd a4 65 65 5f  66 69 6e 64 6e 75 6d 28  |.....ee_findnum(|
00001d20  6a 6f 62 25 29 0d 08 ac  34 ea 20 66 2c 49 3a 66  |job%)...4. f,I:f|
00001d30  3d 2d 31 3a e3 49 3d 30  b8 36 33 3a e7 20 65 78  |=-1:.I=0.63:. ex|
00001d40  74 68 25 21 28 49 2a 31  36 29 3d 6a 6f 62 25 20  |th%!(I*16)=job% |
00001d50  8c 66 3d 49 3a 49 3d 36  33 0d 08 b6 08 ed 3a 3d  |.f=I:I=63.....:=|
00001d60  66 0d 08 c0 1f dd a4 65  65 5f 66 69 6e 64 6e 75  |f......ee_findnu|
00001d70  6d 66 72 6f 6d 63 6f 64  65 28 63 6f 64 65 25 29  |mfromcode(code%)|
00001d80  0d 08 ca 4a ea 20 66 2c  49 3a 66 3d 2d 31 3a e3  |...J. f,I:f=-1:.|
00001d90  49 3d 30 b8 36 33 3a e7  20 65 78 74 68 25 21 28  |I=0.63:. exth%!(|
00001da0  49 2a 31 36 2b 31 32 29  3d 63 6f 64 65 25 20 80  |I*16+12)=code% .|
00001db0  20 65 78 74 68 25 21 28  49 2a 31 36 29 3c 3e 30  | exth%!(I*16)<>0|
00001dc0  20 8c 66 3d 49 3a 49 3d  36 33 0d 08 d4 08 ed 3a  | .f=I:I=63.....:|
00001dd0  3d 66 0d 08 de 17 dd a4  65 65 5f 66 69 6e 64 6e  |=f......ee_findn|
00001de0  65 78 74 28 6e 75 6d 25  29 0d 08 e8 41 f5 3a 6e  |ext(num%)...A.:n|
00001df0  75 6d 25 2b 3d 31 3a fd  20 65 78 74 68 25 21 28  |um%+=1:. exth%!(|
00001e00  6e 75 6d 25 2a 31 36 29  3c 3e 30 20 80 20 65 78  |num%*16)<>0 . ex|
00001e10  74 68 25 21 28 6e 75 6d  25 2a 31 36 29 3c 3e 2d  |th%!(num%*16)<>-|
00001e20  31 84 20 6e 75 6d 25 3e  36 33 0d 08 f2 12 e7 20  |1. num%>63..... |
00001e30  6e 75 6d 25 3e 36 33 20  8c 3d 2d 31 0d 08 fc 09  |num%>63 .=-1....|
00001e40  3d 6e 75 6d 25 0d 09 06  05 3a 0d 09 10 37 f4 20  |=num%....:...7. |
00001e50  50 52 4f 43 65 78 74 65  64 69 74 5f 6e 6f 73 61  |PROCextedit_nosa|
00001e60  76 65 20 3a 20 28 49 29  20 6e 6f 20 45 64 69 74  |ve : (I) no Edit|
00001e70  44 61 74 61 53 61 76 65  20 72 65 63 65 69 76 65  |DataSave receive|
00001e80  64 0d 09 1a 14 dd f2 65  78 74 65 64 69 74 5f 6e  |d......extedit_n|
00001e90  6f 73 61 76 65 0d 09 24  29 e7 20 65 78 74 73 74  |osave..$). extst|
00001ea0  61 74 75 73 3d 33 20 8c  65 78 74 73 74 61 74 75  |atus=3 .extstatu|
00001eb0  73 3d 34 3a 65 78 74 63  6f 64 65 3d 2d 31 0d 09  |s=4:extcode=-1..|
00001ec0  2e 05 e1 0d 09 38 05 3a  0d 09 42 2f f4 20 50 52  |.....8.:..B/. PR|
00001ed0  4f 43 65 78 74 65 64 69  74 5f 61 62 6f 72 74 20  |OCextedit_abort |
00001ee0  3a 20 28 49 29 20 61 20  6a 6f 62 20 68 61 73 20  |: (I) a job has |
00001ef0  61 62 6f 72 74 65 64 0d  09 4c 19 dd f2 65 78 74  |aborted..L...ext|
00001f00  65 64 69 74 5f 61 62 6f  72 74 28 6a 6f 62 25 29  |edit_abort(job%)|
00001f10  0d 09 56 2c 6e 75 6d 25  3d a4 65 65 5f 66 69 6e  |..V,num%=.ee_fin|
00001f20  64 6e 75 6d 28 6a 6f 62  25 29 3a 65 78 74 68 25  |dnum(job%):exth%|
00001f30  21 28 6e 75 6d 25 2a 31  36 29 3d 30 0d 09 60 2a  |!(num%*16)=0..`*|
00001f40  f2 65 64 69 74 5f 61 62  6f 72 74 65 64 28 6e 75  |.edit_aborted(nu|
00001f50  6d 25 2c 65 78 74 68 25  21 28 6e 75 6d 25 2a 31  |m%,exth%!(num%*1|
00001f60  36 2b 31 32 29 29 0d 09  6a 05 e1 0d 09 74 05 3a  |6+12))..j....t.:|
00001f70  0d 09 7e 32 f4 20 50 52  4f 43 65 78 74 65 64 69  |..~2. PROCextedi|
00001f80  74 5f 73 61 76 65 20 3a  20 28 49 29 20 45 64 69  |t_save : (I) Edi|
00001f90  74 44 61 74 61 53 61 76  65 20 72 65 63 65 69 76  |tDataSave receiv|
00001fa0  65 64 0d 09 88 18 dd f2  65 78 74 65 64 69 74 5f  |ed......extedit_|
00001fb0  73 61 76 65 28 6a 6f 62  25 29 0d 09 92 26 6e 75  |save(job%)...&nu|
00001fc0  6d 25 3d a4 65 65 5f 66  69 6e 64 6e 75 6d 28 6a  |m%=.ee_findnum(j|
00001fd0  6f 62 25 29 3a 65 78 74  72 65 66 3d 62 25 21 38  |ob%):extref=b%!8|
00001fe0  0d 09 9c 10 e7 20 6e 75  6d 25 3d 2d 31 20 8c e1  |..... num%=-1 ..|
00001ff0  0d 09 a6 2b e7 20 28 28  65 78 74 68 25 21 28 6e  |...+. ((exth%!(n|
00002000  75 6d 25 2a 31 36 2b 31  32 29 29 20 80 20 28 31  |um%*16+12)) . (1|
00002010  3c 3c 33 31 29 29 3c 3e  30 20 8c 0d 09 b0 3a 20  |<<31))<>0 ....: |
00002020  f4 20 57 65 20 61 72 65  20 61 6e 20 65 64 69 74  |. We are an edit|
00002030  6f 72 20 62 65 69 6e 67  20 61 73 6b 65 64 20 74  |or being asked t|
00002040  6f 20 6c 6f 61 64 20 61  20 66 69 6c 65 2e 20 61  |o load a file. a|
00002050  72 72 67 68 21 0d 09 ba  33 20 6f 6b 3d a4 65 64  |rrgh!...3 ok=.ed|
00002060  69 74 5f 73 61 76 65 72  71 28 6e 75 6d 25 2c a4  |it_saverq(num%,.|
00002070  65 65 5f 66 69 6e 64 63  6f 64 65 28 6e 75 6d 25  |ee_findcode(num%|
00002080  29 2c 62 25 21 34 30 29  0d 09 c4 0d 20 e7 20 6f  |),b%!40).... . o|
00002090  6b 3d 30 20 8c 0d 09 ce  2e 20 20 66 69 6c 65 24  |k=0 .....  file$|
000020a0  3d a4 65 78 74 65 64 69  74 5f 73 61 76 65 6e 61  |=.extedit_savena|
000020b0  6d 65 28 a4 73 74 72 69  6e 67 30 28 62 25 2b 34  |me(.string0(b%+4|
000020c0  34 29 29 0d 09 d8 33 20  20 62 25 21 30 3d 34 38  |4))...3  b%!0=48|
000020d0  2b 28 a9 28 66 69 6c 65  24 29 20 80 20 ac 20 33  |+(.(file$) . . 3|
000020e0  29 3a 62 25 21 31 32 3d  65 78 74 72 65 66 3a 62  |):b%!12=extref:b|
000020f0  25 21 31 36 3d 32 0d 09  e2 38 20 20 24 28 62 25  |%!16=2...8  $(b%|
00002100  2b 34 34 29 3d 66 69 6c  65 24 2b bd 30 3a 62 25  |+44)=file$+.0:b%|
00002110  21 33 36 3d 2d 31 3a 62  25 21 34 3d a4 65 65 5f  |!36=-1:b%!4=.ee_|
00002120  66 69 6e 64 74 61 73 6b  28 6e 75 6d 25 29 0d 09  |findtask(num%)..|
00002130  ec 26 20 20 c8 99 20 22  57 69 6d 70 5f 53 65 6e  |.&  .. "Wimp_Sen|
00002140  64 4d 65 73 73 61 67 65  22 2c 31 38 2c 62 25 2c  |dMessage",18,b%,|
00002150  62 25 21 34 0d 09 f6 1f  20 20 65 78 74 73 74 61  |b%!4....  extsta|
00002160  74 75 73 3d 31 30 3a 65  78 74 63 6f 64 65 3d 6e  |tus=10:extcode=n|
00002170  75 6d 25 0d 0a 00 06 20  cd 0d 0a 0a 05 cc 0d 0a  |um%.... ........|
00002180  14 33 20 6f 6b 3d a4 65  64 69 74 5f 73 61 76 65  |.3 ok=.edit_save|
00002190  72 71 28 6e 75 6d 25 2c  a4 65 65 5f 66 69 6e 64  |rq(num%,.ee_find|
000021a0  63 6f 64 65 28 6e 75 6d  25 29 2c 62 25 21 34 30  |code(num%),b%!40|
000021b0  29 0d 0a 1e 0d 20 e7 20  6f 6b 3d 30 20 8c 0d 0a  |).... . ok=0 ...|
000021c0  28 2e 20 20 66 69 6c 65  24 3d a4 65 78 74 65 64  |(.  file$=.exted|
000021d0  69 74 5f 73 61 76 65 6e  61 6d 65 28 a4 73 74 72  |it_savename(.str|
000021e0  69 6e 67 30 28 62 25 2b  34 34 29 29 0d 0a 32 33  |ing0(b%+44))..23|
000021f0  20 20 62 25 21 30 3d 34  34 2b 28 a9 28 66 69 6c  |  b%!0=44+(.(fil|
00002200  65 24 29 2b 34 29 20 80  2d 34 3a 62 25 21 31 32  |e$)+4) .-4:b%!12|
00002210  3d 65 78 74 72 65 66 3a  62 25 21 31 36 3d 32 0d  |=extref:b%!16=2.|
00002220  0a 3c 38 20 20 24 28 62  25 2b 34 34 29 3d 66 69  |.<8  $(b%+44)=fi|
00002230  6c 65 24 2b bd 30 3a 62  25 21 33 36 3d 2d 31 3a  |le$+.0:b%!36=-1:|
00002240  62 25 21 34 3d a4 65 65  5f 66 69 6e 64 74 61 73  |b%!4=.ee_findtas|
00002250  6b 28 6e 75 6d 25 29 0d  0a 46 26 20 20 c8 99 20  |k(num%)..F&  .. |
00002260  22 57 69 6d 70 5f 53 65  6e 64 4d 65 73 73 61 67  |"Wimp_SendMessag|
00002270  65 22 2c 31 38 2c 62 25  2c 62 25 21 34 0d 0a 50  |e",18,b%,b%!4..P|
00002280  1e 20 20 65 78 74 73 74  61 74 75 73 3d 36 3a 65  |.  extstatus=6:e|
00002290  78 74 63 6f 64 65 3d 6e  75 6d 25 0d 0a 5a 06 20  |xtcode=num%..Z. |
000022a0  cd 0d 0a 64 05 cd 0d 0a  6e 05 e1 0d 0a 78 05 3a  |...d....n....x.:|
000022b0  0d 0a 82 13 dd f2 65 78  74 65 64 69 74 5f 73 61  |......extedit_sa|
000022c0  76 65 64 0d 0a 8c 2e ea  20 72 65 70 6c 79 2c 72  |ved..... reply,r|
000022d0  65 66 3a 72 65 66 3d 62  25 21 38 3a 66 69 6c 65  |ef:ref=b%!8:file|
000022e0  24 3d a4 73 74 72 69 6e  67 30 28 62 25 2b 34 34  |$=.string0(b%+44|
000022f0  29 0d 0a 96 13 e7 20 65  78 74 73 74 61 74 75 73  |)..... extstatus|
00002300  3d 36 20 8c 0d 0a a0 3e  20 72 65 70 6c 79 3d a4  |=6 ....> reply=.|
00002310  65 64 69 74 5f 72 65 74  75 72 6e 65 64 28 65 78  |edit_returned(ex|
00002320  74 63 6f 64 65 2c 65 78  74 68 25 21 28 65 78 74  |tcode,exth%!(ext|
00002330  63 6f 64 65 2a 31 36 2b  31 32 29 2c 66 69 6c 65  |code*16+12),file|
00002340  24 29 0d 0a aa 05 cc 0d  0a b4 3d 20 72 65 70 6c  |$)........= repl|
00002350  79 3d a4 65 64 69 74 5f  73 61 76 65 64 74 6f 28  |y=.edit_savedto(|
00002360  65 78 74 63 6f 64 65 2c  65 78 74 68 25 21 28 65  |extcode,exth%!(e|
00002370  78 74 63 6f 64 65 2a 31  36 2b 31 32 29 2c 66 69  |xtcode*16+12),fi|
00002380  6c 65 24 29 0d 0a be 05  cd 0d 0a c8 0f e7 20 72  |le$).......... r|
00002390  65 70 6c 79 3d 30 20 8c  0d 0a d2 38 20 62 25 21  |eply=0 ....8 b%!|
000023a0  30 3d 34 34 2b 28 a9 28  66 69 6c 65 24 29 2b 34  |0=44+(.(file$)+4|
000023b0  29 20 80 2d 34 3a 62 25  21 31 36 3d 34 3a 62 25  |) .-4:b%!16=4:b%|
000023c0  21 31 32 3d 72 65 66 3a  62 25 21 38 3d 72 65 66  |!12=ref:b%!8=ref|
000023d0  0d 0a dc 16 20 24 28 62  25 2b 34 34 29 3d 66 69  |.... $(b%+44)=fi|
000023e0  6c 65 24 2b bd 30 0d 0a  e6 36 20 c8 99 20 22 57  |le$+.0...6 .. "W|
000023f0  69 6d 70 5f 53 65 6e 64  4d 65 73 73 61 67 65 22  |imp_SendMessage"|
00002400  2c 31 37 2c 62 25 2c a4  65 65 5f 66 69 6e 64 74  |,17,b%,.ee_findt|
00002410  61 73 6b 28 65 78 74 63  6f 64 65 29 0d 0a f0 05  |ask(extcode)....|
00002420  cd 0d 0a fa 19 c8 99 20  22 58 4f 53 5f 46 69 6c  |....... "XOS_Fil|
00002430  65 22 2c 36 2c 66 69 6c  65 24 0d 0b 04 0f 65 78  |e",6,file$....ex|
00002440  74 73 74 61 74 75 73 3d  30 0d 0b 0e 05 e1 0d 0b  |tstatus=0.......|
00002450  18 05 3a 0d 0b 22 2c f4  20 46 4e 65 65 5f 72 65  |..:..",. FNee_re|
00002460  74 75 72 6e 20 3a 20 46  6f 72 63 65 20 74 68 65  |turn : Force the|
00002470  20 72 65 74 75 72 6e 20  6f 66 20 64 61 74 61 0d  | return of data.|
00002480  0b 2c 17 f4 20 20 72 65  74 75 72 6e 73 20 30 20  |.,..  returns 0 |
00002490  66 6f 72 20 6f 6b 0d 0b  36 1d f4 20 20 6e 75 6d  |for ok..6..  num|
000024a0  25 20 20 3d 20 6e 75 6d  62 65 72 20 6f 66 20 66  |%  = number of f|
000024b0  69 6c 65 0d 0b 40 14 f4  20 20 66 6c 61 67 73 25  |ile..@..  flags%|
000024c0  3d 20 66 6c 61 67 73 0d  0b 4a 28 f4 20 20 73 74  |= flags..J(.  st|
000024d0  61 74 75 73 20 6f 6e 20  6f 6b 20 69 73 20 64 61  |atus on ok is da|
000024e0  74 61 20 69 6e 20 74 72  61 6e 73 66 65 72 8c 0d  |ta in transfer..|
000024f0  0b 54 17 f4 20 56 61 6c  69 64 20 66 6c 61 67 73  |.T.. Valid flags|
00002500  20 3a 20 30 2c 31 0d 0b  5e 22 dd a4 65 65 5f 72  | : 0,1..^"..ee_r|
00002510  65 74 75 72 6e 28 6e 75  6d 25 2c 66 6c 61 67 73  |eturn(num%,flags|
00002520  25 2c 74 79 70 65 25 29  0d 0b 68 20 ea 20 63 6e  |%,type%)..h . cn|
00002530  74 3a 6a 6f 62 25 3d a4  65 65 5f 66 69 6e 64 6a  |t:job%=.ee_findj|
00002540  6f 62 28 6e 75 6d 25 29  0d 0b 72 44 62 25 21 30  |ob(num%)..rDb%!0|
00002550  3d 33 32 3a 62 25 21 31  36 3d 26 34 35 44 38 32  |=32:b%!16=&45D82|
00002560  3a 62 25 21 31 32 3d 30  3a 62 25 21 32 30 3d 74  |:b%!12=0:b%!20=t|
00002570  79 70 65 25 3a 62 25 21  32 34 3d 6a 6f 62 25 3a  |ype%:b%!24=job%:|
00002580  62 25 21 32 38 3d 66 6c  61 67 73 25 0d 0b 7c 32  |b%!28=flags%..|2|
00002590  c8 99 20 22 57 69 6d 70  5f 53 65 6e 64 4d 65 73  |.. "Wimp_SendMes|
000025a0  73 61 67 65 22 2c 31 37  2c 62 25 2c a4 65 65 5f  |sage",17,b%,.ee_|
000025b0  66 69 6e 64 74 61 73 6b  28 6e 75 6d 25 29 0d 0b  |findtask(num%)..|
000025c0  86 15 65 78 74 73 74 61  74 75 73 3d 37 3a 63 6e  |..extstatus=7:cn|
000025d0  74 3d 30 0d 0b 90 05 f5  0d 0b 9a 11 20 f2 50 6f  |t=0......... .Po|
000025e0  6c 6c 3a 63 6e 74 2b 3d  31 0d 0b a4 23 fd 20 65  |ll:cnt+=1...#. e|
000025f0  78 74 73 74 61 74 75 73  3c 3e 37 20 84 20 71 75  |xtstatus<>7 . qu|
00002600  69 74 25 20 84 20 63 6e  74 3d 35 30 0d 0b ae 2a  |it% . cnt=50...*|
00002610  e7 20 71 75 69 74 25 20  84 20 65 78 74 73 74 61  |. quit% . extsta|
00002620  74 75 73 3d 37 20 8c 65  78 74 73 74 61 74 75 73  |tus=7 .extstatus|
00002630  3d 30 3a 3d 2d 31 0d 0b  b8 06 3d 30 0d 0b c2 05  |=0:=-1....=0....|
00002640  3a 0d 0b cc 2b f4 20 50  52 4f 43 65 65 5f 61 62  |:...+. PROCee_ab|
00002650  6f 72 74 20 3a 20 46 6f  72 63 65 20 61 62 6f 72  |ort : Force abor|
00002660  74 69 6f 6e 20 6f 66 20  65 64 69 74 0d 0b d6 1c  |tion of edit....|
00002670  f4 20 20 6e 75 6d 25 20  3d 20 6e 75 6d 62 65 72  |.  num% = number|
00002680  20 6f 66 20 66 69 6c 65  0d 0b e0 28 f4 20 66 6c  | of file...(. fl|
00002690  61 67 73 25 3d 20 31 20  74 6f 20 63 61 6c 6c 20  |ags%= 1 to call |
000026a0  50 52 4f 43 65 64 69 74  5f 61 62 6f 72 74 65 64  |PROCedit_aborted|
000026b0  0d 0b ea 1b dd f2 65 65  5f 61 62 6f 72 74 28 6e  |......ee_abort(n|
000026c0  75 6d 25 2c 66 6c 61 67  73 25 29 0d 0b f4 2c 6a  |um%,flags%)...,j|
000026d0  6f 62 25 3d a4 65 65 5f  66 69 6e 64 6a 6f 62 28  |ob%=.ee_findjob(|
000026e0  6e 75 6d 25 29 3a 65 78  74 68 25 21 28 6e 75 6d  |num%):exth%!(num|
000026f0  25 2a 31 36 29 3d 30 0d  0b fe 33 62 25 21 30 3d  |%*16)=0...3b%!0=|
00002700  32 38 3a 62 25 21 31 36  3d 26 34 35 44 38 33 3a  |28:b%!16=&45D83:|
00002710  62 25 21 31 32 3d 30 3a  62 25 21 32 30 3d 30 3a  |b%!12=0:b%!20=0:|
00002720  62 25 21 32 34 3d 6a 6f  62 25 0d 0c 08 32 c8 99  |b%!24=job%...2..|
00002730  20 22 57 69 6d 70 5f 53  65 6e 64 4d 65 73 73 61  | "Wimp_SendMessa|
00002740  67 65 22 2c 31 37 2c 62  25 2c a4 65 65 5f 66 69  |ge",17,b%,.ee_fi|
00002750  6e 64 74 61 73 6b 28 6e  75 6d 25 29 0d 0c 12 3b  |ndtask(num%)...;|
00002760  e7 20 28 66 6c 61 67 73  25 20 80 20 31 29 3d 31  |. (flags% . 1)=1|
00002770  8c f2 65 64 69 74 5f 61  62 6f 72 74 65 64 28 6e  |..edit_aborted(n|
00002780  75 6d 25 2c 65 78 74 68  25 21 28 6e 75 6d 25 2a  |um%,exth%!(num%*|
00002790  31 36 2b 31 32 29 29 0d  0c 1c 05 e1 0d 0c 26 05  |16+12)).......&.|
000027a0  3a 0d 0c 30 2d f4 20 50  52 4f 43 65 65 5f 61 62  |:..0-. PROCee_ab|
000027b0  6f 72 74 61 6c 6c 20 3a  20 46 6f 72 63 65 20 61  |ortall : Force a|
000027c0  62 6f 72 74 69 6f 6e 20  6f 66 20 61 6c 6c 0d 0c  |bortion of all..|
000027d0  3a 28 f4 20 66 6c 61 67  73 25 3d 20 31 20 74 6f  |:(. flags%= 1 to|
000027e0  20 63 61 6c 6c 20 50 52  4f 43 65 64 69 74 5f 61  | call PROCedit_a|
000027f0  62 6f 72 74 65 64 0d 0c  44 19 dd f2 65 65 5f 61  |borted..D...ee_a|
00002800  62 6f 72 74 61 6c 6c 28  66 6c 61 67 73 25 29 0d  |bortall(flags%).|
00002810  0c 4e 12 ea 20 6e 75 6d  25 3a 6e 75 6d 25 3d 2d  |.N.. num%:num%=-|
00002820  31 0d 0c 58 05 f5 0d 0c  62 1c 20 6e 75 6d 25 3d  |1..X....b. num%=|
00002830  a4 65 65 5f 66 69 6e 64  6e 65 78 74 28 6e 75 6d  |.ee_findnext(num|
00002840  25 29 0d 0c 6c 27 20 e7  20 6e 75 6d 25 3c 3e 2d  |%)..l' . num%<>-|
00002850  31 20 8c f2 65 65 5f 61  62 6f 72 74 28 6e 75 6d  |1 ..ee_abort(num|
00002860  25 2c 66 6c 61 67 73 25  29 0d 0c 76 0c fd 6e 75  |%,flags%)..v..nu|
00002870  6d 25 3d 2d 31 0d 0c 80  05 e1 0d 0c 8a 05 3a 0d  |m%=-1.........:.|
00002880  0c 94 2a f4 20 46 4e 65  65 5f 73 65 74 63 75 72  |..*. FNee_setcur|
00002890  73 6f 72 20 3a 20 73 65  74 20 63 75 72 73 6f 72  |sor : set cursor|
000028a0  20 70 6f 73 69 74 69 6f  6e 0d 0c 9e 36 f4 20 72  | position...6. r|
000028b0  65 74 75 72 6e 73 20 70  72 65 76 69 6f 75 73 20  |eturns previous |
000028c0  70 6f 73 69 74 69 6f 6e  20 28 6f 72 20 2d 32 20  |position (or -2 |
000028d0  69 66 20 6e 6f 20 72 65  73 70 6f 6e 73 65 29 0d  |if no response).|
000028e0  0c a8 1c f4 20 20 6e 75  6d 25 20 3d 20 6e 75 6d  |....  num% = num|
000028f0  62 65 72 20 6f 66 20 66  69 6c 65 0d 0c b2 39 f4  |ber of file...9.|
00002900  20 20 70 6f 73 25 20 3d  20 63 75 72 73 6f 72 20  |  pos% = cursor |
00002910  70 6f 73 69 74 69 6f 6e  20 28 6f 72 20 2d 31 20  |position (or -1 |
00002920  74 6f 20 72 65 61 64 2c  20 2d 32 20 66 6f 72 20  |to read, -2 for |
00002930  65 6e 64 29 0d 0c bc 1d  dd a4 65 65 5f 73 65 74  |end)......ee_set|
00002940  63 75 72 73 6f 72 28 6e  75 6d 25 2c 70 6f 73 25  |cursor(num%,pos%|
00002950  29 0d 0c c6 1a 6a 6f 62  25 3d a4 65 65 5f 66 69  |)....job%=.ee_fi|
00002960  6e 64 6a 6f 62 28 6e 75  6d 25 29 0d 0c d0 33 62  |ndjob(num%)...3b|
00002970  25 21 30 3d 35 36 3a 62  25 21 31 36 3d 26 34 35  |%!0=56:b%!16=&45|
00002980  44 38 35 3a 62 25 21 31  32 3d 30 3a 62 25 21 32  |D85:b%!12=0:b%!2|
00002990  30 3d 30 3a 62 25 21 32  34 3d 6a 6f 62 25 0d 0c  |0=0:b%!24=job%..|
000029a0  da 3a 62 25 21 32 38 3d  a4 65 65 5f 66 69 6e 64  |.:b%!28=.ee_find|
000029b0  66 6c 61 67 73 28 6e 75  6d 25 29 3a 62 25 21 33  |flags(num%):b%!3|
000029c0  32 3d 70 6f 73 25 3a 62  25 21 33 36 3d 2d 31 3a  |2=pos%:b%!36=-1:|
000029d0  62 25 21 34 30 3d 2d 31  0d 0c e4 32 c8 99 20 22  |b%!40=-1...2.. "|
000029e0  57 69 6d 70 5f 53 65 6e  64 4d 65 73 73 61 67 65  |Wimp_SendMessage|
000029f0  22 2c 31 38 2c 62 25 2c  a4 65 65 5f 66 69 6e 64  |",18,b%,.ee_find|
00002a00  74 61 73 6b 28 6e 75 6d  25 29 0d 0c ee 0f 65 78  |task(num%)....ex|
00002a10  74 73 74 61 74 75 73 3d  38 0d 0c f8 22 f5 3a f2  |tstatus=8...".:.|
00002a20  50 6f 6c 6c 3a fd 20 65  78 74 73 74 61 74 75 73  |Poll:. extstatus|
00002a30  3c 3e 38 20 84 20 71 75  69 74 25 0d 0d 02 1c 65  |<>8 . quit%....e|
00002a40  78 74 73 74 61 74 75 73  3d 30 3a e7 20 71 75 69  |xtstatus=0:. qui|
00002a50  74 25 20 8c 3d 2d 31 0d  0d 0c 0c 3d 65 78 74 63  |t% .=-1....=extc|
00002a60  6f 64 65 0d 0d 16 05 3a  0d 0d 20 1e dd f2 65 78  |ode....:.. ...ex|
00002a70  74 65 64 69 74 5f 63 75  72 73 6f 72 28 6a 6f 62  |tedit_cursor(job|
00002a80  25 2c 63 75 72 29 0d 0d  2a 1b 65 78 74 63 6f 64  |%,cur)..*.extcod|
00002a90  65 3d 63 75 72 3a 65 78  74 73 74 61 74 75 73 3d  |e=cur:extstatus=|
00002aa0  39 0d 0d 34 05 e1 0d 0d  3e 05 3a 0d 0d 48 43 f4  |9..4....>.:..HC.|
00002ab0  20 46 4e 65 65 5f 72 65  71 75 65 73 74 61 63 6b  | FNee_requestack|
00002ac0  28 66 6c 61 67 73 2c 63  6f 64 65 29 20 3a 20 41  |(flags,code) : A|
00002ad0  63 6b 6e 6f 77 6c 65 64  67 65 20 72 65 71 75 65  |cknowledge reque|
00002ae0  73 74 20 66 6f 72 20 45  78 74 45 64 69 74 0d 0d  |st for ExtEdit..|
00002af0  52 2b f4 20 20 66 6c 61  67 73 20 61 72 65 20 6d  |R+.  flags are m|
00002b00  6f 64 69 66 69 65 64 20  6f 72 20 70 61 73 73 65  |odified or passe|
00002b10  64 20 74 68 72 6f 75 67  68 0d 0d 5c 26 f4 20 20  |d through..\&.  |
00002b20  63 6f 64 65 20 69 73 20  69 6e 74 65 72 6e 61 6c  |code is internal|
00002b30  20 72 65 66 65 72 65 6e  63 65 20 63 6f 64 65 0d  | reference code.|
00002b40  0d 66 39 f4 20 20 72 65  74 75 72 6e 73 20 6e 75  |.f9.  returns nu|
00002b50  6d 62 65 72 20 6f 66 20  66 69 6c 65 20 6f 72 20  |mber of file or |
00002b60  2d 31 20 69 66 20 75 6e  61 62 6c 65 20 74 6f 20  |-1 if unable to |
00002b70  61 6c 6c 6f 63 61 74 65  0d 0d 70 24 f4 20 62 25  |allocate..p$. b%|
00002b80  20 62 6c 6f 63 6b 20 6d  75 73 74 20 72 65 6d 61  | block must rema|
00002b90  69 6e 20 75 6e 61 6c 74  65 72 65 64 0d 0d 7a 1f  |in unaltered..z.|
00002ba0  dd a4 65 65 5f 72 65 71  75 65 73 74 61 63 6b 28  |..ee_requestack(|
00002bb0  66 6c 61 67 73 2c 63 6f  64 65 29 0d 0d 84 30 6a  |flags,code)...0j|
00002bc0  6f 62 25 3d 28 62 25 21  32 34 29 20 80 20 26 46  |ob%=(b%!24) . &F|
00002bd0  46 46 46 3a 6e 75 6d 25  3d a4 65 78 74 65 64 69  |FFF:num%=.extedi|
00002be0  74 5f 68 61 6e 64 6c 65  6e 75 6d 0d 0d 8e 11 e7  |t_handlenum.....|
00002bf0  20 6e 75 6d 25 3d 2d 31  8c 3d 2d 31 0d 0d 98 27  | num%=-1.=-1...'|
00002c00  6a 6f 62 25 3d 6a 6f 62  25 2b 28 28 28 65 78 74  |job%=job%+(((ext|
00002c10  74 6f 70 25 3c 3c 36 29  2b 6e 75 6d 25 29 3c 3c  |top%<<6)+num%)<<|
00002c20  31 36 29 0d 0d a2 38 65  78 74 68 25 21 28 6e 75  |16)...8exth%!(nu|
00002c30  6d 25 2a 31 36 2b 31 32  29 3d 63 6f 64 65 2b 28  |m%*16+12)=code+(|
00002c40  31 3c 3c 33 31 29 3a 65  78 74 68 25 21 28 6e 75  |1<<31):exth%!(nu|
00002c50  6d 25 2a 31 36 29 3d 6a  6f 62 25 0d 0d ac 32 65  |m%*16)=job%...2e|
00002c60  78 74 68 25 21 28 6e 75  6d 25 2a 31 36 2b 34 29  |xth%!(num%*16+4)|
00002c70  3d 66 6c 61 67 73 3a 65  78 74 68 25 21 28 6e 75  |=flags:exth%!(nu|
00002c80  6d 25 2a 31 36 2b 38 29  3d 62 25 21 34 0d 0d b6  |m%*16+8)=b%!4...|
00002c90  32 62 25 21 31 32 3d 62  25 21 38 3a 62 25 21 31  |2b%!12=b%!8:b%!1|
00002ca0  36 3d 26 34 35 44 38 31  3a 62 25 21 32 34 3d 6a  |6=&45D81:b%!24=j|
00002cb0  6f 62 25 3a 62 25 21 32  38 3d 66 6c 61 67 73 0d  |ob%:b%!28=flags.|
00002cc0  0d c0 24 c8 99 20 22 57  69 6d 70 5f 53 65 6e 64  |..$.. "Wimp_Send|
00002cd0  4d 65 73 73 61 67 65 22  2c 31 37 2c 62 25 2c 62  |Message",17,b%,b|
00002ce0  25 21 34 0d 0d ca 09 3d  6e 75 6d 25 0d 0d d4 05  |%!4....=num%....|
00002cf0  3a 0d 0d de 43 f4 20 46  4e 65 78 74 65 64 69 74  |:...C. FNextedit|
00002d00  5f 73 61 76 65 6e 61 6d  65 20 3a 20 52 65 74 75  |_savename : Retu|
00002d10  72 6e 20 61 20 6e 61 6d  65 20 6f 66 20 61 20 73  |rn a name of a s|
00002d20  63 72 61 70 20 66 69 6c  65 20 74 6f 20 73 61 76  |crap file to sav|
00002d30  65 20 74 6f 0d 0d e8 1a  dd a4 65 78 74 65 64 69  |e to......extedi|
00002d40  74 5f 73 61 76 65 6e 61  6d 65 28 6e 24 29 0d 0d  |t_savename(n$)..|
00002d50  f2 27 e7 20 a9 28 6e 24  29 3e 31 30 20 8c 3d 22  |.'. .(n$)>10 .="|
00002d60  3c 57 69 6d 70 24 53 63  72 61 70 44 69 72 3e 2e  |<Wimp$ScrapDir>.|
00002d70  22 2b c3 7e 91 0d 0d fc  27 ea 20 66 69 6c 65 24  |"+.~....'. file$|
00002d80  3a 66 69 6c 65 24 3d 22  3c 57 69 6d 70 24 53 63  |:file$="<Wimp$Sc|
00002d90  72 61 70 44 69 72 3e 2e  22 2b 6e 24 0d 0e 06 1b  |rapDir>."+n$....|
00002da0  c8 95 20 a4 66 69 6c 65  74 79 70 65 28 66 69 6c  |.. .filetype(fil|
00002db0  65 24 29 3c 3e 2d 32 0d  0e 10 21 20 66 69 6c 65  |e$)<>-2...! file|
00002dc0  24 3d 22 3c 57 69 6d 70  24 53 63 72 61 70 44 69  |$="<Wimp$ScrapDi|
00002dd0  72 3e 2e 22 2b c3 7e 91  0d 0e 1a 05 ce 0d 0e 24  |r>."+.~........$|
00002de0  0a 3d 66 69 6c 65 24 0d  0e 2e 05 3a 0d ff        |.=file$....:..|
00002dee