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