Home » Archimedes archive » Zipped Apps » Alps » !ALPS/!RunImage

!ALPS/!RunImage

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

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

Tape/disk: Home » Archimedes archive » Zipped Apps » Alps
Filename: !ALPS/!RunImage
Read OK:
File size: 1E236 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM >$.!ALPS.!RunImage
   20REM LEN Alpine Software/Philip Hawthorne 1989,1990
   30REM With modifications by Keith McAlpine
   40version$="5.09A, 3-Mar-1991"
   50
   60DIM block &200,block2 &200,mistake 300,quitblk 100
   70
   80ON ERROR MODE 0:PRINT REPORT$:PRINT ":";ERL:SYS"Wimp_CloseDown":END
   90
  100@%=&10:ctr%=0
  110mode%=MODE
  120testing=FALSE
  130resources_ok=FNOS_Var("Alps$Resources") AND FNOS_Var("Alps$Data")
  140
  150SYS "OS_GetEnv" TO Env$
  160I%=INSTR(Env$,CHR$34,INSTR(Env$,CHR$34)+1)
  170ef$=MID$(Env$,I%+1)
  180WHILE LEFT$(ef$,1)=" "
  190ef$=MID$(ef$,2)
  200ENDWHILE
  210
  220theLastMenu = 0 : tick$=""
  230
  240type$="CF8"
  250
  260DIM tempBlk 4
  270$tempBlk = "TASK"
  280SYS "Wimp_Initialise",200,!tempBlk,"ALPS" TO ,task%
  290
  300IF NOT resources_ok THEN ERROR 1,"The ALPS resources are not available. Open up the directory viewer with !ALPS in it.":SYS "Wimp_CloseDown",task%,!tempBlk:END
  310PROCinstall_texted
  320PROCinit2
  330ON ERROR dialog=FNerrorbox(REPORT$,ERR,1,-99):GOTO 500
  340PROCnew
  350PROCassemble(armcode%)
  360PROCfill(text_block%,text_blocksize%,dummy_spc)
  370PROCfill(verb_type,2*(maxvbn+1),0)
  380PROCfill(nref+4,nref_size-4,0)
  390PROCfill(aref+4,aref_size-4,0)
  400PROCclear
  410claimpoll$="":claimmenu$="":quit%=FALSE
  420
  430path$=ef$
  440IF ef$<>"" THEN
  450$filename%=FNleafname(ef$)
  460PROCload_all(ef$)
  470PROCopen(ALPSmain,400,800,600,600)
  480ENDIF
  490
  500REPEAT
  510SYS Poll,,block TO reason
  520CASE reason OF
  530 WHEN 1: PROCredraw(!block)
  540 WHEN 2: SYS OpenW,,block
  550 WHEN 3: PROCclose(!block)
  560 WHEN 6: PROCcheckmouse(!block,block!4,block!8,block!12,block!16,block!20)
  570 WHEN 7: PROCsave:REM User has dragged 'Alps' file icon to another window
  580 WHEN 8: PROCuserkeypressed(!block,block!4,block!24)
  590 WHEN 9: PROCmenuselect(!block,block!4)
  600 WHEN 17,18: PROCreceive(block)
  610 ENDCASE
  620UNTIL quit%
  630SYS "Wimp_CloseDown",task%,!tempBlk:IF testing THEN OSCLI("FX4"):REPORT:PRINT" at line ";ERL:END
  640END
  650
  660DEF PROCinit2
  670PROCgetmodeinfo:oldsize=scrnsize
  680data_saved=TRUE:loaded$=""
  690DIM a_list$(10)
  700small_areasize%=30
  710DIM small_area% small_areasize%
  720
  730DIM D%(3),shade%(15),scale 15,pixtr 15
  740REM ---------------------------------
  750REM Manifest constants for the system
  760
  770maxrms=1000:maxobs=255:maxsw%=10:maxtokens=128
  780
  790listoption=2:REM Default LISTO
  800
  810DIM pos$(3)
  820FOR I%=0 TO 3:READ pos$(I%):NEXT
  830DATA T,B,L,R
  840
  850DIM oldpars 73
  860FOR I%=0 TO 72
  870READ B%:oldpars?I%=B% AND &F
  880NEXT
  890
  900DATA 0,0,0,0,0,1,161,193
  910DATA 161,193,2,1,0,128,128,0
  920DATA 128,0,0,128,0,1,1,1
  930DATA 1,65,1,0,0,0,65,0
  940DATA 130,194,130,194,193,193,129,129
  950DATA 193,193,131,195,1,130,128,128
  960DATA 2,2,66,0,1,66,3,67
  970DATA 0,1,1,65,65,65,3,0
  980DATA 1,1,130,130,130,2,130,2
  990DATA 2
 1000
 1010maxlen=10:REM Maximum word length in vocabulary
 1020
 1030REM Room and object data block lengths (in bytes)
 1040r_len=74:o_len=16
 1050
 1060num_vars=60:REM Number of ALPS variables
 1070var_size=num_vars*2:REM 2 bytes per variable
 1080
 1090maxmsg=65535:maxobn=255:maxvbn=255:maxconst=65535
 1100maxadj=255:maxprep=50:maxconj=10:maxspec=30:maxnoise=50:maxpix=50
 1110
 1120noun_size=3000
 1130verb_size=3000
 1140adjc_size=2000
 1150prep_size=400:REM Size of prepositions list
 1160conj_size=50:REM size of conjunctions list
 1170spec_size=100:REM size of 'specials' list (IT, THEM, ALL)
 1180noise_size=200:REM size of 'noise' list (THE,A,AN)
 1190aref_size=2000:REM size of adjective object reference table
 1200nref_size=2000:REM size of nouns object reference table
 1210pix_size=1000:REM size of pix filename list
 1220
 1230DIM nouns noun_size,verbs verb_size,adjects adjc_size,preps prep_size,conjs conj_size,specs spec_size,noise noise_size,pixs pix_size
 1240
 1250DIM aref aref_size,nref nref_size,verb_type 2*(maxvbn+1)
 1260
 1270noun_end=nouns+noun_size:verb_end=verbs+verb_size
 1280adjc_end=adjects+adjc_size:prep_end=preps+prep_size:conj_end=conjs+conj_size:spec_end=specs+spec_size:noise_end=noise+noise_size
 1290aref_end=aref+aref_size:nref_end=nref+nref_size:pix_end=pixs+pix_size
 1300
 1310REM Printer codes etc
 1320condensed=15:reset=64
 1330pline$=STRING$(132,"-")
 1340pline2$=STRING$(79,"-")
 1350
 1360REM ------- Set up data areas for rooms and objects and clear them ------
 1370DIM rdata% (maxrms+1)*r_len,odata% (maxobs+1)*o_len,controom% 12
 1380
 1390REM Set up the save buffers
 1400initareasize=7*(maxobs+1)+22*(maxrms+1)
 1410DIM initsave initareasize,ramsave initareasize+var_size+128
 1420$controom%="0":cont_room=0:container=FALSE
 1430
 1440rptr=1:optr=1:last_room=1:last_object=1
 1450
 1460REM areas to store flag descriptions
 1470maxd%=13
 1480DIM o_flags% maxd%*8,r_flags% maxd%*8
 1490
 1500REM Set the flag descriptions
 1510FOR I%=7 TO 0 STEP-1
 1520READ flag$
 1530$(o_flags%+I%*maxd%)=LEFT$(flag$,maxd%-1)
 1540NEXT
 1550
 1560FOR I%=7 TO 0 STEP-1
 1570READ flag$
 1580$(r_flags%+I%*maxd%)=LEFT$(flag$,maxd%-1)
 1590NEXT
 1600
 1610REM Object Flag descriptions
 1620DATA "","",Being worn,Wearable,Scenery,Invisible,Takeable,Light source
 1630
 1640REM Room flag descriptions
 1650DATA "","","","","","",Visited,Light
 1660
 1670REM Room Exit flag descriptions
 1680DATA Invisible,Closed door,Open door,Locked door,Unl'ked door,Blocked,Reserved,Reserved
 1690
 1700DIM exit_flag$(7)
 1710FOR flag=7 TO 0 STEP-1:READ exit_flag$(flag):NEXT
 1720
 1730DIM proc% 12,exit% 12,def% 12
 1740$proc%="":$def%="":$exit%=""
 1750
 1760REM prg_sel% = Section of program selected for editing
 1770REM            2=Main, 3=Proc, 4=Define, 5=Exit
 1780REM progval$ = STR$ value of proc or exit number or name of selected verb
 1790
 1800prg_sel%=2:progval$=""
 1810
 1820REM voc_sect% = Section of vocabulary selected for editing
 1830REM             1=Nouns, 2=Verbs
 1840voc_sect%=1
 1850
 1860DIM voc$(8),prog$(6)
 1870voc$()="","Nouns","Verbs","Adjectives","Prepositions","Conjunctions","Specials","Noise"
 1880prog$()="","","Main","Procedure","Define","Exit"
 1890
 1900pbsize=(scrnsize DIV 2)+400:REM size of picture buffer
 1910IF pbsize<25*1024 THEN pbsize=25*1024:REM Ensure at least 25k - 12.04.90
 1920
 1930DIM picbuf pbsize
 1940
 1950prgbsize=&1000
 1960DIM prgbuf% prgbsize
 1970
 1980REM ------- Some constants for the character designer -------
 1990
 2000cur_chr%=ASC"A":max_chr%=125
 2010DIM charnum 12
 2020$charnum=""
 2030
 2040REM ------- Dimension the other arrays needed -------
 2050ucsize=500
 2060SYS "OS_File",5,"<ALPS$Resources>.ASIobjcode" TO ftype,,,,codesize
 2070pbyte_size=148
 2080DIM armcode% 1000,pbytes pbyte_size,work% &1100,asicode% codesize+10
 2090DIM usercode% ucsize
 2100run=asicode%:printmsg=asicode%+4:search=asicode%+12:findcode=asicode%+16
 2110setup=asicode%+20
 2120OSCLI("LOAD <ALPS$Resources>.ASIobjcode "+STR$~asicode%)
 2130DIM pal%(2)
 2140DIM q% &2000,erroraddr%(4)
 2150DIM indexdata% 32*24+20
 2160maxbuf%=&3000
 2170DIM buffer% maxbuf%:curbuff%=buffer%
 2180nh%=32:ni%=11
 2190DIM handle%(nh%+1),wident$(nh%),wptr%(nh%)
 2200FOR I%=0TOnh%:handle%(I%)=I%-1:wident$(I%)="":NEXT:handleSP%=nh%
 2210DIM icon%(ni%+1),iconbar$(ni%)
 2220FOR I%=0 TO ni%:icon%(I%)=-1:READ iconbar$(I%):NEXT
 2230icon%(ni%+1)=-1
 2240oldicon%=0:oldrmicon%=0
 2250
 2260REM ------ Names of icons (sprites) on icon bar ------
 2270DATA disk35,arclogo,door,key,quill,info,listing,chardes,vocab,swap,eye,face
 2280
 2290diskicon=0:texticon=4:progicon=6:staricon=99
 2300vocabicon=8:faceicon=99:arcicon=1:swapicon=9
 2310alpsicon=5:helpicon=13:eyeicon=10
 2320THEkeyicon=3:THEdooricon=2:texticon=4:THEcharicon=7
 2330
 2340DIM menufree% &1800:menuend%=menufree%+&1800
 2350DIM menulist% &100
 2360DIM qBlk% 256
 2370dx%=2:lsY%=40:ypixel%=4:chX%=16:chY%=32
 2380currentwindow%=-1:currenticon%=-1
 2390spritef$=""
 2400DIM mb_wident% 12,filename% 64,filename2% 64,import% 64
 2410IF testing $filename%="demo" ELSE $filename%="starter"
 2420$filename2%="charset":$import%=""
 2430DIM start(20),sys_b2% &300,os_block 50
 2440
 2450PROCKeyWordRead
 2460PROCErrorMsgRead
 2470
 2480REM ----- Define the "Wimp" and "OS" SYS numbers ------
 2490Wimp=&400C0
 2500CreateW=Wimp+1
 2510CreateI=Wimp+2
 2520DeleteW=Wimp+3
 2530DeleteI=Wimp+4
 2540OpenW=Wimp+5
 2550CloseW=Wimp+6
 2560Poll=Wimp+7
 2570RedrawW=Wimp+8
 2580UpdateW=Wimp+9
 2590GetW=Wimp+11
 2600GetWI=Wimp+&C
 2610SetCaret=Wimp+&12
 2620GetCaret=Wimp+&13
 2630GetR=Wimp+&A
 2640SetI=Wimp+&D
 2650GetI=Wimp+&E
 2660GetP=Wimp+&F
 2670Drag=Wimp+&10
 2680ForceR=Wimp+&11
 2690CreateM=Wimp+&14
 2700SetP=Wimp+&18
 2710GetOutline=Wimp+&E0
 2720ReadPal=&2F
 2730
 2740REM ------ Set up our own sprite area and read the sprites in ------
 2750SYS "OS_File",5,"<ALPS$Resources>.AlpsSprite" TO ,,,,spritesize
 2760spritesize+=4
 2770DIM spritearea% spritesize
 2780!spritearea%=spritesize
 2790SYS "OS_SpriteOp",266,spritearea%,"<Alps$Resources>.AlpsSprite"
 2800DIM fontcounts% 255,mb_wident% 24
 2810
 2820REM ------ Set up the wimps and their handles ------
 2830
 2840DIMrgb(19,3)
 2850PROCloadtemplates("<Alps$Resources>.ALPS")
 2860
 2870REM ------ Name the window handles ------
 2880objhandle=handle%(FNmatchident("objected"))
 2890roomhandle=handle%(FNmatchident("roomedit"))
 2900texthandle=handle%(FNmatchident("texted"))
 2910design=handle%(FNmatchident("chrdesign"))
 2920infohandle=handle%(FNmatchident("info"))
 2930savehandle=handle%(FNmatchident("saveas"))
 2940ALPSmain=handle%(FNmatchident("iconbar")):dialogue%=0
 2950setuph=handle%(FNmatchident("Setup"))
 2960desticon=47:exitprogicon=48
 2970
 2980iconbar% = -2
 2990windowindex%=nh%+1
 3000
 3010PROCchangeicon(infohandle,7,version$,dummy)
 3020
 3030firstIconBarIcon% = FNiconbar(spritearea%, "face",31,19)
 3040THEmiscicon=firstIconBarIcon%
 3050
 3060
 3070REM ------ Define the colours ------
 3080barfgcol=11:barbgcol=3
 3090`wbcol=0:`tbcol=2:`sco=&3:`mbcol=&B
 3100`wfcol=7:`tfcol=7:`sci=&D:`tbcol2=&C
 3110
 3120cur_pal%=7:phys_col%=16
 3130
 3140first_token=&30:REM Lowest keyword token value
 3150PROCfind_token(keyword$(),"INC",var_token,dummy):REM Tokens from here up allow variables
 3160PROCfind_token(keyword$(),"DEFINE",def_token,dummy)
 3170PROCfind_token(keyword$(),"STOP",stop_token,dummy)
 3180PROCfind_token(keyword$(),"END",end_token,dummy)
 3190PROCfind_token(keyword$(),"EXIT",exit_token,dummy)
 3200PROCfind_token(keyword$(),"DEFPROC",proc_token,dummy)
 3210PROCfind_token(keyword$(),"PREP",prep_token,dummy)
 3220PROCfind_token(keyword$(),"NOTPREP",notprep_token,dummy)
 3230
 3240REM ------ Set up the dictionary ------
 3250dict_size=1000
 3260DIM dict% dict_size,tok$(maxtokens)
 3270!dict%=3:dict%?2=&80
 3280
 3290REM ------ Find the available memory ------
 3300memfree=(HIMEM-END)-50000
 3310IF memfree<0 THEN null=FNerrorbox("Not enough memory available in 'Next' slot",0,1,-99):SYS "Wimp_CloseDown":END
 3320maxtext%=0.83*memfree
 3330code_size%=0.17*memfree
 3340
 3350REM ------ Areas for storing messages, switch info etc; ------
 3360DIM text% maxtext%,swdata% 12*maxsw%,switch_vals(maxsw%),m_msg% 12
 3370DIM switch_buf% 2*maxsw%+1
 3380$swdata%=STRING$(12*maxsw%,CHR$13):$m_msg%=""
 3390
 3400REM ------ Initialise the text area ------
 3410!text%=1:text%!2=&B:text%!6=0:text%!10=0
 3420DIM st_msg% 12,end_msg% 12
 3430$st_msg%="1":$end_msg%="1"
 3440mptr=1:REM The current message number
 3450text_owner$="":REM The current owner of any text in the text editor
 3460
 3470datavalid=TRUE
 3480
 3490REM ------ Set up the program area ------
 3500DIM program% code_size%
 3510!program%=0
 3520program%!4=0
 3530errflag=FALSE
 3540
 3550REM ------ Set up the menu structure ------
 3560m_controom%=FNcrmenu
 3570DATA "#Number,$controom%(5)"
 3580m_contain=FNcrmenu
 3590DATA "Container,Use room>m_controom%"
 3600m_chardes%=FNcrmenu
 3610DATA "#CHANGE TO?,$charnum(2)"
 3620char_fname%=FNcrmenu
 3630DATA "#Filename:,$filename2%(11)"
 3640menu_fname%=FNcrmenu
 3650DATA "#Filename:,$filename%(11)"
 3660m_gotomsg%=FNcrmenu
 3670DATA "$m_msg%(12)"
 3680m_proc%=FNcrmenu
 3690DATA "#Number:,$proc%(4)"
 3700m_def%=FNcrmenu
 3710DATA "#Verb:,$def%(12)"
 3720m_exit%=FNcrmenu
 3730DATA "#Number:,$exit%(4)"
 3740m_listopts=FNcrmenu
 3750DATA "#Display:,Vocabulary as numbers,Vocabulary as strings"
 3760m_import%=FNcrmenu
 3770DATA "#Filename:,$import%(11)"
 3780sw1=FNcrmenu:nxtsw=swdata%+12
 3790DATA "#Value:,$swdata%(12)"
 3800sw2=FNcrmenu:nxtsw=nxtsw+12
 3810DATA "#Value:,$nxtsw"
 3820sw3=FNcrmenu:nxtsw=nxtsw+12
 3830DATA "#Value:,$nxtsw"
 3840sw4=FNcrmenu:nxtsw=nxtsw+12
 3850DATA "#Value:,$nxtsw"
 3860sw5=FNcrmenu:nxtsw=nxtsw+12
 3870DATA "#Value:,$nxtsw"
 3880sw6=FNcrmenu:nxtsw=nxtsw+12
 3890DATA "#Value:,$nxtsw"
 3900sw7=FNcrmenu:nxtsw=nxtsw+12
 3910DATA "#Value:,$nxtsw"
 3920sw8=FNcrmenu:nxtsw=nxtsw+12
 3930DATA "#Value:,$nxtsw"
 3940sw9=FNcrmenu:nxtsw=nxtsw+12
 3950DATA "#Value:,$nxtsw"
 3960sw10=FNcrmenu:nxtsw=nxtsw+12
 3970DATA "#Value:,$nxtsw"
 3980m_switch%=FNcrmenu
 3990DATA "#Switch,No switches,1>sw1,2>sw2,3>sw3,4>sw4,5>sw5,6>sw6,7>sw7,8>sw8,9>sw9,10>sw10"
 4000m_text%=FNcrmenu
 4010DATA "#MESSAGE,Insert,Overtype#,Cut   (Ctrl-X),Copy  (Ctrl-C),Paste (Ctrl-V)#,Previous  (f5),Next      (f6),First     (f7),Last      (f8),Goto msg#>m_gotomsg%,Edit switch#>m_switch%,Print this"
 4020m_prog%=FNcrmenu
 4030DATA "#Program Editor,Insert,Overtype#,Cut   (Ctrl-X),Copy  (Ctrl-C),Paste (Ctrl-V)#,Main,Procedure>m_proc%,Define>m_def%,Exit routine#>m_exit%,Print this,List options>m_listopts"
 4040m_vocab%=FNcrmenu
 4050DATA "#Vocabulary,Insert,Overtype#,Cut   (Ctrl-X),Copy  (Ctrl-C),Paste (Ctrl-V)#,Nouns,Verbs,Adjectives,Prepositions,Conjunctions,Specials,Noise#,Print this"
 4060pixmenu=FNcrmenu
 4070DATA "#Pictures,Print"
 4080progmenu=FNcrmenu
 4090DATA "#Program,Print,Import#>m_import%,Run"
 4100charmenu=FNcrmenu
 4110DATA "#CharSet,Save>char_fname%,Load>char_fname%"
 4120vocabmenu=FNcrmenu
 4130DATA "#Vocabulary,Print"
 4140diskmenu=FNcrmenu
 4150DATA "#Files,Save all>savehandle,Setup disk"
 4160facemenu=FNcrmenu
 4170DATA "#Actors,Print"
 4180miscmenu=FNcrmenu
 4190DATA "#ALPS,Info>infohandle,Quit"
 4200msg2%=FNcrmenu
 4210DATA "$st_msg%(6)"
 4220msg3%=FNcrmenu
 4230DATA "$end_msg%(6)"
 4240msg1%=FNcrmenu
 4250DATA "#From/To?,Start msg>msg2%,End msg>msg3%"
 4260textmenu=FNcrmenu
 4270DATA "#Text,Print>msg1%,Import>m_import%"
 4280objmenu=FNcrmenu
 4290DATA "#Objects,Print,Import>m_import%"
 4300mo_user5=FNcrmenu:ofl%=o_flags%+maxd%*3
 4310DATA "#Description:,$o_flags%(13)"
 4320mo_user4=FNcrmenu:ofl%=ofl%+maxd%
 4330DATA "#Description:,$ofl%(13)"
 4340mo_user3=FNcrmenu:ofl%=ofl%+maxd%
 4350DATA "#Description:,$ofl%(13)"
 4360mo_user2=FNcrmenu:ofl%=ofl%+maxd%
 4370DATA "#Description:,$ofl%(13)"
 4380mo_user1=FNcrmenu:ofl%=ofl%+maxd%
 4390DATA "#Description:,$ofl%(13)"
 4400mo_user0=FNcrmenu:ofl%=ofl%+maxd%
 4410DATA "#Description:,$ofl%(13)"
 4420m_objflag=FNcrmenu
 4430DATA "#Flags,7 Light source,6 Takeable,5 Invisible,4 Scenery,3 Wearable,2 Being worn,1 User flag>mo_user1,0 User flag>mo_user0"
 4440roommenu=FNcrmenu
 4450DATA "#Rooms,Print,Import>m_import%"
 4460mr_user6=FNcrmenu:rfl%=r_flags%+maxd%*2
 4470DATA "#Description:,$r_flags%(13)"
 4480mr_user5=FNcrmenu:rfl%=rfl%+maxd%
 4490DATA "#Description:,$rfl%(13)"
 4500mr_user4=FNcrmenu:rfl%=rfl%+maxd%
 4510DATA "#Description:,$rfl%(13)"
 4520mr_user3=FNcrmenu:rfl%=rfl%+maxd%
 4530DATA "#Description:,$rfl%(13)"
 4540mr_user2=FNcrmenu:rfl%=rfl%+maxd%
 4550DATA "#Description:,$rfl%(13)"
 4560mr_user1=FNcrmenu:rfl%=rfl%+maxd%
 4570DATA "#Description:,$rfl%(13)"
 4580mr_user0=FNcrmenu:rfl%=rfl%+maxd%
 4590DATA "#Description:,$rfl%(13)"
 4600m_rmflag=FNcrmenu
 4610DATA "#Flags,7 Light,6 Visited,5 User (Trans)>mr_user5,4 User (Open)>mr_user4,3 User flag>mr_user3,2 User flag>mr_user2,1 User flag>mr_user1,0 User flag>mr_user0"
 4620m_exitf=FNcrmenu
 4630DATA "#Flags,7 Invisible exit,6 Closed door,5 Open door,4 Locked door,3 Unlocked door,2 Blocked exit,1 Reserved,0 Reserved"
 4640
 4650ENDPROC
 4660
 4670REM ------ Now we have the Procedures and Functions!! ------
 4680
 4690DEF PROCgetmodeinfo
 4700LOCAL x,y,xeig,yeig,cols
 4710mode=MODE
 4720
 4730SYS "OS_ReadModeVariable",mode,1 TO ,,textcols%
 4740SYS "OS_ReadModeVariable",mode,2 TO ,,textrows%
 4750text_maxllen%=textcols%-2
 4760SYS "OS_ReadModeVariable",mode,3 TO ,,cols
 4770SYS "OS_ReadModeVariable",mode,4 TO ,,xeig
 4780SYS "OS_ReadModeVariable",mode,5 TO ,,yeig
 4790SYS "OS_ReadModeVariable",mode,7 TO ,,scrnsize
 4800SYS "OS_ReadModeVariable",mode,11 TO ,,x
 4810SYS "OS_ReadModeVariable",mode,12 TO ,,y
 4820scrw=((x+1)<<xeig)-1:scrh=((y+1)<<yeig)-1
 4830ENDPROC
 4840
 4850DEF PROCclear
 4860PROCfill(odata%,(maxobs+1)*o_len,0)
 4870PROCfill(rdata%,(maxrms+1)*r_len,0)
 4880PROCfill(program%+4,code_size%-20,0)
 4890REM PROCfill(initsave,initareasize,0)
 4900ENDPROC
 4910
 4920
 4930DEF PROCreturn(x%,y%)
 4940PROCcol(128+12):PROCcol(7)
 4950PROCcentre(" Hit any key/button to return to the editor ",y%)
 4960REPEAT
 4970MOUSE X%,Y%,B%
 4980UNTIL B%=0
 4990
 5000REPEAT
 5010any=INKEY(0)
 5020MOUSE X%,Y%,B%
 5030UNTIL any>0 OR B%>0
 5040ENDPROC
 5050
 5060DEF PROCcentre(t$,r)
 5070PRINTTAB((textcols%-LEN t$+1) DIV 2,r);t$;
 5080ENDPROC
 5081
 5082DEF FNtoUpper(text$)
 5083LOCAL I%,A$
 5084FOR I%=1 TO LEN text$
 5085A$+=CHR$(ASC(MID$(text$,I%,1)) AND &DF)
 5086NEXT
 5087=A$
 5090
 5100REM ------ General window handling routines ------
 5110
 5120DEF PROCdeletewindow(I%)
 5130!q%=handle%(I%)
 5140handle%(I%)=handleSP%:handleSP%=I%
 5150SYS DeleteW,,q%
 5160wident$(I%)=""
 5170ENDPROC
 5180
 5190DEF PROCloadtemplates(tfile$)
 5200tmp%=0
 5210SYS "Wimp_OpenTemplate",,tfile$
 5220tf_index%=0:REPEAT
 5230$mb_wident%="*"
 5240SYS "Wimp_LoadTemplate",,q%+4,curbuff%,buffer%+maxbuf%,fontcounts%,mb_wident%,tf_index% TO ,,curbuff%,,,,tf_index%
 5250IF tf_index%<>0 THEN PROCloadtemp($mb_wident%)
 5260UNTIL tf_index%=0
 5270SYS "Wimp_CloseTemplate"
 5280ENDPROC
 5290
 5300DEF PROCloadtemp(wident$)
 5310I%=FNmatchident(wident$):IF I%<>-1 THEN PROCdeletewindow(I%)
 5320q%!68=spritearea%    : REM user sprite area
 5330PROCcrwindow(q%+4,wident$)
 5340ENDPROC
 5350
 5360DEF PROChighlight(I%)
 5370ENDPROC
 5380SYS SetCaret,handle%(I%),-1,0,0,&2000000,0
 5390ENDPROC
 5400
 5410DEF PROCretitle(handle%,newtitle$,RETURN handle%)
 5420index%=windowindex%
 5430REPEAT
 5440  index%-=1: IFindex%<0 ERROR 255,"Invalid window"
 5450UNTIL handle%(index%)=handle%
 5460!q%=handle%
 5470SYS GetWI,,q%
 5480SYS DeleteW,,q%
 5490flags%=q%!60
 5500IF (flags% AND 256)=0 THEN $(q%+76)=LEFT$(newtitle$,11) ELSE $(!(q%+76))=LEFT$(newtitle$,39)
 5510SYS CreateW,,q%+4 TO handle%
 5520handle%(index%)=handle%
 5530ENDPROC
 5540
 5550DEF PROCretitle_text(title$)
 5560!block=texthandle
 5570SYS GetWI,,block
 5580$(!(block+76))=LEFT$(title$,39)
 5590block!16+=36
 5600block!8=block!16 - 36
 5610SYS ForceR,-1,block!4,block!8,block!12,block!16
 5620ENDPROC
 5630
 5640DEF PROCcrwindow(q%,wident$)
 5650SYS CreateW,,q% TO handle%
 5660m%=handleSP%:handleSP%=handle%(handleSP%):handle%(m%)=handle%
 5670!q%=handle%
 5680SYS GetW,,q%
 5690currentwindow%=m%:wident$(m%)=wident$
 5700currenticon%=-1
 5710PROChighlight(m%)
 5720ENDPROC
 5730
 5740DEF PROCclose(wind)
 5750i%=ni%+1
 5760CASE wind OF
 5770 WHEN objhandle:i%=THEkeyicon:IF icon%(i%)<>-1 PROCstore_obj(optr)
 5780 WHEN roomhandle: i%=THEdooricon:IF icon%(i%)<>-1 PROCstore_room(rptr)
 5790 WHEN texthandle
 5800   i%=texticon
 5810   PROCremove_markers
 5820   CASE text_owner$ OF
 5830     WHEN "texted" : PROCstore_msg
 5840     WHEN "program" : IF NOT text_ok THEN PROCstore_prog
 5850     WHEN "vocab" : IF NOT text_ok THEN PROCstore_vocab
 5860     WHEN "pix" : PROCstore_pix
 5870   ENDCASE
 5880   IF NOT errflag THEN
 5890     text_owner$="":REM release Text Editor window
 5900     PROCfill(text_block%,text_blocksize%,dummy_spc)
 5910   ENDIF
 5920 WHEN design: i%=THEcharicon:SYS ForceR,-1,0,0,scrw+1,scrh+1
 5940ENDCASE
 5950IF (text_owner$="program" AND errflag AND wind=texthandle) OR (text_owner$="vocab" AND errflag AND wind=texthandle) OR (text_owner$="pix" AND errflag AND wind=texthandle) OR (text_owner$="texted" AND errflag AND wind=texthandle) THEN
 5960ELSE
 5970  icon%(i%)=-1
 5980  !block=wind
 5990  SYS CloseW,,block
 6000ENDIF
 6010ENDPROC
 6020
 6030DEF PROCopen(handle,x,y,w,d)
 6040!block=handle
 6050block!4=x:block!8=y-d
 6060block!12=x+w:block!16=y
 6070block!20=0:block!24=0
 6080block!28=-1
 6090SYS OpenW,,block
 6100ENDPROC
 6110
 6120DEF PROCredraw(handle)
 6130block!0=handle
 6140SYS RedrawW,0,block TO more%
 6150PROCinfo(block+4)
 6160IF handle=texthandle THEN dummy=FNredraw_text(TRUE)
 6170ENDPROC
 6180
 6190DEF PROCforceR(handle)
 6200REM Force the given window ONLY to be redrawn
 6210PROCgetw(handle)
 6220SYS ForceR,handle,scx%,scy%-(y1%-y0%),scx%+(x1%-x0%),scy%
 6230ENDPROC
 6240
 6250DEF FNmatchident(A$)
 6260IF A$="" THEN =-1
 6270LOCAL I%
 6280I%=nh%+1:REPEATI%=I%-1:UNTILA$=wident$(I%)ORI%=0
 6290IFA$=wident$(I%)THEN=I%ELSE=-1
 6300
 6310DEF PROCgetw(handle%)
 6320IF handle%=iconbar%  ENDPROC
 6330!block=handle%:SYSGetW,0,block
 6340PROCinfo(block+4):bhandle%=block!28:flags%=block!32
 6350ontop=flags% AND &20000
 6360ENDPROC
 6370
 6380DEF PROCinfo(b)
 6390x0%=!b:y0%=b!4:x1%=b!8:y1%=b!12:scx%=b!16:scy%=b!20
 6400bx%=x0%-scx%:by%=y1%-scy%
 6410gwxl%=b!24:gwyb%=b!28:gwxr%=b!32:gwyt%=b!36
 6420ENDPROC
 6430
 6440DEF PROCgetpointer
 6450SYSGetP,0,block
 6460mousex%=!block:mousey%=block!4:b%=block!8:handle%=block!12:icon%=block!16:ob%=block!20
 6470ENDPROC
 6480
 6490DEF PROCsys_claiminputfocus(window%,icon%,xofst%,yofst%,height%,index%)
 6500SYSSetCaret, window%,icon%,xofst%,yofst%,height%,index%
 6510ENDPROC
 6520
 6530DEF PROCsys_getcaretposition(RETURN window%,RETURN icon%,RETURN xofst%,RETURN yofst%,RETURN height%,RETURN indx%)
 6540SYSGetCaret,0,b
 6550window%=!block: icon%=block!4: xofst%=block!8: yofst%=block!12: height%=block!16: indx%=block!20
 6560ENDPROC
 6570
 6580DEF PROCcursor(x%,y%)
 6590PROCsys_claiminputfocus(texthandle,-1,(x%-1)*chX%,-y%*lsY%-9*ypixel%,&1000000 OR10*ypixel%,-1)
 6600ENDPROC
 6610
 6620DEF PROCtext_menubox
 6630CASE text_owner$ OF
 6640WHEN "texted"
 6650  tick$="message"
 6660  null = FNtick_message
 6670  SYS CreateM,0,m_text%,mousex%-64,mousey%:claimmenu$="message"
 6680  theLastMenu = m_text%
 6690
 6700WHEN "program"
 6710  tick$="program"
 6720  null = FNtick_program
 6730  SYS CreateM,0,m_prog%,mousex%-64,mousey%:claimmenu$="program"
 6740  theLastMenu = m_prog%
 6750
 6760WHEN "vocab"
 6770  tick$="vocab"
 6780  null = FNtick_vocab
 6790  SYS CreateM,0,m_vocab%,mousex%-64,mousey%:claimmenu$="vocab"
 6800  theLastMenu = m_vocab%
 6810
 6820ENDCASE
 6830
 6840ENDPROC
 6850
 6860DEF PROCcheckmouse(mousex%,mousey%,button%,handle%,icon%,ob%)
 6870IFhandle%=-1 THEN ENDPROC
 6880PROCgetw(handle%)
 6890IFhandle%=ALPSmain THEN
 6900  IFicon%<>-1 THEN
 6910REM    icon% -= firstIconBarIcon%
 6920    CASETRUE OF
 6930      WHEN(button%AND1)=1 : REM adjust does nothing
 6940      WHEN(button%AND2)=2 : void=EVAL("FNmenu_"+iconbar$(icon%))
 6950      WHEN(button%AND4)=4 : PROCopenup(icon%)
 6960    ENDCASE
 6970  ENDIF
 6980ELSE
 6990  IF handle%=iconbar% THEN
 7000  REM The RISC OS icon bar
 7010  CASE TRUE OF
 7020    WHEN (button%AND2)=2 : void=FNmenu_misc
 7030    WHEN (button%AND4)=4
 7040    IF icon%=firstIconBarIcon% THEN PROCopen(ALPSmain,400,800,600,600)
 7050  ENDCASE
 7060   ELSE
 7070    index%=windowindex%
 7080     REPEAT
 7090      index%-=1: IFindex%<0 ERROR 255,"Invalid window"
 7100     UNTIL handle%(index%)=handle%
 7110    void=EVAL("FNbutton_"+wident$(index%))
 7120  ENDIF
 7130ENDIF
 7140ENDPROC
 7150
 7160DEF PROCuserkeypressed(handle%,icon%,key%)
 7170PROCgetw(handle%)
 7180LOCALindex%
 7190index%=windowindex%
 7200REPEAT
 7210index%-=1: IFindex%<0 THEN ENDPROC
 7220UNTILhandle%(index%)=handle%
 7230void=EVAL("FNkeypress_"+wident$(index%))
 7240ENDPROC
 7250
 7260DEF PROCmenuselect(item0%,item1%)
 7270SYS "Wimp_GetPointerInfo",,block
 7280buTTon = block!8
 7290void=EVAL("FNmenuselect_"+claimmenu$)
 7300IF buTTon=1 THEN
 7310   REM *** ADJUST pressed so keep the menu structure ***
 7320   null = EVAL("FNtick_"+tick$)
 7330   SYS CreateM,0,theLastMenu,0,0
 7340ELSE
 7350   claimmenu$=""
 7360ENDIF
 7370ENDPROC
 7380
 7390DEF PROCupdate(handle%,ux0%,uy0%,ux1%,uy1%)
 7400!block=handle%:block!4=ux0%:block!8=uy0%:block!12=ux1%:block!16=uy1%
 7410SYS UpdateW,0,block TO more%:PROCinfo(block+4)
 7420ENDPROC
 7430
 7440DEF PROCopenup(icon%)
 7450IF icon%(icon%)=-1 THEN
 7460  IF icon%<>diskicon AND icon%<>texticon AND icon%<>arcicon AND icon%<>swapicon AND icon%<>progicon AND icon%<>vocabicon AND icon%<>eyeicon THEN icon%(icon%)=icon%
 7470   CASE icon% OF
 7480     WHEN diskicon:
 7490          SYS CreateM,0,diskmenu,mousex%-64,mousey%
 7500          IF loaded$<>"" THEN f$=path$ ELSE f$="AlpsFile"
 7510          PROCchangeicon(savehandle,2,f$,void)
 7520          claimmenu$="disk35":theLastMenu=diskmenu:tick$=""
 7530     REM WHEN THEmiscicon:
 7540          REM *********** do nothing for this icon *******
 7550     WHEN texticon:
 7560          IF text_owner$="" THEN
 7570            PROCretitle(texthandle,"MESSAGE "+STR$mptr,texthandle)
 7580            PROCopen(texthandle,0,1000,scrw,400)
 7590            text_owner$="texted":text_ok=TRUE
 7600            PROCshow_msg(mptr)
 7610          ELSE
 7620            VDU 7
 7630          ENDIF
 7640     WHEN THEdooricon:
 7650          PROCopen(handle%(FNmatchident("roomedit")),0,720,1280,1040)
 7660          PROCrestore_room(rptr)
 7670     WHEN THEkeyicon:
 7680          PROCopen(handle%(FNmatchident("objected")),850,560,800,680)
 7690          PROCrestore_obj(optr)
 7700     WHEN progicon:
 7710          IF text_owner$="" THEN
 7720            PROCretitle(texthandle,"PROGRAM: "+prog$(prg_sel%)+" "+progval$,texthandle)
 7730            PROCopen(texthandle,0,1000,scrw,400)
 7740            text_owner$="program":text_ok=TRUE
 7750            PROClist(prg_sel%,progval$)
 7760          ELSE
 7770            VDU 7
 7780          ENDIF
 7790     WHEN THEcharicon:
 7800          PROCopen(handle%(FNmatchident("chrdesign")),0,560,1280,860)
 7810          PROCdisplay_chr(cur_chr%)
 7820          PROCchangeicon(design,64,CHR$(cur_chr%),dummy)
 7830     WHEN vocabicon:
 7840          IF text_owner$="" THEN
 7850            PROCretitle(texthandle,"VOCABULARY: "+voc$(voc_sect%),texthandle)
 7860            PROCopen(texthandle,0,1000,scrw,400)
 7870            text_owner$="vocab":text_ok=TRUE
 7880            PROClist_vocab(voc_sect%)
 7890          ELSE
 7900            VDU 7
 7910          ENDIF
 7920     WHEN helpicon:
 7930          PROCopen(handle%(FNmatchident("HELP")),0,500,960,400)
 7940     WHEN eyeicon:
 7950          IF text_owner$="" THEN
 7960            PROCretitle(texthandle,"PICTURES",texthandle)
 7970            PROCopen(texthandle,0,1000,scrw,400)
 7980            text_owner$="pix":text_ok=TRUE
 7990            PROClist_pix
 8000          ELSE
 8010            VDU 7
 8020          ENDIF
 8030     WHEN arcicon:dummy=FNkeypress_status
 8040     WHEN swapicon
 8050     datavalid=NOT datavalid:VDU 7:PROCswap_data
 8060     IF datavalid THEN
 8070      PROCchangeicon(ALPSmain,swapicon,"swap",swapicon)
 8080     ELSE
 8090      PROCchangeicon(ALPSmain,swapicon,"swap_x",swapicon)
 8100     ENDIF
 8110     PROCforceR(ALPSmain)
 8120     ENDCASE
 8130ENDIF
 8140ENDPROC
 8150
 8160
 8170REM  ------ `button` routines to deal with clicks in given window ------
 8180
 8190DEF FNbutton_texted
 8200LOCALmx%,my%
 8210IF button%<>2 THEN
 8220PROCgetpointer
 8230mx%=(mousex%-bx%+chX%DIV4) AND(NOT(chX%-1))
 8240my%=(mousey%-by%) - ((mousey%-by%) MODlsY%)
 8250text_col%=1+mx% DIVchX%
 8260text_row%=-((mousey%-by%) DIVlsY%)
 8270IF text_row%>last_row% text_row%=last_row%
 8280IF text_col%>text_rowlen%(text_row%) text_col%=text_rowlen%(text_row%)+1
 8290IF text_col%<1 text_col%=1
 8300ENDIF
 8310
 8320CASE button% OF
 8330WHEN 2
 8340PROCtext_menubox
 8350WHEN 4
 8360PROClocate_ptr
 8370PROCcursor(text_col%,text_row%)
 8380WHEN 1
 8390PROCinsert_marker
 8400ENDCASE
 8410=0
 8420
 8430DEF PROCinsert_marker
 8440IF text_owner$<>"pix" THEN
 8450PROClocate_ptr
 8460IF mrk<2 THEN
 8470mark(mrk)=text_ptr%
 8480col(mrk)=text_col%:row(mrk)=text_row%
 8490asc(mrk)=?text_ptr%
 8500IF asc(mrk)=13 THEN VDU23,dummy_cr ELSE VDU23,chr(mrk)
 8510?os_block=asc(mrk)
 8520SYS "OS_Word",&A,os_block
 8530FOR R%=1 TO 8
 8540row_value=R%?os_block
 8550VDU row_value EOR &FF
 8560NEXT
 8570IF asc(mrk)=13 THEN ?text_ptr%=dummy_cr ELSE ?text_ptr%=chr(mrk)
 8580PROCupdate(texthandle,chX%*(text_col%-1),-(text_row%+1)*lsY%,chX%*(text_col%-1)+chX%,-(text_row%)*lsY%)
 8590dummy=FNredraw_text(TRUE)
 8600mrk+=1
 8610PROCcursor(text_col%,text_row%)
 8620ENDIF
 8630ENDIF
 8640ENDPROC
 8650
 8660DEF PROClocate_ptr
 8670text_ptr%=text_block%
 8680IF text_row%>0 THEN
 8690  FOR R%=0 TO text_row%-1
 8700    text_ptr%+=text_rowlen%(R%)
 8710    IF text_rowlen%(R%)<text_maxllen% THEN text_ptr%+=1
 8720  NEXT
 8730ENDIF
 8740text_ptr%+=text_col%-1
 8750IF text_ptr%>text_end% THEN text_ptr%=text_end%
 8760ENDPROC
 8770
 8780DEF FNbutton_objected
 8790CASE icon% OF
 8800WHEN 0:
 8810
 8820REM First set the 'tick' bits for each menu item
 8830null = FNtick_objected
 8840SYS CreateM,0,m_objflag,mousex%-64,mousey%:claimmenu$="objected"
 8850tick$="objected"
 8860theLastMenu = m_objflag
 8870
 8880WHEN 5:PROCfirst_obj
 8890WHEN 6:PROClast_obj
 8900WHEN 27:PROCnext_obj
 8910WHEN 16:PROCprev_obj
 8920WHEN 20:PROCfwd_obj(10)
 8930WHEN 21:PROCrewind_obj(10)
 8940WHEN 17
 8950PROCstore_obj(optr)
 8960optr=VAL(FNgeticondata(objhandle,7))
 8970IF optr<1 THEN optr=1
 8980IF optr>maxobs THEN optr=maxobs
 8990PROCrestore_obj(optr)
 9000WHEN 22:last_object=optr
 9010WHEN 26:
 9020SYS CreateM,0,m_contain,mousex%-64,mousey%:claimmenu$="container"
 9030tick$=""
 9040theLastMenu = m_contain
 9050OTHERWISE
 9060ENDCASE
 9070IF optr>last_object last_object=optr:data_saved=FALSE
 9080=0
 9090
 9100DEF FNbutton_roomedit
 9110CASE icon% OF
 9120WHEN 1:
 9130tick$="roomedit"
 9140null = FNtick_roomedit
 9150SYS CreateM,0,m_rmflag,mousex%-64,mousey%:claimmenu$="roomedit"
 9160theLastMenu = m_rmflag
 9170
 9180WHEN 5:PROCfirst_room
 9190WHEN 6:PROClast_room
 9200WHEN 7:PROCnext_room
 9210WHEN 8:PROCprev_room
 9220WHEN 9:PROCfwd_room(10)
 9230WHEN 10:PROCrewind_room(10)
 9240WHEN 11
 9250PROCstore_room(rptr)
 9260rptr=VAL(FNgeticondata(roomhandle,33))
 9270IF rptr<1 THEN rptr=1
 9280IF rptr>maxrms THEN rptr=maxrms
 9290PROCrestore_room(rptr)
 9300
 9310WHEN 12:last_room=rptr
 9320ENDCASE
 9330IF rptr>last_room last_room=rptr:data_saved=FALSE
 9340
 9350REM Now check for clicking menu on selected EXITR icon
 9360
 9370CASE TRUE OF
 9380
 9390WHEN icon%>53 AND icon%<70
 9400
 9410oldrmicon%=icon%
 9420null = FNtick_exitedit
 9430tick$="exitedit"
 9440SYS CreateM,0,m_exitf,mousex%-64,mousey%:claimmenu$="exitedit"
 9450theLastMenu = m_exitf
 9460OTHERWISE
 9470ENDCASE
 9480=0
 9490
 9500DEF FNbutton_chrdesign
 9510CASE TRUE OF
 9520WHEN icon%>=0 AND icon%<64
 9530  PROCset_icon(design,icon%,&50000000,0)
 9540  PROCwrite_chr(cur_chr%)
 9550  PROCset_icon(design,64,0,0)
 9560WHEN icon%=66
 9570  cur_chr%+=1
 9580  IF cur_chr%>max_chr% cur_chr%=max_chr%
 9590  PROCchangeicon(design,64,CHR$(cur_chr%),icon%)
 9600  PROCdisplay_chr(cur_chr%)
 9610WHEN icon%=67
 9620  cur_chr%-=1
 9630  IF cur_chr%<32 cur_chr%=32
 9640  PROCchangeicon(design,64,CHR$(cur_chr%),icon%)
 9650  PROCdisplay_chr(cur_chr%)
 9660WHEN icon%=68
 9670  SYS CreateM,0,m_chardes%,mousex%-64,mousey%:claimmenu$="chrdef"
 9680  theLastMenu = m_chardes%:tick$=""
 9690ENDCASE
 9700=0
 9710
 9720
 9730DEF FNbutton_info
 9740IF icon%=5 THEN
 9750PROCclose(infohandle)
 9760ENDIF
 9770=0
 9780
 9790DEF FNbutton_saveas
 9800CASE icon% OF
 9810WHEN 0 : PROCsave_all(FNgeticondata(savehandle,2))
 9820WHEN 1 : PROCgetw(savehandle)
 9830         dummy$=FNgeticondata(savehandle,1)
 9840         block!4=5:block!8=block!8+bx%
 9850         block!12=block!12+by%
 9860         block!16=block!16+bx%
 9870         block!20=block!20+by%
 9880         block!24=0:block!28=0:block!32=scrw+1:block!36=scrh+1
 9890         SYS "Wimp_DragBox",,block
 9900ENDCASE
 9910=0
 9920
 9930DEF FNbutton_Setup
 9940CASE icon% OF
 9950WHEN 0
 9960WHEN 1:PROCcreate_dirs(FNgeticondata(setuph,2),FNgeticondata(setuph,5))
 9970ENDCASE
 9980PROCclose(setuph)
 9990MOUSE RECTANGLE 0,0,scrw,scrh
10000=0
10010
10020REM  ------ `keypress` routines deal with pressing key `key%` in a window
10030
10040DEF FNkeypress_texted
10050CASE TRUE OF
10060WHEN key%=13:PROCnewline:data_saved=FALSE:text_ok=FALSE
10070WHEN (key%=&186 AND text_owner$="texted"):PROCnext_msg:PROCforceR(texthandle):text_row%=0:text_col%=1
10080WHEN (key%=&185 AND text_owner$="texted"):PROCprev_msg:PROCforceR(texthandle):text_row%=0:text_col%=1
10090WHEN (key%=&187 AND text_owner$="texted"):PROCfirst_msg:PROCforceR(texthandle):text_row%=0:text_col%=1
10100WHEN (key%=&188 AND text_owner$="texted"):PROClast_msg:PROCforceR(texthandle):text_row%=0:text_col%=1
10110WHEN key%=24:PROCcut(mark(0),mark(1),picbuf):PROCforceR(texthandle)
10120WHEN key%=3:PROCcopy(mark(0),mark(1),picbuf):PROCforceR(texthandle)
10130WHEN key%=22:PROCpaste(text_ptr%,picbuf):PROCforceR(texthandle)
10140WHEN key%=26:PROCremove_markers:PROCforceR(texthandle)
10150WHEN key%=&189:PROCinsert_marker
10160WHEN key%=&18F:PROCup
10170WHEN key%=&18E:PROCdown
10180WHEN key%=&18D:PROCright
10190WHEN key%=&18A:FOR I%=1 TO tab_set:PROCright:NEXT
10200WHEN key%=&19A:FOR I%=1 TO tab_set:PROCleft:NEXT
10210WHEN key%=&18C:PROCleft
10220WHEN key%=&1AB:PROCdelete_line:data_saved=FALSE:text_ok=FALSE
10230WHEN key%=&1ED:PROCinsert_line:data_saved=FALSE:text_ok=FALSE
10240WHEN key%=&1AC:PROCleft_end
10250WHEN key%=&1AD:PROCright_end
10260WHEN key%=&18B:PROCright:PROCdelete_char:data_saved=FALSE:text_ok=FALSE
10270WHEN key%=&1CD:overwrite=NOT overwrite
10280WHEN key%=127:PROCdelete_char:data_saved=FALSE:text_ok=FALSE
10290WHEN (key%>31) AND (key%<126)
10300IF overwrite THEN PROCoverwrite_char(key%) ELSE PROCinsert_char(key%)
10310data_saved=FALSE:text_ok=FALSE
10320OTHERWISE SYS "Wimp_ProcessKey",key%
10330ENDCASE
10340
10350PROCcursor(text_col%,text_row%)
10360=0
10370
10380DEF PROCcheck_scroll_up
10390PROCgetw(texthandle)
10400Ty%= (text_row%+1)*lsY%
10410IF (y1%-Ty%)<(y0%+scy%) THEN block!24 =block!24-lsY%:SYS OpenW,,block
10420ENDPROC
10430
10440DEF PROCcheck_scroll_down
10450PROCgetw(texthandle)
10460Tr%=-scy% DIV lsY%
10470IF text_row%-1<Tr% THEN block!24 =block!24+lsY%:SYS OpenW,,block
10480ENDPROC
10490
10500DEF PROCcheck_scroll_left
10510PROCgetw(texthandle)
10520Rx%=(text_col%-1)*chX%
10530IF (x1%-Rx%)<(x0%-scx%) THEN block!20 =block!20+chX%:SYS OpenW,,block
10540ENDPROC
10550
10560DEF PROCcheck_scroll_right
10570PROCgetw(texthandle)
10580Le%=scx% DIV chX%
10590IF text_col%-1<Le% THEN block!20 =block!20-chX%:SYS OpenW,,block
10600ENDPROC
10610
10620DEF FNkeypress_saveas
10630IF key%=13 THEN PROCsave_all(FNgeticondata(savehandle,2)) ELSE SYS "Wimp_ProcessKey",key%
10640=0
10650
10660DEF FNkeypress_objected
10670IF key%=13 AND icon%=7 THEN
10680  PROCstore_obj(optr)
10690  optr=VAL(FNgeticondata(objhandle,icon%))
10700  IF optr<1 THEN optr=1
10710  IF optr>maxobs THEN optr=maxobs
10720  PROCrestore_obj(optr)
10730ENDIF
10740
10750CASE key% OF
10760WHEN 13,&18E:REM Return or down arrow
10770IF icon%<15 THEN
10780  icon%+=1
10790ELSE
10800  icon%=7
10810ENDIF
10820WHEN &18F:REM Up arrow
10830IF icon%>7 THEN
10840  icon%-=1
10850ELSE
10860  icon%=15
10870ENDIF
10880OTHERWISE SYS "Wimp_ProcessKey",key%
10890ENDCASE
10900PROCsys_claiminputfocus(objhandle,icon%,0,0,-1,LEN(FNgeticondata(objhandle,icon%)))
10910=0
10920
10930DEF FNkeypress_roomedit
10940CASE key% OF
10950WHEN 13,&18E,&18F
10960
10970IF key%=13 AND icon%=33 THEN
10980  PROCstore_room(rptr)
10990  rptr=VAL(FNgeticondata(roomhandle,icon%))
11000  IF rptr<1 THEN rptr=1
11010  IF rptr>maxrms THEN rptr=maxrms
11020  PROCrestore_room(rptr)
11030ENDIF
11040
11050IF key%=13 OR key%=&18E THEN
11060CASE TRUE OF
11070WHEN icon%=37:newicon%=71
11080WHEN icon%=71:newicon%=38
11090WHEN icon%=69:newicon%=33
11100WHEN icon%<37:newicon%=icon%+1
11110WHEN (icon%>37 AND icon%<54):newicon%=icon%+16
11120WHEN (icon%>53 AND icon%<69):newicon%=icon%-15
11130ENDCASE
11140ENDIF
11150
11160IF key%=&18F THEN
11170CASE TRUE OF
11180WHEN icon%=71:newicon%=37
11190WHEN icon%=38:newicon%=71
11200WHEN icon%=33:newicon%=69
11210WHEN icon%>33:newicon%=icon%-1
11220WHEN (icon%>37 AND icon%<54):newicon%=icon%-16
11230WHEN (icon%>53 AND icon%<69):newicon%=icon%+15
11240ENDCASE
11250ENDIF
11260
11270OTHERWISE SYS "Wimp_ProcessKey",key%
11280ENDCASE
11290PROCsys_claiminputfocus(roomhandle,newicon%,0,0,-1,LEN(FNgeticondata(roomhandle,newicon%)))
11300=0
11310
11320DEF FNkeypress_status
11330PROCcol(128+2)
11340VDU 26,4,12
11350PROCcol(9):PROCcol(128+7)
11360PROCcentre(STRING$(27," ")+"System Status Information"+STRING$(28," "),0)
11370PROCcol(128+2):PROCcol(7)
11380PROCstatus
11390PROCcol(128+7):PROCcol(9)
11400PROCcentre(STRING$(31," ")+"Integer Variables"+STRING$(32," "),10)
11410PROCcol(128+2):PROCcol(7)
11420PROClvar
11430OFF:PROCreturn(18,31):ON
11440VDU 26,5
11450SYS ForceR,-1,0,0,scrw+1,scrh+1
11460=0
11470
11480DEF FNkeypress_chrdef
11490IF key%=13 AND icon%=64 THEN
11500cur_chr%=ASC(FNgeticondata(design,icon%))
11510PROCdisplay_chr(cur_chr%)
11520PROCchangeicon(design,64,CHR$(cur_chr%),icon%)
11530ELSE
11540IF key%<>13 THEN SYS "Wimp_ProcessKey",key%
11550ENDIF
11560=0
11570
11580DEF FNkeypress_Setup
11590IF key%=&18E OR key%=13 AND icon%=2 THEN newicon%=5
11600IF key%=13 AND icon%=5 THEN icon%=1:void=FNbutton_Setup:=0
11610IF key%=&18E AND icon%=5 THEN newicon%=2
11620IF key%=&18F AND icon%=5 THEN newicon%=2
11630IF key%=&18F AND icon%=2 THEN newicon%=5
11640IF key%<>13 AND key%<>&18E AND key%<>&18F THEN SYS "Wimp_ProcessKey",key%
11650PROCsys_claiminputfocus(setuph,newicon%,0,0,-1,LEN(FNgeticondata(setuph,newicon%)))
11660=0
11670
11680REM ------ The `menu` routines to open the selected menu ------
11690
11700DEF FNmenu_
11710=0
11720
11730DEF FNmenu_swap
11740=0
11750
11760DEF FNmenu_arclogo
11770=0
11780
11790DEF FNmenu_info
11800=0
11810
11820
11830DEF FNmenu_disk35
11840SYS CreateM,0,diskmenu,mousex%-64,mousey%
11850IF loaded$<>"" THEN f$=path$ ELSE f$="AlpsFile"
11860PROCchangeicon(savehandle,2,f$,void)
11870theLastMenu= diskmenu
11880claimmenu$="disk35":tick$=""
11890=0
11900
11910
11920DEF FNmenu_key
11930SYS CreateM,0,objmenu,mousex%-64,mousey%
11940theLastMenu = objmenu
11950claimmenu$="key":tick$=""
11960=0
11970
11980DEF FNmenu_door
11990SYS CreateM,0,roommenu,mousex%-64,mousey%
12000theLastMenu = roommenu
12010claimmenu$="door":tick$=""
12020=0
12030
12040DEF FNmenu_quill
12050$end_msg%=STR$(FNmaxmsg)
12060SYS CreateM,0,textmenu,mousex%-64,mousey%
12070theLastMenu = textmenu
12080claimmenu$="quill":tick$=""
12090=0
12100
12110
12120DEF FNmenu_listing
12130SYS CreateM,0,progmenu,mousex%-64,mousey%
12140theLastMenu = progmenu
12150claimmenu$="listing":tick$=""
12160=0
12170
12180
12190DEF FNmenu_chardes
12200=0
12210SYS CreateM,0,charmenu,mousex%-64,mousey%
12220theLastMenu = charmenu
12230claimmenu$="chardes":tick$=""
12240=0
12250
12260DEF FNmenu_vocab
12270SYS CreateM,0,vocabmenu,mousex%-64,mousey%
12280theLastMenu = vocabmenu
12290claimmenu$="vocabulary":tick$=""
12300=0
12310
12320DEF FNmenu_face
12330SYS CreateM,0,facemenu,mousex%-64,mousey%
12340theLastMenu = facemenu
12350claimmenu$="actors":tick$=""
12360=0
12370
12380DEF FNmenu_misc
12390null = FNtick_misc
12400SYS CreateM,0,miscmenu,mousex%-64,FNmenuHeight(miscmenu,1)
12410theLastMenu = miscmenu
12420claimmenu$="misc":tick$="misc"
12430=0
12440
12450DEF FNmenu_help
12460=0
12470
12480
12490DEF FNmenu_eye
12500SYS CreateM,0,pixmenu,mousex%-64,mousey%
12510theLastMenu = pixmenu
12520claimmenu$="eye":tick$=""
12530=0
12540
12550
12560REM `menuselect` functions - called when a selection is made from a menu
12570REM `item0%` is the number of selection from first menu (0,1,2...)
12580REM `item1%` is the number of selection from second menu (0,1,2...)
12590
12600DEF FNmenuselect_
12610=0
12620
12630
12640DEF FNmenuselect_message
12650LOCAL changed_msg
12660
12670CASE item0% OF
12680  WHEN -1
12690  WHEN 0,1:overwrite=NOT overwrite
12700  WHEN 2:PROCcut(mark(0),mark(1),picbuf)
12710  WHEN 3:PROCcopy(mark(0),mark(1),picbuf)
12720  WHEN 4:PROCpaste(text_ptr%,picbuf)
12730  WHEN 5:PROCprev_msg
12740  WHEN 6:PROCnext_msg
12750  WHEN 7:PROCfirst_msg
12760  WHEN 8:PROClast_msg
12770  WHEN 9:PROCgoto_msg(VAL($m_msg%))
12780  WHEN 10
12790  IF item1%>-1 THEN
12800    IF item1%=0 THEN
12810      FOR I%=0 TO maxsw%
12820        switch_vals(I%)=0
12830      NEXT I%
12840    ENDIF
12850    switch_vals(item1%)=VAL($(swdata%+12*(item1%-1)))
12860    IF item1%>switch_vals(0) THEN switch_vals(0)=item1%
12870    REM switch_vals(0) stores the number of switches
12880  ENDIF
12890  WHEN 11
12900  *FX3,10
12910  PROCprint_msg(mptr)
12920  *FX3,0
12930ENDCASE
12940PROCforceR(texthandle)
12950IF changed_msg THEN
12960text_row%=0:text_col%=1
12970PROCcursor(1,0)
12980ENDIF
12990REM claimmenu$=""
13000=0
13010
13020DEF PROCcut(start,end,buf)
13030IF mrk<2 THEN ERROR 1,error$(29)
13040IF end<start THEN SWAP start,end:SWAP col(0),col(1):SWAP row(0),row(1):SWAP asc(0),asc(1)
13050cliplen=end-start+1
13060PROCmove(start,buf,cliplen)
13070REM SYS"Wimp_CloseDown":MODE 12:STOP
13080PROCmove(end+1,start,text_end%-end):REM was +1 until 16.6.89
13090?buf=asc(0):buf?(cliplen-1)=asc(1)
13100text_end%=text_end%-cliplen
13110IF asc(1)=0 THEN text_end%+=1
13120REM Restore end marker if it has been cut
13130IF text_end%<text_block% THEN text_end%=text_block%
13140?text_end%=0
13150last_row%=FNfind_lastrow
13160FOR I%=0 TO last_row%
13170text_rowlen%(I%)=LENFNrow(I%)
13180NEXT
13190mrk=0:mark()=+0
13200IF text_row%>last_row% THEN text_row%=last_row%
13210IF text_col%>text_rowlen%(text_row%) THEN text_col%=text_rowlen%(text_row%)+1
13220PROClocate_ptr:PROCcursor(text_col%,text_row%)
13230data_saved=FALSE:text_ok=FALSE
13240ENDPROC
13250
13260DEF PROCcopy(start,end,buf)
13270IF mrk<2 THEN ERROR 1,error$(29)
13280IF end<start THEN SWAP start,end:SWAP col(0),col(1):SWAP row(0),row(1):SWAP asc(0),asc(1)
13290cliplen=end+1-start
13300PROCmove(start,buf,cliplen)
13310?buf=asc(0):buf?(cliplen-1)=asc(1)
13320?start=asc(0):?end=asc(1):mrk=0:mark()=+0
13330ENDPROC
13340
13350DEF PROCpaste(to,from)
13360IF cliplen=0 THEN ERROR 1,error$(30)
13370PROCmove(to,to+cliplen,text_end%-to+1)
13380PROCmove(from,to,cliplen)
13390text_end%+=cliplen
13400last_row%=FNfind_lastrow
13410FOR I%=0 TO last_row%
13420text_rowlen%(I%)=LENFNrow(I%)
13430NEXT
13440PROClocate_ptr:PROCcursor(text_col%,text_row%)
13450data_saved=FALSE:text_ok=FALSE
13460ENDPROC
13470
13480DEF FNmenuselect_program
13490errflag=FALSE
13500IF item0%>4 AND item0%<9 THEN
13510PROCremove_markers
13520IF NOT text_ok THEN PROCstore_prog
13530prg_sel%=item0%-3
13540text_row%=0:text_col%=1
13550PROCcursor(1,0)
13560ENDIF
13570
13580CASE item0% OF
13590WHEN 0,1:overwrite=NOT overwrite
13600WHEN 2:PROCcut(mark(0),mark(1),picbuf)
13610WHEN 3:PROCcopy(mark(0),mark(1),picbuf)
13620WHEN 4:PROCpaste(text_ptr%,picbuf)
13630WHEN 5:progval$=""
13640WHEN 6:progval$=$proc%
13650WHEN 7:progval$=FNtoUpper($def%)
13660WHEN 8:progval$=$exit%
13670WHEN 9:PROCprint_prog_seg
13680WHEN 10:PROClisto
13690ENDCASE
13700
13710IF (item0%>4 AND item0%<9) THEN
13720 IF NOT errflag THEN
13730  PROClist(item0%-3,progval$)
13740  PROCretitle_text("PROGRAM: "+prog$(prg_sel%)+" "+progval$)
13750  PROCforceR(texthandle)
13760 ENDIF
13770ENDIF
13780IF (item0%>1 AND item0%<5) THEN
13790PROCforceR(texthandle)
13800ENDIF
13810IF item0%=10 THEN
13820IF NOT text_ok THEN PROCstore_prog
13830IF NOT errflag THEN
13840text_row%=0:text_col%=1
13850PROCcursor(1,0)
13860PROClist(prg_sel%,progval$)
13870PROCforceR(texthandle)
13880ENDIF
13890ENDIF
13900=0
13910
13920DEF FNmenuselect_vocab
13930REM Make a selection from the vocabulary editor menu
13940CASE item0% OF
13950WHEN 0,1:overwrite=NOT overwrite
13960WHEN 2:PROCcut(mark(0),mark(1),picbuf)
13970WHEN 3:PROCcopy(mark(0),mark(1),picbuf)
13980WHEN 4:PROCpaste(text_ptr%,picbuf)
13990WHEN 5,6,7,8,9,10,11
14000PROCremove_markers:REM Added 23.08.89
14010IF NOT text_ok THEN PROCstore_vocab
14020IF NOT errflag THEN
14030voc_sect%=item0%-4
14040PROClist_vocab(voc_sect%)
14050text_row%=0:text_col%=1
14060PROCcursor(1,0)
14070PROCretitle_text("VOCABULARY: "+voc$(voc_sect%))
14080ENDIF
14090WHEN 12:PROCprint_prog_seg
14100ENDCASE
14110CASE item0% OF
14120WHEN 2,3,4,5,6,7,8,9,10,11
14130PROCforceR(texthandle)
14140ENDCASE
14150REM claimmenu$=""
14160=0
14170
14180DEF FNmenuselect_exitedit
14190xerr%=FALSE
14200IF oldrmicon%<>0 THEN
14210  ptr%=(rdata%+rptr*r_len+oldrmicon%)
14220  flags%=?ptr%
14230  cl_door%=flags% AND &40
14240  op_door%=flags% AND &20
14250  lk_door%=flags% AND &10
14260  unlk_door%=flags% AND &8
14270  IF cl_door% AND item0%=2 THEN xerr%=TRUE
14280  IF op_door% AND item0%=1 THEN xerr%=TRUE
14290  IF op_door% AND item0%=3 THEN xerr%=TRUE
14300  IF unlk_door% AND item0%=3 THEN xerr%=TRUE
14310  IF lk_door% AND item0%=4 THEN xerr%=TRUE
14320  IF lk_door% AND item0%=2 THEN xerr%=TRUE
14330  IF xerr% THEN
14340    VDU 7
14350  ELSE
14360  ?ptr%=?ptr% EOR (&80 >> item0%)
14370  IF NOT lk_door% AND item0%=3 THEN
14380    ?ptr%=?ptr% AND %11011111 OR %01000000
14390  ENDIF
14400  IF lk_door% AND item0%=1 THEN
14410    ?ptr%=?ptr% AND %11101111
14420  ENDIF
14430  ENDIF
14440  data_saved=FALSE
14450ENDIF
14460REM claimmenu$=""
14470=0
14480
14490DEF FNmenuselect_disk35
14500CASE item0% OF
14510  WHEN 0
14520    path$=FNgeticondata(savehandle,2)
14530    SYS "OS_File",5,path$ TO ftype
14540    IF ftype=0 THEN PROCsave_all(path$) ELSE PROCensure(item0%,"This file exists. Do you want to replace it?")
14550  WHEN 1
14560    PROCload_bits(FNgeticondata(setuph,2))
14570    PROCsetup_disk(item0%)
14580ENDCASE
14590icon%(diskicon)=-1:REM claimmenu$=""
14600=0
14610
14620
14630
14640DEF FNmenuselect_objected
14650old_flags%=VAL(FNgeticondata(objhandle,8))
14660new_flags%=old_flags% EOR (&80 >> item0%)
14670PROCchangeicon(objhandle,8,STR$(new_flags%),dummy)
14680REM claimmenu$=""
14690=0
14700
14710DEF FNmenuselect_container
14720CASE item0% OF
14730WHEN 0
14740container=NOT container
14750IF container THEN
14760PROCchangeicon(objhandle,26,"SIZE <C>",dummy)
14770ELSE
14780PROCchangeicon(objhandle,26,"SIZE",dummy)
14790ENDIF
14800WHEN 1
14810cont_room=VAL($controom%)
14820ENDCASE
14830REM data_saved=FALSE
14840REM claimmenu$=""
14850=0
14860
14870DEF FNmenuselect_roomedit
14880old_flags%=VAL(FNgeticondata(roomhandle,34))
14890new_flags%=old_flags% EOR (&80 >> item0%)
14900PROCchangeicon(roomhandle,34,STR$(new_flags%),dummy)
14910REM claimmenu$=""
14920=0
14930
14940DEF FNmenuselect_key
14950CASE item0% OF
14960  WHEN 0:PROCprint_objs
14970  WHEN 1:PROCimport_obj("O."+$import%)
14980ENDCASE
14990REM claimmenu$=""
15000=0
15010
15020DEF FNmenuselect_door
15030CASE item0% OF
15040  WHEN 0:PROCprint_rooms
15050  WHEN 1:PROCimport_rooms("R."+$import%)
15060ENDCASE
15070REM claimmenu$=""
15080=0
15090
15100DEF FNmenuselect_quill
15110CASE item0% OF
15120  WHEN 0:PROCprint_text
15130  WHEN 1:PROCimport_text("T."+$import%)
15140         PROCload_dict("D."+$import%)
15150ENDCASE
15160REM claimmenu$=""
15170=0
15180
15190DEF FNmenuselect_listing
15200CASE item0% OF
15210  WHEN 0:PROCprint_program
15220  WHEN 1:PROCconvert($import%)
15230  WHEN 2:PROCrun
15240ENDCASE
15250REM claimmenu$=""
15260=0
15270
15280DEF FNmenuselect_chardes
15290REM When `menu` is clicked on the `chardes` icon
15300CASE item0% OF
15310WHEN 0:PROCsave_chars("<Users$Resources>."+$filename2%)
15320WHEN 1
15330OSCLI("PRINT <Alps$Resources>."+$filename2%)
15340PROCdisplay_chr(cur_chr%)
15350SYS ForceR,-1,0,0,scrw+1,scrh+1
15360ENDCASE
15370REM claimmenu$=""
15380=0
15390
15400DEF FNmenuselect_chrdef
15410REM When button is clicked on the `SELECT` icon in the char design window
15420chr%=ASC($charnum)
15430IF chr%>31 AND chr%<=max_chr% THEN
15440  cur_chr%=chr%
15450  PROCchangeicon(design,64,CHR$(cur_chr%),icon%)
15460  PROCdisplay_chr(cur_chr%)
15470ENDIF
15480REM claimmenu$=""
15490=0
15500
15510DEF FNmenuselect_vocabulary
15520REM When SELECT pressed in small vocab menu
15530CASE item0% OF
15540WHEN 0:PROCprint_vocab
15550ENDCASE
15560REM claimmenu$=""
15570=0
15580
15590DEF FNmenuselect_actors
15600REM SELECT pressed in small 'face' menu (Actors)
15610CASE item0% OF
15620WHEN 0:PROCprint_actors
15630ENDCASE
15640REM claimmenu$=""
15650=0
15660
15670DEF FNmenuselect_eye
15680REM SELECT pressed in small 'eye' menu (Pictures)
15690CASE item0% OF
15700WHEN 0:PROCprint_pix
15710ENDCASE
15720REM claimmenu$=""
15730=0
15740
15750DEF FNmenuselect_misc
15760CASE item0% OF
15770 WHEN 1: REM quit
15780  PROCquit(4)
15790 ENDCASE
15800icon%(THEmiscicon)=-1
15810=0
15820
15830
15840REM ------ Utility procedures and functions for each editor ------
15850
15860REM ------ Character designer utilities ------
15870
15880DEF PROCwrite_chr(C%)
15890VDU 23,C%
15900FOR row%=0 TO 7
15910row_value=0
15920FOR col%=0 TO 7
15930dummy=VAL(FNgeticondata(design,row%*8+col%))
15940bit=flags% >>> 28
15950IF bit=7 THEN row_value=row_value+2^(7-col%)
15960NEXT col%
15970VDU row_value
15980NEXT row%
15990ENDPROC
16000
16010DEF PROCdisplay_chr(C%)
16020?os_block=C%
16030SYS "OS_Word",&A,os_block
16040FOR R%=1 TO 8
16050row_value=R%?os_block
16060FOR C%=0 TO 7
16070bit=row_value DIV 2^(7-C%)
16080row_value=row_value MOD 2^(7-C%)
16090IF bit>0 PROCset_icon(design,(R%-1)*8+C%,&70000000,&F0000000) ELSE PROCset_icon(design,(R%-1)*8+C%,&20000000,&F0000000)
16100NEXT C%
16110NEXT R%
16120ENDPROC
16130
16140DEF PROCsave_chars(f$)
16150f%=OPENOUT(f$)
16160FOR ch%=32 TO max_chr%
16170BPUT#f%,23:BPUT#f%,ch%
16180?os_block=ch%
16190SYS "OS_Word",&A,os_block
16200FOR I%=1 TO 8
16210BPUT#f%,I%?os_block
16220NEXT I%
16230NEXT ch%
16240CLOSE#f%
16250OSCLI("SETTYPE "+f$+" BBC Font")
16260ENDPROC
16270
16280DEF PROCsave_pal(f$)
16290LOCAL ch%,col1,rgb
16300PROCreadPalette
16310ch%=OPENOUT f$
16320FOR col=0 TO 19
16330FOR rgb=1 TO 3
16340BPUT#ch%,rgb(col,rgb)
16350NEXT rgb
16360NEXT col
16370CLOSE#ch%
16380OSCLI "SETTYPE "+f$+" FED"
16390ENDPROC
16400
16410
16420
16430REM ------ Text editor utilities ------
16440
16450DEF PROCleft
16460IF text_col%<>1 THEN
16470  text_ptr%-=1
16480  text_col%-=1
16490ELSE
16500  IF text_row%<>0 THEN
16510    text_row%-=1
16520    text_col%=text_rowlen%(text_row%)+1
16530    IF text_rowlen%(text_row%)<text_maxllen% THEN text_ptr%-=1
16540    PROCgetw(texthandle)
16550    block!20=(text_col%-1)*chX%-(x1%-x0%):SYS OpenW,,block
16560  ELSE
16570    VDU 7
16580  ENDIF
16590ENDIF
16600PROCcheck_scroll_right
16610ENDPROC
16620
16630DEF PROCleft_end
16640text_ptr%-=(text_col%-1)
16650text_col%=1
16660PROCgetw(texthandle)
16670block!20=0:SYS OpenW,,block
16680ENDPROC
16690
16700DEF PROCright
16710IF text_row%=last_row% AND text_col%=text_rowlen%(text_row%)+1 THEN
16720  VDU 7
16730ELSE
16740  REM This '<' was changed to '<=' on 23.08.89
16750  IF text_col%<=text_maxllen% THEN text_ptr%+=1
16760  text_col%+=1
16770  IF text_col%>text_rowlen%(text_row%)+1 AND text_row%<>last_row% THEN
16780    text_col%=1:text_row%+=1
16790    PROCgetw(texthandle)
16800    block!20=0:SYS OpenW,,block
16810  ENDIF
16820ENDIF
16830PROCcheck_scroll_left
16840ENDPROC
16850
16860DEF PROCright_end
16870text_ptr%+=(text_rowlen%(text_row%)-text_col%)+1
16880text_col%=text_rowlen%(text_row%)+1
16890PROCgetw(texthandle)
16900block!20=(text_col%-1)*chX%-(x1%-x0%)+chX% DIV 2:SYS OpenW,,block
16910REM IF text_col%>text_maxllen% text_col%=text_maxllen%
16920ENDPROC
16930
16940DEF PROCdown
16950IF text_row%=text_maxrows% OR text_row%=last_row% THEN
16960  VDU 7
16970ELSE
16980  text_row%+=1
16990  old_col%=text_col%
17000  IF text_rowlen%(text_row%)<text_col% THEN
17010    text_col%=text_rowlen%(text_row%)+1
17020  ENDIF
17030  text_ptr%+=(text_rowlen%(text_row%-1)-old_col%+text_col%)
17040  IF text_rowlen%(text_row%-1)<text_maxllen% text_ptr%+=1
17050ENDIF
17060PROCcheck_scroll_up
17070ENDPROC
17080
17090DEF PROCup
17100IF text_row%<>0 THEN
17110  text_row%-=1
17120  old_col%=text_col%
17130  IF text_rowlen%(text_row%)<text_col% THEN
17140    text_col%=text_rowlen%(text_row%)+1
17150  ENDIF
17160  text_ptr%-=(old_col%+(text_rowlen%(text_row%)-text_col%))
17170  IF text_rowlen%(text_row%)<text_maxllen% text_ptr%-=1
17180ELSE
17190  VDU 7
17200ENDIF
17210PROCcheck_scroll_down
17220ENDPROC
17230
17240DEF PROCnewline
17250old_col%=text_col%
17260PROCinsert_char(13)
17270text_row%+=1
17280text_col%=1
17290PROCupdate(texthandle,scx%,scy%-(y1%-y0%),scx%+(x1%-x0%)+chX%,scy%)
17300dummy=FNredraw_text(TRUE)
17310PROCcheck_scroll_up
17320ENDPROC
17330
17340DEF PROCinsert_char(chr%)
17350LOCAL flag1,flag2
17360IF text_ptr%>text_end% THEN FOR I%=text_end% TO text_ptr%:?I%=32:NEXT:text_end%=text_ptr%
17370IF text_ptr%=text_end% OR text_rowlen%(text_row%)<text_maxllen%-1 THEN
17380  redraw_all%=FALSE
17390ELSE
17400  redraw_all%=TRUE
17410ENDIF
17420
17430PROCmove(text_ptr%,text_ptr%+1,text_end%-text_ptr%)
17440IF text_ptr%<mark(0) THEN mark(0)+=1
17450IF text_ptr%<mark(1) THEN mark(1)+=1
17460?text_ptr%=chr%:text_ptr%+=1:text_end%+=1:?text_end%=0
17470
17480IF text_rowlen%(text_row%)<text_maxllen%-1 AND chr%<>13 THEN
17490REM The '-1' above added 29.08.89 to fix bug 8a.
17500text_rowlen%(text_row%)+=1
17510ELSE
17520last_row%=FNfind_lastrow
17530FOR R%=text_row% TO last_row%
17540  text_rowlen%(R%)=LEN FNrow(R%)
17550NEXT
17560ENDIF
17570
17580IF redraw_all% THEN
17590PROCupdate(texthandle,0,-(last_row%+1)*lsY%,scx%+(x1%-x0%)+chX%,-(text_row%)*lsY%)
17600ELSE
17610IF text_col%>text_maxllen% THEN
17620PROCupdate(texthandle,0,-(text_row%)*lsY%,scx%+(x1%-x0%)+chX%,-(text_row%-1)*lsY%)
17630ELSE
17640PROCupdate(texthandle,chX%*(text_col%-1),-(text_row%+1)*lsY%,scx%+(x1%-x0%)+chX%,-(text_row%)*lsY%)
17650ENDIF
17660ENDIF
17670
17680IF text_col%>text_maxllen% THEN
17690  text_col%=2:text_row%+=1
17700  IF text_row%>last_row% last_row%=text_row%
17710  flag1=TRUE
17720ELSE
17730  text_col%+=1
17740  IF text_col%>text_maxllen% THEN
17750    text_col%=1:text_row%+=1
17760    IF text_row%>last_row% last_row%=text_row%
17770    flag1=TRUE
17780  ENDIF
17790ENDIF
17800
17810dummy=FNredraw_text(redraw_all%)
17820PROCcheck_scroll_left:PROCcheck_scroll_up
17830IF flag1 THEN
17840  PROCgetw(texthandle)
17850  block!20=0:SYS OpenW,,block
17860ENDIF
17870ENDPROC
17880
17890DEF PROCoverwrite_char(chr%)
17900IF text_col%>text_rowlen%(text_row%) THEN PROCinsert_char(chr%):ENDPROC
17910IF text_ptr%=mark(0) THEN SWAP mark(0),mark(1):SWAP asc(0),asc(1):SWAP chr(0),chr(1):mrk-=1:mark(1)=0 ELSE IF text_ptr%=mark(1) THEN mrk-=1:mark(1)=0
17920?text_ptr%=chr%
17930text_ptr%+=1
17940IF text_ptr%>text_end% text_end%=text_ptr%
17950?text_end%=0
17960PROCupdate(texthandle,chX%*(text_col%-1),-(text_row%+1)*lsY%,scx%+(x1%-x0%)+chX%,-(text_row%)*lsY%)
17970dummy=FNredraw_text(TRUE)
17980text_col%+=1
17990IF text_col%>text_maxllen% THEN text_col%=1:text_row%+=1
18000
18010last_row%=FNfind_lastrow
18020
18030FOR R%=text_row% TO last_row%
18040  text_rowlen%(R%)=LEN FNrow(R%)
18050NEXT
18060ENDPROC
18070
18080DEF PROCdelete_char
18090IF text_col%=1 AND text_row%=0 VDU 7:ENDPROC
18100IF text_ptr%<mark(0) THEN mark(0)-=1
18110IF text_ptr%<mark(1) THEN mark(1)-=1
18120text_ptr%-=1:text_end%-=1
18130IF text_ptr%=mark(0) THEN SWAP mark(0),mark(1):SWAP asc(0),asc(1):SWAP chr(0),chr(1):mrk-=1:mark(1)=0 ELSE IF text_ptr%=mark(1) THEN mrk-=1:mark(1)=0
18140text_col%-=1:this_row%=text_row%:REM text_rowlen%(text_row%)-=1
18150cr%=FALSE
18160IF text_col%<1 THEN
18170  cr%=TRUE
18180  text_col%=text_rowlen%(text_row%-1)
18190  IF ?text_ptr%=13 text_col%+=1
18200  text_row%-=1
18210ENDIF
18220PROCmove(text_ptr%+1,text_ptr%,text_end%-text_ptr%+1)
18230
18240IF text_rowlen%(this_row%)<text_maxllen% AND NOT cr% THEN
18250text_rowlen%(this_row%)-=1
18260ELSE
18270last_row%=FNfind_lastrow
18280FOR R%=text_row% TO last_row%
18290  text_rowlen%(R%)=LEN FNrow(R%)
18300NEXT
18310ENDIF
18320PROCgetw(texthandle)
18330IF (text_ptr%=text_end% OR text_rowlen%(text_row%)<text_maxllen%-1)  AND NOT cr% THEN
18340PROCupdate(texthandle,chX%*(text_col%-1),-(text_row%+1)*lsY%,scx%+(x1%-x0%)+chX%,-(text_row%)*lsY%)
18350  C%=text_col%
18360ELSE
18370PROCupdate(texthandle,0,-(last_row%+2)*lsY%,scx%+(x1%-x0%)+chX%,-(text_row%)*lsY%)
18380REM  PROCupdate(texthandle,scx%,scy%-(y1%-y0%),scx%+(x1%-x0%)+chX%,scy%)
18390ENDIF
18400
18410dummy=FNredraw_text(TRUE)
18420IF cr% THEN
18430PROCgetw(texthandle)
18440block!20=(text_col%-1)*chX%-(x1%-x0%):SYS OpenW,,block
18450ENDIF
18460ENDPROC
18470
18480DEF PROCinsert_line
18490IF last_row%=text_maxrows% THEN VDU7:ENDPROC
18500from%=text_ptr%-text_col%+1
18510IF from%<mark(0) THEN mark(0)+=1
18520IF from%<mark(1) THEN mark(1)+=1
18530PROCmove(from%,from%+1,text_end%-from%+1)
18540?from%=13
18550FOR R%=last_row%+1 TO text_row%+1 STEP -1
18560text_rowlen%(R%)=text_rowlen%(R%-1)
18570NEXT
18580text_rowlen%(text_row%)=0
18590text_end%+=1:last_row%+=1
18600text_ptr%-=text_col%-1
18610text_col%=1
18620PROCupdate(texthandle,scx%,scy%-(y1%-y0%),scx%+(x1%-x0%)+chX%,scy%-(text_row%)*lsY%)
18630dummy=FNredraw_text(TRUE)
18640ENDPROC
18650
18660DEF PROCdelete_line
18670LOCAL cr%,to%
18680PROCremove_markers
18690next_line%=text_ptr%+text_rowlen%(text_row%)-text_col%+1
18700text_ptr%-=(text_col%-1):to%=text_ptr%
18710IF ?(text_ptr%+text_rowlen%(text_row%))=13 next_line%+=1:cr%=TRUE
18720PROCmove(next_line%,to%,text_end%-next_line%)
18730text_end%-=text_rowlen%(text_row%)
18740IF cr% text_end%-=1
18750IF text_end%<text_block% text_end%=text_block%
18760?text_end%=0
18770text_col%=1
18780last_row%=FNfind_lastrow
18790
18800FOR R%=text_row% TO last_row%
18810  text_rowlen%(R%)=LEN FNrow(R%)
18820NEXT
18830
18840REM PROCupdate(texthandle,scx%,scy%-(y1%-y0%),scx%+(x1%-x0%)+chX%,scy%-(text_row%)*lsY%)
18850PROCupdate(texthandle,scx%,scy%-(y1%-y0%),scx%+(x1%-x0%)+chX%,scy%)
18860dummy=FNredraw_text(TRUE)
18870ENDPROC
18880
18890DEF PROCinstall_texted
18900text_maxrows%=500
18910text_blocksize%=20000
18920text_original%=TRUE
18930DIM text_rowlen%(text_maxrows%)
18940DIM default_text_block% text_blocksize%+300
18950text_block%=default_text_block%
18960dummy_spc=27:dummy_cr=253
18970VDU23,dummy_spc,0,0,0,0,0,0,0,0
18980VDU23,dummy_cr,0,0,0,0,0,0,0,0
18990text_row%=0
19000text_col%=1
19010last_row%=0
19020text_cur%=TRUE
19030overwrite=FALSE
19040tab_set=5
19050text_ptr%=text_block%
19060text_end%=text_block%
19070?text_block%=0
19080mrk=0:DIM mark(1),row(1),col(1),chr(1),asc(1):chr(0)=254:chr(1)=255:cliplen=0
19090ENDPROC
19100
19110DEF PROCremove_markers
19120LOCAL I%
19130IF mrk>0 THEN
19140mrk-=1
19150FOR I%=0 TO mrk
19160?mark(I%)=asc(I%):mark(I%)=0
19170NEXT
19180mrk=0
19190ENDIF
19200ENDPROC
19210
19220DEF FNfind_lastrow
19230LOCAL A%,B%
19240A%=text_block%:B%=text_end%
19250CALL lastrow
19260=!rowcount
19270
19280DEF FNrow(row%)
19290LOCAL A%,B%
19300A%=text_block%:B%=row%
19310CALL row
19320=$linebuffer
19330
19340
19350REM ------ Object editor utilities ------
19360
19370DEF PROCfirst_obj
19380PROCstore_obj(optr)
19390optr=1
19400PROCrestore_obj(1)
19410ENDPROC
19420
19430DEF PROClast_obj
19440PROCstore_obj(optr)
19450optr=last_object
19460PROCrestore_obj(optr)
19470ENDPROC
19480
19490DEF PROCnext_obj
19500PROCstore_obj(optr)
19510optr+=1
19520IF optr>maxobs optr=maxobs
19530PROCrestore_obj(optr)
19540ENDPROC
19550
19560DEF PROCprev_obj
19570PROCstore_obj(optr)
19580optr-=1
19590IF optr<1 optr=1
19600PROCrestore_obj(optr)
19610ENDPROC
19620
19630DEF PROCfwd_obj(times%)
19640PROCstore_obj(optr)
19650optr+=times%:IF optr>maxobs THEN optr=maxobs
19660PROCrestore_obj(optr)
19670ENDPROC
19680
19690DEF PROCrewind_obj(times%)
19700PROCstore_obj(optr)
19710optr-=times%:IF optr<1 THEN optr=1
19720PROCrestore_obj(optr)
19730ENDPROC
19740
19750DEF PROCstore_obj(o%)
19760REM This reads the object data from the writeable icons in the window
19770REM and stores it in the object data area (odata%...)
19780LOCAL olddata
19790ptr=o%*o_len
19800
19810FOR I%=8 TO 15
19820  icondata=VAL(FNgeticondata(objhandle,I%))
19830  CASE I% OF
19840    WHEN 10,11,12,13
19850    REM The double-byte values
19860    olddata=?(odata%+ptr)+?(odata%+ptr+1)*256
19870    IF icondata<>olddata THEN data_saved=FALSE
19880    ?(odata%+ptr)=icondata MOD 256
19890    ?(odata%+ptr+1)=icondata DIV 256
19900    ptr+=2
19910    WHEN 8,9,14,15
19920    REM The single-byte values
19930    olddata=?(odata%+ptr)
19940    IF olddata<>icondata MOD 256 THEN data_saved=FALSE
19950    ?(odata%+ptr)=icondata MOD 256:ptr+=1
19960  ENDCASE
19970NEXT
19980IF container THEN
19990?(odata%+ptr)=?(odata%+ptr) OR %10000000:ptr+=1:?(odata%+ptr)=cont_room
20000ELSE
20010?(odata%+ptr)=?(odata%+ptr) AND %01111111:ptr+=1:?(odata%+ptr)=0
20020ENDIF
20030ENDPROC
20040
20050DEF PROCrestore_obj(o%)
20060REM This reads the data for object o% from memory and updates the icon
20070REM contents, ensuring the window reflects the new values
20080
20090ptr=o%*o_len
20100PROCchangeicon(objhandle,7,STR$(o%),icon%)
20110FOR I%=8 TO 15
20120  CASE I% OF
20130    WHEN 10,11,12,13:data$=STR$(?(odata%+ptr)+256*?(odata%+ptr+1)):ptr+=2
20140    WHEN 8,9,14,15:data$=STR$(?(odata%+ptr)):ptr+=1
20150  ENDCASE
20160  IF data$="" THEN data$="0"
20170  PROCchangeicon(objhandle,I%,data$,newicon%)
20180NEXT I%
20190
20200store=small_area%:col%=1:row%=0
20210PROCfill(small_area%,small_areasize%,13)
20220print=FALSE
20230PROCpvok(FNfindnoun(o%,void),1,FALSE)
20240PROCchangeicon(objhandle,19,$small_area%,newicon%)
20250IF ((?(odata%+ptr) AND %10000000) DIV 128)>0 THEN container=TRUE ELSE container=FALSE
20260ptr+=1
20270cont_room=?(odata%+ptr):$controom%=STR$(cont_room)
20280IF container PROCchangeicon(objhandle,26,"SIZE <C>",newicon%) ELSE PROCchangeicon(objhandle,26,"SIZE",newicon%)
20290ENDPROC
20300
20310
20320REM ------ Room editor utilities ------
20330
20340DEF PROCfirst_room
20350PROCstore_room(rptr)
20360rptr=1
20370PROCrestore_room(1)
20380ENDPROC
20390
20400DEF PROClast_room
20410PROCstore_room(rptr)
20420rptr=last_room
20430PROCrestore_room(rptr)
20440ENDPROC
20450
20460DEF PROCnext_room
20470PROCstore_room(rptr)
20480rptr+=1
20490IF rptr>maxrms rptr=maxrms
20500PROCrestore_room(rptr)
20510ENDPROC
20520
20530DEF PROCprev_room
20540PROCstore_room(rptr)
20550rptr-=1
20560IF rptr<1 rptr=1
20570PROCrestore_room(rptr)
20580ENDPROC
20590
20600DEF PROCfwd_room(times%)
20610PROCstore_room(rptr)
20620rptr+=times%:IF rptr>maxrms THEN rptr=maxrms
20630PROCrestore_room(rptr)
20640ENDPROC
20650
20660DEF PROCrewind_room(times%)
20670PROCstore_room(rptr)
20680rptr-=times%:IF rptr<1 THEN rptr=1
20690PROCrestore_room(rptr)
20700ENDPROC
20710
20720DEF PROCstore_room(r%)
20730ptr=r%*r_len
20740FOR I%=34 TO 69
20750  icondata=VAL(FNgeticondata(roomhandle,I%))
20760  CASE TRUE OF
20770    WHEN I%>35 AND I%<54
20780    olddata=?(rdata%+ptr)+?(rdata%+ptr+1)*256
20790    IF icondata<>olddata THEN data_saved=FALSE
20800    ?(rdata%+ptr)=icondata MOD 256
20810    ?(rdata%+ptr+1)=icondata DIV 256
20820    ptr+=2
20830    WHEN I%<36 OR I%>53
20840    olddata=?(rdata%+ptr)
20850    IF olddata<>icondata MOD 256 THEN data_saved=FALSE
20860    ?(rdata%+ptr)=icondata MOD 256
20870    ptr+=1
20880  ENDCASE
20890NEXT I%
20900icondata=VAL(FNgeticondata(roomhandle,71))
20910?(rdata%+ptr+16)=icondata MOD 256
20920?(rdata%+ptr+17)=icondata DIV 256
20930ENDPROC
20940
20950DEF PROCrestore_room(r%)
20960ptr=r%*r_len
20970PROCchangeicon(roomhandle,33,STR$(r%),icon%)
20980FOR I%=34 TO 69
20990  CASE TRUE OF
21000    WHEN I%>35 AND I%<54
21010    data$=STR$(?(rdata%+ptr)+256*?(rdata%+ptr+1)):ptr+=2
21020    WHEN I%<36 OR I%>53
21030    data$=STR$(?(rdata%+ptr)):ptr+=1
21040  ENDCASE
21050  IF data$="" THEN data$="0"
21060  PROCchangeicon(roomhandle,I%,data$,newicon%)
21070NEXT I%
21080data$=STR$(?(rdata%+ptr+16)+256*?(rdata%+ptr+17))
21090IF data$="" THEN data$="0"
21100PROCchangeicon(roomhandle,71,data$,newicon%)
21110ENDPROC
21120
21130
21140REM ------ Message editor utilities ------
21150
21160DEF PROCstore_msg
21170errflag=FALSE:PROCremove_markers
21180newlen=text_end%-text_block%
21190diff=newlen-oldlen
21200IF diff+text%!2>maxtext% THEN
21210  PROCerror(13,error$(36))
21220  errflag=TRUE
21230ELSE
21240  to=mstart+newlen-1
21250  from=mend-1
21260  text_end%=text_block%:text_ptr%=text_block%
21270  bytes_to_move=FNtext_end-mend+1
21280  PROCmove(from,to,bytes_to_move)
21290  PROCmove(text_block%,mstart,newlen)
21300  PROCincmsglen(diff)
21310  ns%=switch_vals(0)
21320  IF ns%>0 THEN
21330    ?switch_buf%=ns%:ptr%=1
21340    FOR I%=1 TO ns%
21350      switch_buf%?ptr%=switch_vals(I%)
21360      switch_buf%?(ptr%+1)=switch_vals(I%) DIV 256
21370      ptr%+=2
21380    NEXT
21390  ELSE
21400    PROCfill(switch_buf%,maxsw%*2+1,0)
21410  ENDIF
21420  PROCmove(mstart,swloc+2*ns%+1,FNtext_end-mstart)
21430  PROCmove(switch_buf%,swloc,2*ns%+1)
21440  PROCincmsglen(2*ns%-2*oldsw)
21450ENDIF
21460ENDPROC
21470
21480DEF PROCincmsglen(bytes_to_add)
21490text%!2=text%!2+bytes_to_add
21500ENDPROC
21510
21520DEF FNtext_end
21530=text%+text%!2
21540
21550DEF FNmaxmsg
21560=?text%+256*text%?1
21570
21580DEF PROCincmaxmsg
21590?text%+=1:IF ?text%=0 ?(text%+1)+=1
21600ENDPROC
21610
21620DEF PROCshow_msg(ms%)
21630IF ms%>FNmaxmsg THEN ERROR 4,error$(31)
21640IF ms%<1 ENDPROC
21650PROCfill(text_block%,text_blocksize%,dummy_spc)
21660text_rowlen%()=+0:switch_vals()=+0
21670changed_msg=TRUE
21680A%=ms%:C%=text%+7:ptr%=USR findmsg
21690chr%=?ptr%:ptr%+=1
21700switch_vals(0)=chr%:oldsw=chr%:swloc=ptr%-1
21710IF chr%>0 THEN
21720  FOR I%=1 TO chr%
21730    switch_vals(I%)=?ptr%+256*ptr%?1
21740    ptr%+=2
21750  NEXT
21760ENDIF
21770mstart=ptr%
21780chr%=?ptr%
21790row%=0:text_ptr%=text_block%
21800WHILE chr%>0
21810  col%=1:line$=""
21820  WHILE chr%<>13 AND chr%<>0 AND col%<=text_maxllen%
21830  IF chr%>&7F THEN
21840  tokptr=chr%-&7F
21850  line$+=tok$(tokptr):L%=LEN tok$(tokptr)
21860  FOR I%=1 TO L%
21870  ?(text_ptr%+I%-1)=ASC(MID$(tok$(tokptr),I%,1))
21880  NEXT
21890  text_ptr%+=(L%-1)
21900  ELSE
21910    ?text_ptr%=chr%:line$+=CHR$ chr%
21920  ENDIF
21930    ptr%+=1:text_ptr%+=1:chr%=?ptr%:col%+=1
21940  ENDWHILE
21950  text_rowlen%(row%)=LEN line$
21960  IF col%>text_maxllen% OR chr%=13 row%+=1:col%=1
21970  IF chr%=13 ?text_ptr%=13:text_ptr%+=1:ptr%+=1
21980  chr%=?ptr%:REM ptr%+=1
21990ENDWHILE
22000mend=ptr%:?text_ptr%=chr%
22010text_end%=text_ptr%
22020oldlen=mend-mstart
22030IF oldlen<0 oldlen=0
22040text_ptr%=text_block%
22050last_row%=FNfind_lastrow
22060FOR I%=0 TO last_row%:text_rowlen%(I%)=LEN FNrow(I%):NEXT
22070ENDPROC
22080
22090DEF PROCnext_msg
22100mptr+=1
22110PROCstore_msg:REM save this one first
22120IF mptr>FNmaxmsg THEN ptr=FNtext_end:ptr?0=0:ptr?1=0:PROCincmaxmsg:PROCincmsglen(2)
22130PROCshow_msg(mptr):REM Now load the next one into `texted`
22140PROCretitle_text("MESSAGE "+STR$mptr):REM PROCforceR(texthandle)
22150ENDPROC
22160
22170DEF PROCprev_msg
22180IF mptr>1 THEN
22190mptr-=1
22200PROCstore_msg
22210PROCshow_msg(mptr)
22220PROCretitle_text("MESSAGE "+STR$mptr)
22230ENDIF
22240ENDPROC
22250
22260DEF PROCgoto_msg(ms%)
22270IF ms%>FNmaxmsg ms%=FNmaxmsg:VDU 7
22280IF ms%<1 ms%=1:VDU 7
22290PROCstore_msg
22300PROCshow_msg(ms%)
22310mptr=ms%
22320PROCretitle_text("MESSAGE "+STR$mptr)
22330ENDPROC
22340
22350DEF PROClast_msg
22360PROCstore_msg
22370mptr=FNmaxmsg
22380PROCshow_msg(mptr)
22390PROCretitle_text("MESSAGE "+STR$mptr)
22400ENDPROC
22410
22420DEF PROCfirst_msg
22430PROCstore_msg
22440mptr=1
22450PROCshow_msg(mptr)
22460PROCretitle_text("MESSAGE "+STR$mptr)
22470ENDPROC
22480
22490
22500REM ------ Program Editor utilities ------
22510
22520DEF PROCstore_prog
22530LOCAL sp_ptr%,line$,chr%
22540REM Use `hourglass` pointer
22550SYS "Hourglass_On"
22560errflag=FALSE:PROCremove_markers
22570sp_ptr%=text_block%
22580chr%=?sp_ptr%
22590prgptr=prgbuf%
22600WHILE sp_ptr%<text_end% AND NOT errflag
22610  line$=""
22620  WHILE (chr%<>13) AND (chr%<>0) AND (chr%<>dummy_spc)
22630    chr%=?sp_ptr%
22640    sp_ptr%+=1
22650    line$+=CHR$(chr%)
22660  ENDWHILE
22670  PROCscan
22680  chr%=?sp_ptr%
22690  WHILE (chr%=13 OR chr%=dummy_spc OR chr%=0) AND (sp_ptr%<text_end%)
22700    sp_ptr%+=1:chr%=?sp_ptr%
22710  ENDWHILE
22720ENDWHILE
22730IF NOT errflag THEN
22740  oldlen%=prgend-pstart:IF oldlen%<>0 oldlen%+=1
22750  bytes_to_move=FNprglen-oldlen%
22760  PROCincprglen(-oldlen%)
22770  newlen%=prgptr-prgbuf%
22780  REM This check for 'No room' was added 2.6.89
22790  IF FNprglen+newlen%>code_size%-4 THEN
22800    PROCincprglen(oldlen%)
22810    PROCerror(13,error$(35))
22820  ELSE
22830    PROCmove(prgend+1,pstart+newlen%,bytes_to_move)
22840    PROCmove(prgbuf%,pstart,newlen%)
22850    PROCincprglen(newlen%)
22860    ?(program%+4+FNprglen)=0:REM restore end of program marker (9/4/89)
22870    text_ok=TRUE
22880  ENDIF
22890ENDIF
22900SYS "Hourglass_Off"
22910ENDPROC
22920
22930DEF FNprglen
22940=!program%
22950
22960DEF PROCincprglen(bytes)
22970!program%=!program%+bytes
22980ENDPROC
22990
23000
23010REM ------ Window `redraw` functions ------
23020
23030
23040DEF FNredraw_text(flag%)
23050REM flag%=TRUE -> redraw WHOLE text window
23060REM else only redraw from the cursor line
23070
23080WHILE more%
23090BR%=(by%-block!32-ypixel%) DIV lsY%
23100IF BR%>last_row% BR%=last_row%
23110TR%=(by%-block!40-ypixel%) DIV lsY%
23120IF TR%>last_row% TR%=last_row%
23130ptr_end%=BR%*text_maxllen%+text_block%
23140CLG
23150FOR I%=TR% TO BR%
23160  MOVE bx%,by%-lsY%*I%-ypixel%
23170  PRINT FNrow(I%);
23180NEXT
23190SYSGetR,0,block TO more%
23200ENDWHILE
23210=0
23220
23230
23240REM ------ General icon handling routines ------
23250
23260DEF PROCht(handle%,icon%,fl$,fc%,bc%)
23270LOCALmask%
23280IFfl$="*"THENfl%=0:mask%=&FF000000 ELSEfl%=EVALfl$:mask%=-1
23290!block=handle%:block!4=icon%:block!8=fl%:block?11=fc%+(bc%<<4):block!12=mask%:SYS SetI,0,block
23300ENDPROC
23310
23320DEF FNgeticondata(handle%,icon%)
23330!block=handle%:block!4=icon%
23340SYS GetI,0,block
23350flags%=block!24
23360IF (flags% AND 256)<>0 THEN data$=$(!(block+28)) ELSE data$=$(block+28)
23370=data$
23380
23390DEF PROCchangeicon(handle%,icon%,new$,RETURN icon%)
23400LOCAL J%
23410dummy$=FNgeticondata(handle%,icon%)
23420IF (flags% AND 256)<>0 THEN $(!(block+28))=new$ ELSE $(block+28)=new$
23430SYS DeleteI,0,block
23440FOR J%=4 TO 28 STEP 4
23450  block!J%=block!(J%+4)
23460NEXT J%
23470!block=handle%:SYS CreateI,0,block TO icon%
23480PROCset_icon(handle%,icon%,0,0):REM ensure it appears updated on screen
23490ENDPROC
23500
23510DEF PROCset_icon(handle%,icon%,eor%,mask%)
23520!block=handle%:block!4=icon%:block!8=eor%:block!12=mask%
23530SYS SetI,0,block
23540ENDPROC
23550
23560
23570REM ------ Menu creation procedures ------
23580
23590REM **** onIconBar = 1 if yes, otherwise 0 **********
23600DEF FNmenuHeight(theMenu%, onIconBar%)
23610= ((96 * onIconBar%) + (theMenu%?30 * 44) + (theMenu%?31 * 24))
23620
23630
23640DEF FNcrmenu
23650IF menufree%+28 > menuend% THEN ERROR 1,error$(32)
23660LOCAL m%,menu$:READ menu$
23670
23680
23690REM ************** the bodge to store the menu height ****************
23700LOCAL menuHiAddr%
23710menuHiAddr% = menufree% + 28 + 2 :REM 2nd last byte in 1st menuitem flags
23720menuItemNum% = 0
23730dashItemNum% = 0
23740
23750
23760IF LEFT$(menu$,1)="=" THEN menu$=EVALMID$(menu$,2)
23770menuptr%=menufree%
23780i%=0:ctr%=0
23790IF LEFT$(menu$,1)="#" THEN i%=1:menutitle$=FNpar(",") ELSE menutitle$=""
23800I%=INSTR(menutitle$,">")
23810IF I%>0 THEN
23820     menuptr%!20=EVAL(MID$(menutitle$,I%+1))
23830     menutitle$=LEFT$(menutitle$,I%-1)
23840ELSE menuptr%!20=44
23850ENDIF
23860$menuptr%=menutitle$
23870menuptr%?12=`tfcol:menuptr%?13=`tbcol:menuptr%?14=`wfcol:menuptr%?15=`wbcol
23880menuptr%!16=196-24:menuptr%!24=0
23890menuptr%+=28:maxx%=LENmenutitle$-3
23900WHILE RIGHT$(menu$,1)="~"
23910  menu$=LEFT$(menu$,LENmenu$-1)
23920  REPEAT item$=FNpar(","):PROCmenuitem(item$):UNTIL item$=""
23930  READ menu$
23940ENDWHILE
23950REPEAT item$=FNpar(","):PROCmenuitem(item$):UNTIL item$=""
23960menuptr%!-24=(menuptr%!-24)OR&80
23970m%=menufree%:m%!16=(maxx%*8+6)*dx%
23980menufree%=menuptr%
23990?menuHiAddr% = menuItemNum%      : REM the number of items
24000?(menuHiAddr% +1) = dashItemNum% : REM the number of dashes
24010=m%
24020
24030DEF PROCmenuitem(text$)
24040IF text$="" THEN ENDPROC
24050IF menuptr%+24 > menuend% THEN ERROR 1,error$(32)
24060IF text$="&" THEN
24070  SYS "Font_ListFonts",,q%,ctr% TO ,,ctr%
24080  IF ctr%>=0 THEN text$=$q%+">m_fsize%":i%-=2 ELSE ENDPROC
24090ENDIF
24100LOCALi%,flg%
24110
24120menuItemNum% += 1
24130
24140flg%=&00
24150i%=INSTR(text$,">")
24160IFi%>0THENsubptr%=EVALMID$(text$,i%+1):text$=LEFT$(text$,i%-1)ELSEsubptr%=-1
24170IF RIGHT$(text$,1)="#" THEN text$=LEFT$(text$,LENtext$-1):flg%+=&02:dashItemNum% += 1
24180menuptr%!0=flg%
24190menuptr%!4=subptr%
24200menuptr%!8=&07000021
24210IF LEFT$(text$,1)="?" THEN
24220  menuptr%!8=&0700011A
24230  I%=FNworkspace(LENtext$):$I%=MID$(text$,2)
24240  menuptr%!12=I%:menuptr%!16=systemsprites%:menuptr%!20=LENtext$
24250ELSE
24260  IF LEFT$(text$,1)="$" THEN
24270    !menuptr%+=&04
24280    menuptr%!8+=&100
24290    i%=INSTR(text$,"(")
24300    IFi%>0THENL%=VALMID$(text$,i%+1):text$=LEFT$(text$,i%-1)ELSEL%=12
24310    menuptr%!12=EVAL(MID$(text$,2)):menuptr%!16=-1:menuptr%!20=L%
24320    text$=STRING$(L%," ")
24330  ELSE
24340    IFLENtext$<=12THEN
24350         $(menuptr%+12)=text$
24360    ELSE I%=FNworkspace(LENtext$+1):$I%=text$
24370         menuptr%!12=I%:menuptr%!16=-1:menuptr%!20=LENtext$+1
24380         menuptr%!8=menuptr%!8 OR &100
24390    ENDIF
24400  ENDIF
24410  IFLENtext$>maxx%THENmaxx%=LENtext$
24420ENDIF
24430menuptr%+=24
24440ENDPROC
24450 
24460DEF FNpar(sep$)
24470i1%=i%+1:i%=INSTR(menu$+sep$,sep$,i1%)
24480=MID$(menu$,i1%,i%-i1%)
24490
24500DEF FNworkspace(L%)
24510IF curbuff%+L%>buffer%+maxbuf% THEN ERROR 1,error$(33)
24520curbuff%+=L%:=curbuff%-L%
24530
24540
24550REM ------ Procedures to interface with ARM code ------
24560
24570DEF PROCmove(from,to,bytes_to_move)
24580IF bytes_to_move=0 THEN ENDPROC
24590A%=from:B%=to:C%=bytes_to_move
24600CALL move
24610ENDPROC
24620
24630DEF PROCfill(start,bytes,filler)
24640A%=start:B%=bytes:C%=filler
24650CALLfill
24660ENDPROC
24670
24680
24690REM ------ ARM source code ------
24700
24710DEF PROCassemble(addr%)
24720LOCAL pass
24730sp=13:link=14
24740FOR pass=0 TO 2 STEP 2
24750P%=addr%
24760[OPT pass
24770.fill     b fill2
24780.move     b blockmove
24790
24800.fill2
24810\ r0=start address r1=number of bytes r2=value to fill with
24820\ all registers are preserved
24830stmfd (sp)!,{r0-r3,link}
24840mov r3,r0
24850add r3,r3,r1
24860.fillloop
24870strb r2,[r0],#1
24880cmp r0,r3
24890blt fillloop
24900ldmfd (sp)!,{r0-r3,PC}
24910
24920\ General purpose block move routine (up or down and overlapping)
24930\ r0 = `from` address, r1 = `to` address, r2 = number of bytes to move
24940.blockmove
24950cmp r0,r1
24960blt moveup
24970bal movedown
24980
24990.movedown
25000\ Move memory block down
25010\ r0 = `from` address, r1= `to` address, r2 = number of bytes to move
25020stmfd (sp)!,{r0-r3,link}
25030
25040.movdloop
25050ldrb r3,[r0],#1
25060strb r3,[r1],#1
25070subs r2,r2,#1
25080bne movdloop
25090
25100ldmfd (sp)!,{r0-r3,PC}
25110
25120.moveup
25130\ Move memory block up
25140\ r0 = `from` address, r1= `to` address, r2 = number of bytes to move
25150
25160stmfd (sp)!,{r0-r3,link}
25170sub r2,r2,#1
25180add r0,r0,r2
25190add r1,r1,r2
25200\ Call here if r2 = end address
25210.moveuploop
25220ldrb r3,[r0],#-1
25230strb r3,[r1],#-1
25240subs r2,r2,#1
25250bpl moveuploop
25260ldmfd (sp)!,{r0-r3,PC}
25270
25280.lastrow
25290\ Find last row of text
25300\ Entry - r0 = start address of text (text_block%)
25310\         r1 = end address of text (text_end%)
25320\ Exit  - number of last row is in 'rowcount' (rows numbered 0,1,2...)
25330stmfd (sp)!,{r0-r4,link}
25340mov r2,#0
25350mov r3,#0
25360mov r4,#0
25370
25380.while
25390cmp r0,r1
25400beq endwhile
25410ldrb r3,[r0],#1
25420add r4,r4,#1
25430cmp r4,#text_maxllen%
25440addeq r2,r2,#1
25450moveq r4,#0
25460beq while
25470cmp r3,#13
25480addeq r2,r2,#1
25490moveq r4,#0
25500cmp r3,#dummy_cr
25510addeq r2,r2,#1
25520moveq r4,#0
25530bal while
25540
25550.endwhile
25560str r2,rowcount
25570ldmfd (sp)!,{r0-r4,PC}
25580
25590.rowcount EQUD 0
25600
25610.row
25620\ Returns the string of text in the specified row of the text block
25630\ Entry - r0 = start address of text (text_block%)
25640\         r1 = row wanted (0,1,2...)
25650\ Exit  - the string is returned in 'linebuffer', terminated by <cr>
25660\ r2 is the current row
25670\ r3 is the current character
25680\ r4 is the length of the current row
25690
25700stmfd (sp)!,{r0-r4,link}
25710mov r2,#0
25720mov r4,#0
25730
25740.while2
25750cmp r2,r1
25760beq endwhile2
25770ldrb r3,[r0],#1
25780add r4,r4,#1
25790cmp r4,#text_maxllen%
25800moveq r4,#0
25810addeq r2,r2,#1
25820beq while2
25830cmp r3,#13
25840moveq r4,#0
25850addeq r2,r2,#1
25860cmp r3,#dummy_cr
25870moveq r4,#0
25880addeq r2,r2,#1
25890bal while2
25900
25910.endwhile2
25920adr r1,linebuffer
25930mov r4,#0
25940
25950.strloop
25960ldrb r3,[r0],#1
25970add r4,r4,#1
25980cmp r3,#0
25990beq lineend
26000cmp r3,#dummy_spc
26010beq lineend
26020cmp r3,#13
26030beq lineend
26040cmp r3,#dummy_cr
26050streqb r3,[r1],#1
26060beq lineend
26070strb r3,[r1],#1
26080cmp r4,#text_maxllen%
26090bne strloop
26100
26110.lineend
26120cmp r3,#0
26130moveq r3,#13
26140cmp r3,#dummy_spc
26150moveq r3,#13
26160cmp r3,#dummy_cr
26170moveq r3,#13
26180cmp r4,#text_maxllen%
26190moveq r3,#13
26200strb r3,[r1],#1
26210ldmfd (sp)!,{r0-r4,PC}
26220
26230.linebuffer EQUS STRING$(text_maxllen%+1,CHR$ dummy_spc)
26240 align
26250
26260.findmsg
26270\Finds start of specified message
26280\Entry - r0 = message number
26290\      - r2 = text start address (MSG#0)
26300\Exit  - r0 = start address of message (switches)
26310stmfd (sp)!,{r1-r3,link}
26320cmp r0,#0
26330beq startm
26340
26350.nxtmsg
26360ldrb r1,[r2],#1
26370add r2,r2,r1, lsl #1 \ r2 = r2 + r1*2
26380
26390.readch
26400ldrb r1,[r2],#1
26410cmp r1,#0
26420bne readch
26430subs r0,r0,#1
26440bne nxtmsg
26450
26460.startm
26470mov r0,r2
26480ldmfd (sp)!,{r1-r3,pc}
26490
26500.pvok
26510;Print Verb, Object or Keyword (returns the word string)
26520;Entry - r0 = Number of word to print
26530;        r1 = address of required word table
26540;Exit  - word is in 'atext' terminated by <cr>
26550stmfd (sp)!,{r0-r5,link}
26560mov r3,r0      \Word number is now in r3
26570mov r4,r2      \r4 is 'all' flag
26580mov r5,#0      \r5 is 'ctr'
26590
26600.LLL1
26610adr r2,atext   \r2 points to 'atext'
26620
26630.LLL2
26640ldrb r0,[r1]   \Get character from list
26650\orr r0,r0,#32  \Convert to lower case
26660strb r0,[r2]   \Put it in 'text'
26670tst r0,#&80    \Is bit 7 set (end of the word)
26680bne endofw     \Yes
26690add r2,r2,#1
26700add r1,r1,#1
26710b LLL2
26720
26730.endofw
26740cmp r0,#&FF
26750adreq r2,pvokflag
26760streqb r0,[r2]
26770beq endtbl
26780and r0,r0,#%01111111 ;Clear bit 7
26790strb r0,[r2],#1
26800mov r0,#13
26810strb r0,[r2]
26820add r1,r1,#1
26830ldrb r0,[r1] ;Get the verb/object number from table
26840add r1,r1,#1 ;Skip the number
26850cmp r0,r3    ;Is it the one we want?
26860bne LLL1     ;No - try the next one
26870
26880.endtbl
26890adr r2,address
26900str r1,[r2]
26910ldmfd (sp)!,{r0-r5,pc}
26920
26930.atext EQUS STRING$(80,"*")
26940align
26950.address equd 0
26960.pvokflag equb 0
26970align
26980]
26990NEXT pass
27000ENDPROC
27010
27020
27030REM ------ Some general utility routines ------
27040
27050DEF PROCErrorMsgRead
27060in%=OPENIN("<Alps$Resources>.Errormsgs")
27070INPUT#in%,errors
27080DIM error$(errors)
27090FOR error=0 TO errors-1
27100  INPUT#in%,error$(error)
27110NEXT error
27120CLOSE#in%
27130ENDPROC
27140
27150DEF PROCKeyWordRead
27160REM Reads file of keywords/info bytes
27170REM Keywords are in alphabetical order
27180LOCAL CHN%,I%,J%
27190first_token=&60
27200maxmsg=65535:maxobn=255:maxvbn=255:maxconst=65535
27210chn%=OPENIN "<Alps$Resources>.keywrdlist"
27220INPUT#chn%,keywords
27230DIM keyword$(keywords),info%(keywords,5)
27240
27250REM Set up keyword tables
27260REM keyword$ | token | type/No. params | Max values param 1,2,3 |
27270REM type/No. params gives number of parameters and bit 7 is set if its
27280REM a function, bit 6 set for object keywords, bit 5 for verb keywords
27290
27300FOR I%=1 TO keywords
27310INPUT#chn%,keyword$(I%)
27320FOR J%=0 TO 5
27330INPUT#chn%,info%(I%,J%)
27340NEXT J%
27350NEXT I%
27360CLOSE#chn%
27370
27380FOR I%=1 TO keywords
27390params=info%(info%(I%,2),1) AND %00011111
27400bytes=0
27410IF params>0 THEN
27420FOR K%=3 TO 5
27430maxval=info%(info%(I%,2),K%)
27440IF maxval<256 AND maxval>0 THEN bytes+=1
27450IF maxval>255 AND maxval<65536 THEN bytes+=2
27460IF maxval>65535 THEN bytes+=3
27470NEXT K%
27480ENDIF
27490parambyte=info%(info%(I%,2),1) AND %10000000
27500pbytes?(I%-1)=bytes OR parambyte
27510NEXT
27520ENDPROC
27530
27540
27550REM ------ Printing procedures ------
27560
27570DEF PROCprint_prog_seg
27580LOCAL R%
27590LOCAL ERROR
27600ON ERROR LOCAL:OSCLI("FX3,0"):SYS "Hourglass_Off":ENDPROC
27610*FX3,10
27620FOR R%=0 TO last_row%
27630  PRINT FNrow(R%)
27640NEXT R%
27650*FX3,0
27660ENDPROC
27670
27680DEF PROCprint_program
27690LOCAL ERROR
27700ON ERROR LOCAL:OSCLI("FX3,0"):SYS "Hourglass_Off":ENDPROC
27710PROClist(1,"")
27720ENDPROC
27730
27740DEF PROCprint_text
27750LOCAL st%,end%,M%
27760LOCAL ERROR
27770ON ERROR LOCAL:OSCLI("FX3,0"):SYS "Hourglass_Off":ENDPROC
27780PROCclose(texthandle)
27790*FX3,10
27800st%=VAL $st_msg%
27810end%=VAL $end_msg%
27820IF end%>FNmaxmsg end%=FNmaxmsg
27830FOR M%=st% TO end%
27840  PROCshow_msg(M%)
27850  PROCprint_msg(M%)
27860NEXT M%
27870*FX3,0
27880ENDPROC
27890
27900DEF PROCprint_msg(M%)
27910LOCAL S%,R%
27920PRINT"Message: ";M%;" Switches: ";
27930IF switch_vals(0)=0 THEN
27940  PRINT"None";
27950ELSE
27960  FOR S%=1 TO switch_vals(0)
27970    PRINT"<";switch_vals(S%);">";
27980  NEXT
27990ENDIF
28000PRINT
28010FOR R%=0 TO last_row%
28020  PRINT FNrow(R%)
28030NEXT R%
28040PRINT STRING$(text_maxllen%,"-")
28050ENDPROC
28060
28070DEF PROCprint_objs
28080LOCAL O%,F%,I%,ptr%
28090*FX3,10
28100VDU condensed
28110PRINTpline$
28120PROCprint_flags(o_flags%)
28130PRINTpline$
28140PRINT"Obj Noun       Flags 7 6 5 4 3 2 1 0 State Start Describe Short Examine Weight Size Cont. 'Store' Trans. Open"
28150PRINTpline$
28160FOR O%=1 TO last_object
28170PRINT;O%;
28180store=small_area%:col%=1:row%=0
28190PROCfill(small_area%,small_areasize%,13)
28200print=FALSE
28210PROCpvok(FNfindnoun(O%,void),1,FALSE):PRINTTAB(4)$small_area%;TAB(21);
28220ptr%=odata%+O%*o_len
28230FOR F%=7 TO 0 STEP-1
28240IF ?ptr% AND (2^F%) THEN PRINT"* "; ELSE PRINT". ";
28250NEXT
28260PRINTTAB(39);ptr%?1;TAB(43);ptr%?2+256*ptr%?3;TAB(50)ptr%?4+256*ptr%?5;TAB(58);ptr%?6+256*ptr%?7;TAB(65);ptr%?8+256*ptr%?9;TAB(73);ptr%?10;TAB(80);ptr%?11;
28270IF (ptr%?12 AND &80)<>0 THEN PRINTTAB(85)"<C>";TAB(92);ptr%?13;
28280IF (ptr%?12 AND &80)<>0 THEN
28290store_room=ptr%?13
28300rmflags=?(rdata%+store_room*r_len)
28310tr_flag=(rmflags AND %100000)>0
28320op_flag=(rmflags AND %10000)>0
28330IF tr_flag PRINTTAB(100);"Y"; ELSE PRINTTAB(100);"N";
28340IF op_flag PRINTTAB(106);"Y" ELSE PRINTTAB(106);"N"
28350ELSE
28360PRINT
28370ENDIF
28380NEXT
28390PRINTpline$
28400VDU 27,reset
28410*FX3,0
28420ENDPROC
28430
28440DEF PROCprint_rooms
28450LOCAL R%,F%,I%,ptr%
28460*FX3,10
28470VDU condensed
28480PRINTpline$
28490PROCprint_flags(r_flags%)
28500PRINTpline$:PRINTTAB(70);" * DESTINATIONS *"
28510PRINT"Room Flags 76543210 State Desc. Short Pict. N    S    E    W    NE   NW   SE   SW   Up   Down In   Out  Back Left Righ Jump"
28520PRINTpline$
28530FOR R%=1 TO last_room
28540PRINT;R%;TAB(11);
28550ptr%=rdata%+R%*r_len
28560FOR F%=7 TO 0 STEP-1
28570IF ?ptr% AND (2^F%) THEN PRINT"*"; ELSE PRINT".";
28580NEXT
28590PRINTTAB(20);ptr%?1;TAB(26);ptr%?2+256*ptr%?3;TAB(32);ptr%?4+256*ptr%?5;TAB(38);ptr%?70+256*ptr%?71;
28600FOR I%=6 TO 36 STEP 2
28610PRINTTAB(5*(I% DIV 2-3)+44);ptr%?I%+256*ptr%?(I%+1);
28620NEXT I%
28630PRINT
28640NEXT R%
28650
28660PRINTpline$:PRINTTAB(30);" * EXIT ROUTINES *"
28670PRINT"Room  N    S    E    W    NE   NW   SE   SW   Up   Down In   Out  Back Left Righ Jump"
28680PRINTpline$
28690FOR R%=1 TO last_room
28700PRINT;R%;
28710ptr%=rdata%+R%*r_len
28720FOR I%=38 TO 53
28730PRINTTAB(5*(I%-38)+6);ptr%?I%;
28740NEXT I%
28750PRINT
28760NEXT R%
28770PRINTpline$
28780PRINTTAB(59)"* EXIT FLAGS *"
28790PRINTpline$
28800PRINT"Exit Flag: ";
28810FOR flag=7 TO 0 STEP-1
28820PRINTTAB(11+(7-flag)*15);"|"TAB(20+(7-flag)*15);flag;
28830NEXT
28840PRINTTAB(11+8*15);"|"
28850PRINT"Descript'n";
28860FOR flag=7 TO 0 STEP-1
28870PRINTTAB(10+(7-flag)*15);" | ";exit_flag$(flag);
28880NEXT
28890PRINTTAB(10+8*15);" |"
28900PRINTpline$
28910PRINTTAB(4);" North   South    East    West   No'east No'west So'east So'west   Up     Down     In     Out     Back    Left    Right   Jump  "
28920FOR R%=1 TO last_room
28930IF R%=1 OR R% MOD 10=0 THEN PRINTTAB(4)STRING$(16,"|-------")
28940PRINT;R%;
28950ptr%=rdata%+R%*r_len
28960PRINTTAB(4);
28970FOR I%=54 TO 69
28980FOR F%=7 TO 0 STEP-1
28990IF ?(ptr%+I%) AND (2^F%) THEN PRINT"*"; ELSE PRINT".";
29000NEXT F%
29010NEXT I%
29020PRINT
29030NEXT R%
29040PRINTpline$
29050VDU 27,reset
29060*FX3,0
29070ENDPROC
29080
29090DEF PROCprint_flags(mem%)
29100PRINT"Flag:      ";
29110FOR flag=7 TO 0 STEP-1
29120PRINTTAB(11+(7-flag)*15);"|"TAB(20+(7-flag)*15);flag;
29130NEXT
29140PRINTTAB(11+8*15);"|"
29150PRINT"Descript'n";
29160FOR flag=7 TO 0 STEP-1
29170PRINTTAB(10+(7-flag)*(maxd%-1+3));" | ";$mem%;
29180mem%+=maxd%
29190NEXT
29200PRINTTAB(10+8*(maxd%-1+3));" |"
29210ENDPROC
29220
29230DEF PROCprint_vocab
29240print=TRUE
29250PROCput(pline2$+CHR$13)
29260PROCput(STRING$(37," ")+"Nouns:"+CHR$13):PROClistnouns
29270PROCput(pline2$+CHR$13)
29280PROCput(STRING$(37," ")+"Verbs:"+CHR$13):PROClistverbs
29290PROCput(pline2$+CHR$13)
29300PROCput(STRING$(34," ")+"Adjectives:"+CHR$13):PROClistadjs
29310PROCput(pline2$+CHR$13)
29320PROCput(STRING$(33," ")+"Conjunctions:"+CHR$13):PROClistconjs
29330PROCput(pline2$+CHR$13)
29340PROCput(STRING$(33," ")+"Prepositions:"+CHR$13):PROClistpreps
29350PROCput(pline2$+CHR$13)
29360PROCput(STRING$(35," ")+"Specials:"+CHR$13):PROClistspecs
29370PROCput(pline2$+CHR$13)
29380PROCput(STRING$(37," ")+"Noise:"+CHR$13):PROClistnoise
29390PROCput(pline2$+CHR$13)
29400print=FALSE
29410ENDPROC
29420
29430DEF PROCprint_pix
29440LOCAL mptr
29450print=TRUE:SYS "Hourglass_On"
29460
29470IF pxn>1 THEN
29480mptr=pixs+3
29490FOR I%=1 TO pxn-1
29500  PROCput(STR$(I%)+"= ")
29510  PROCput($mptr)
29520  mptr+=LEN$mptr+1
29530  PROCput(",<"+pos$(?mptr)+">"+CHR$13)
29540  mptr+=5
29550NEXT
29560ENDIF
29570
29580print=FALSE:SYS "Hourglass_Off"
29590ENDPROC
29600
29610DEF PROCscan
29620oldptr=prgptr:numflag=0
29630ptr=1:len=LEN line$:IF len=0 THEN GOTO 30040
29640REPEAT
29650temp$=""
29660WHILE MID$(line$,ptr,1)<"A" AND ptr<len
29670ptr+=1
29680ENDWHILE
29690vptr=ptr
29700WHILE MID$(line$,ptr,1)>"@" AND ptr<len
29710temp$=temp$+MID$(line$,ptr,1):ptr+=1
29720ENDWHILE
29730IF temp$<>"" THEN
29740PROClookup(temp$,token,info_ptr)
29750IF token=0 PROCerror(0,": "+MID$(line$,vptr,30)):prgptr=oldptr:GOTO 30020
29760IF token=def_token THEN PROCdodefn:GOTO30020
29770?prgptr=token:tokptr=prgptr:prgptr+=1
29780p_info=info%(info%(token-first_token+1,2),1):params=p_info AND %1111
29790ptr+=1
29800IF params <>0 THEN
29810FOR I%=1 TO params
29820 WHILE INSTR(", ",MID$(line$,ptr,1))<>0 AND ptr<len
29830  ptr+=1
29840 ENDWHILE
29850  IF token>=var_token AND I%=1 THEN PROCget_var(ptr,ptr,paramvalue,vptr)
29860  IF token>=var_token AND I%>1 THEN PROCget_num_or_var(ptr,ptr,paramvalue,varflag):IF varflag THEN ?tokptr=?tokptr+&10
29870  IF token<var_token THEN
29880  IF MID$(line$,ptr,1)=CHR$34 PROCdecode_string(line$,ptr,ptr,paramvalue,FNfntype(p_info)) ELSE PROCdecode_parameter(line$,ptr,ptr,paramvalue,vptr)
29890  ENDIF
29900  IF errflag THEN 30020
29910  IF paramvalue>info%(info_ptr,I%+2) PROCerror(2,STR$(info%(info_ptr,I%+2))+" ("+temp$+")"):GOTO30020
29920  IF info%(info_ptr,I%+2)<256 THEN bytes=1
29930  IF info%(info_ptr,I%+2)>255 AND info%(info_ptr,I%+2)<65536 THEN bytes=2
29940  IF info%(info_ptr,I%+2)>65535 THEN bytes=3
29950  FOR J%=0 TO bytes-1
29960    J%?prgptr=paramvalue DIV 256^J%
29970  NEXT J%
29980  prgptr+=bytes
29990NEXT I%
30000ENDIF
30010ENDIF
30020UNTIL ptr>=(len-1) OR token=0 OR errflag
30030IF token=0 OR errflag THEN PROCrestore_end:GOTO30050
30040?prgptr=13:prgptr+=1
30050ENDPROC
30060
30070DEF PROCrestore_end
30080prgptr=oldptr:?prgptr=0
30090ENDPROC
30100
30110DEF PROCerror(err_num,err$)
30120errflag=TRUE
30130null =FNerrorbox(error$(err_num)+" "+err$,err_num,1,-99)
30140ENDPROC
30150
30160DEF PROCfind_token(A$(),search$,RETURN token,RETURN mid)
30170LOCAL first,last,stop_search,found,len
30180len=LEN search$
30190first=1
30200last=DIM(A$(),1)
30210stop_search=FALSE:found=FALSE
30220REPEAT
30230PROCchop
30240UNTIL stop_search
30250IF found THEN token=info%(mid,0) ELSE token=0
30260ENDPROC
30270
30280DEF PROCchop
30290mid=(first+last) DIV 2
30300A$=A$(mid)
30310IF A$=search$ THEN stop_search=TRUE:found=TRUE:ENDPROC
30320IF A$>search$ THEN
30330last=mid-1
30340ELSE
30350first=mid+1
30360ENDIF
30370IF first>last THEN stop_search=TRUE
30380ENDPROC
30390
30400DEF PROClookup(search$,RETURN token,RETURN index)
30410LOCAL I%,found
30420token=0
30430IF search$="" THEN ENDPROC
30440PROCfind_token(keyword$(),search$,token,index)
30450ENDPROC
30460
30470I%=1
30480REPEAT
30490IF INSTR(LEFT$(keyword$(I%),LEN(search$)),search$)<>0 THEN token=info%(I%,0):found=TRUE:index=I%
30500I%+=1
30510UNTIL found OR I%=keywords+1
30520ENDPROC
30530
30540DEF PROCdecode_parameter(line$,place,RETURN place,RETURN value,vptr)
30550LOCAL temp1$
30560WHILE INSTR(" (,",MID$(line$,place,1))<>0 place+=1
30570ENDWHILE
30580WHILE INSTR("0123456789",MID$(line$,place,1))<>0 AND place<=LEN(line$) temp1$=temp1$+MID$(line$,place,1):place+=1
30590ENDWHILE
30600IF INSTR(") ,"+CHR$13,MID$(line$,place,1))=0 THEN
30610PROCerror(1,": "+MID$(line$,vptr,30)):errflag=TRUE
30620ELSE
30630value=VAL(temp1$)
30640ENDIF
30650ENDPROC
30660
30670DEF PROCdecode_string(line$,place,RETURN place,RETURN value,type)
30680LOCAL temp1$,dummy$,vptr
30690vptr=place-1
30700place+=1
30710temp1$=""
30720WHILE (INSTR(CHR$34,MID$(line$,place,1))=0 AND place<LENline$)
30730temp1$+=MID$(line$,place,1)
30740place+=1
30750ENDWHILE
30760IF INSTR(CHR$34,MID$(line$,place,1))<>0 THEN place+=1:REM added 31.5.89
30770IF temp1$="" THEN
30780value=0
30790ELSE
30800CASE type OF
30810WHEN 1
30820PROCgetobn(temp1$,value,dummy$):REM Find the noun number
30830IF value=0 THEN
30840temp1$=": "+temp1$
30850ERROR 1,"Badly formed/Non-existent noun: "+MID$(line$,vptr-LENtemp$,20)
30860ELSE
30870PROCwhich_obj(value,val$,refs):REM Find which object/s it references
30880IF refs=1 THEN value=VAL(val$) ELSE PROCerror(27,temp1$+error$(37))
30890ENDIF
30900WHEN 2:PROCgetvbn(temp1$,value,dummy$)
30910WHEN 3:PROCgetprn(temp1$,value,dummy$)
30920ENDCASE
30930ENDIF
30940ENDPROC
30950
30960DEF PROCget_var(place,RETURN place,RETURN value,vptr)
30970WHILE INSTR(" (,",MID$(line$,place,1))<>0 place+=1
30980ENDWHILE
30990chr$=MID$(line$,place,1)
31000IF chr$<"A" OR chr$>"|" THEN PROCerror(3,": "+MID$(line$,vptr,30)):ENDPROC
31010value=ASC chr$ - ASC"A"
31020place+=1:IF MID$(line$,place,1)<>"%" THEN PROCerror(3,": "+MID$(line$,vptr,30)) ELSE place+=1
31030ENDPROC
31040
31050DEF PROCget_num_or_var(place,RETURN place,RETURN value,RETURN flag)
31060WHILE INSTR(" (,",MID$(line$,place,1))<>0 place+=1
31070ENDWHILE
31080chr$=MID$(line$,place,1)
31090IF INSTR("0123456789",chr$) THEN flag=FALSE:PROCdecode_parameter(line$,place,place,value,vptr):ENDPROC
31100PROCget_var(place,place,value,vptr):flag=TRUE
31110ENDPROC
31120
31130DEF PROCrun
31140LOCAL ERROR
31150SYS "OS_Byte",229,0,0 TO ,oldstate%
31160err_col=11:PROCcol(130):PROCcol(7):SYS "Wimp_SetColour",128+2
31170ON ERROR LOCAL:PROCcol(err_col):IF ERR<>17 PRINT'"Interpreter reports a run-time error: "REPORT$:GOTO 31530 ELSE PRINT'REPORT$:GOTO 31530
31180REM PROCclose(texthandle):PROCclose(objhandle):PROCclose(roomhandle)
31190PROCupdate_data
31200IF NOT errflag THEN
31210!work%=rdata%
31220work%!4=verbs+3
31230work%!8=nouns+3
31240work%!12=program%+4
31250work%!16=text%+7
31260work%!20=dict%+3
31270work%!24=odata%
31280work%!28=adjects+3
31290work%!32=preps+3
31300work%!36=conjs+3
31310work%!40=specs+3
31320work%!44=noise+3
31330work%!48=pixs+3
31340REM  work%!52 is reserved
31350work%!56=initsave
31360work%!60=last_room
31370work%!64=last_object+1
31380VDU26,4,12
31390PROCcentre("PLEASE WAIT",0):OFF
31400IF datavalid THEN PROCcopy_from_editor ELSE PROCcopy_to_editor
31410!picbuf=pbsize
31420OSCLI("LOAD <Users$Resources>.Buttons "+STR$~(picbuf+4))
31430REM Read the scale factors and pixel translation table
31440SYS "Wimp_ReadPixTrans",&200,picbuf,picbuf+16,0,0,0,scale,pixtr
31450REM Now PutSpriteScaled
31460SYS "OS_SpriteOp",&234,picbuf,picbuf+16,0,0,8,scale,pixtr
31470VDU 28,0,textrows%-5,textcols%,0,24,0;148;scrw;scrh;
31480PROCcentre(STRING$(11," "),0):PRINT:ON
31490A%=verb_type:B%=nref:C%=aref:D%=ramsave
31500E%=pbytes:F%=work%:G%=picbuf:H%=pbsize
31510cliplen=0
31520CALL run
31530VDU 26:PROCcentre("PLEASE WAIT",26):OFF:PROCswap_data:datavalid=TRUE:PROCcentre(STRING$(11," "),26):PROCreturn(18,0):ON
31540PROCchangeicon(ALPSmain,swapicon,"swap",swapicon)
31550REM The copy/swap routines as used above ensure the data in the editor is
31560REM ALWAYS valid after running a game, even if it wasn't before running it
31570VDU 5
31580SYS ForceR,-1,0,0,scrw+1,scrh+1
31590ENDIF
31600RESTORE ERROR
31610SYS "OS_Byte",229,oldstate%,0
31620SYS "OS_Byte",124
31630ENDPROC
31640
31650DEF PROCcol(color)
31660SYS "Wimp_TextColour",color
31670ENDPROC
31680
31690DEF PROCfind_section(code%,value%,RETURN found)
31700REM Searches program for a match with code%,value%
31710REM eg DEFPROC(3) --> &86,&03
31720REM Sets `listptr` to the address of the `code%` byte, if found
31730ptr=listptr
31740LOCAL byte1,byte2
31750found=FALSE
31760E%=pbytes:F%=work%:CALL setup:G%=ptr
31770REPEAT
31780A%=code%:ptr=USR findcode
31790IF ?ptr=value% THEN found=TRUE ELSE G%=ptr+1
31800UNTIL found OR ptr=0
31810IF found THEN listptr=ptr-1 ELSE listptr=program%+4+FNprglen+1
31820ENDPROC
31830
31840DEF PROClist(prg_part%,val$)
31850LOCAL col%,row%
31860PROCfill(text_block%,text_blocksize%,dummy_spc)
31870text_rowlen%()=+0
31880SYS "Hourglass_On"
31890listptr=program%+4:line=1:last=65535:first=1
31900col%=1:row%=0
31910store=text_block%
31920existing_verb=FALSE
31930print=FALSE
31940errflag=FALSE
31950
31960CASE prg_part% OF
31970WHEN 1:found=TRUE:end1%=0:end2%=0:print=TRUE:REM Print whole program
31980WHEN 2:found=TRUE:end1%=stop_token:end2%=def_token
31990WHEN 3,4,5:end1%=end_token:end2%=0
32000ENDCASE
32010
32020CASE prg_part% OF
32030WHEN 3
32040PROCfind_section(proc_token,VAL val$,found)
32050token=proc_token
32060WHEN 4
32070existing_verb=TRUE
32080PROCgetvbn(val$,verb,dummy$)
32090PROCfind_section(def_token,verb,found)
32100token=def_token
32110WHEN 5
32120PROCfind_section(exit_token,VAL val$,found)
32130token=exit_token
32140ENDCASE
32150
32160IF NOT found THEN
32170  PROCerror(10,""+FNtoken_to_keyword(token)+"("+val$+")")
32180  listptr-=1:REM Point to end of program
32190  IF token=def_token THEN existing_verb=FALSE
32200ENDIF
32210
32220pstart=listptr:REM Start address of program section
32230byte1=?listptr:found_end=FALSE
32240WHILE byte1<>0 AND NOT found_end
32250eol%=FALSE
32260  WHILE byte1=13
32270    listptr+=1:PROCput(CHR$13):eol%=TRUE
32280    row%+=1
32290    byte1=?listptr
32300  ENDWHILE
32310  IF byte1=0 THEN PROCput(CHR$(0)):GOTO32700
32320  IF (byte1=end1% AND eol%) OR byte1=end2% THEN found_end=TRUE
32330  IF byte1>&BF THEN byte2=byte1-&10 ELSE byte2=byte1
32340  token=byte2:listptr+=1
32350  word$=FNtoken_to_keyword(token)
32360  PROCput(word$)
32370  IF byte2=def_token THEN PROCprtdef:listptr+=1:GOTO32700
32380  p_info=info%(info%(token-first_token+1,2),1):params=p_info AND %1111
32390  IF params=0 AND ?listptr<>13 PROCput(" ")
32400  IF params<>0 THEN
32410    PROCput("(")
32420    FOR I%=1 TO params
32430      maxvalue=info%(info%(token-first_token+1,2),I%+2)
32440      IF maxvalue<256 THEN bytes=1
32450      IF maxvalue>255 AND maxvalue<65536 THEN bytes=2
32460      IF maxvalue>65535 THEN bytes=3
32470      value=0
32480      FOR J%=0 TO bytes-1
32490        value=value+(J%?listptr)*256^J%
32500      NEXT J%
32510      doneit=FALSE
32520      IF I%=1 AND (listoption AND %10)<>0 AND FNfntype(p_info)=1 THEN
32530        PROCprntobj
32540      ELSE
32550        IF I%=1 AND (listoption AND %10)<>0 AND FNfntype(p_info)=2 THEN
32560          PROCprntvrb
32570        ENDIF
32580      ENDIF
32590      IF I%=1 AND (word$="PREP" OR word$="NOTPREP") AND (listoption AND %10)<>0 THEN PROCprintprep
32600      IF I%=2 AND (word$="PUTIN" OR word$="TAKEOUT") AND (listoption AND %10)<>0 THEN PROCprntobj
32610      IF NOT doneit THEN
32620        IF byte1<var_token OR (I%>1 AND byte1<&C0) PROCput(STR$(value)) ELSE PROCput(CHR$(value+ASC"A")+"%")
32630      ENDIF
32640      listptr+=bytes
32650      IF I%<>params THEN PROCput(",")
32660    NEXT I%
32670    PROCput(")")
32680    IF ?listptr<>13 PROCput(" ")
32690  ENDIF
32700    byte1=?listptr
32710ENDWHILE
32720IF found_end PROCput(CHR$13+CHR$0)
32730text_end%=store-1:text_ptr%=text_block%
32740IF text_end%<text_block% text_end%=text_block%
32750prgend=listptr:REM End address of program section
32760last_row%=FNfind_lastrow
32770
32780FOR R%=0 TO last_row%
32790text_rowlen%(R%)=LEN FNrow(R%)
32800NEXT
32810
32820SYS "Hourglass_Off"
32830ENDPROC
32840
32850DEF PROCput(text$)
32860LOCAL I%
32870IF NOT print THEN
32880IF text$<>"" THEN
32890$store=text$
32900store+=LEN text$
32910ENDIF
32920ELSE
32930*FX3,10
32940PRINTtext$;
32950*FX3,0
32960ENDIF
32970ENDPROC
32980
32990DEF PROClist_vocab(voc%)
33000SYS "Hourglass_On"
33010print=FALSE:store=text_block%
33020PROCfill(text_block%,text_blocksize%,dummy_spc)
33030col%=1:row%=0
33040
33050CASE voc% OF
33060WHEN 1: PROClistnouns
33070WHEN 2: PROClistverbs
33080WHEN 3: PROClistadjs
33090WHEN 4: PROClistpreps
33100WHEN 5: PROClistconjs
33110WHEN 6: PROClistspecs
33120WHEN 7: PROClistnoise
33130ENDCASE
33140
33150text_end%=store-1:text_ptr%=text_block%
33160IF text_end%<text_block% text_end%=text_block%
33170last_row%=FNfind_lastrow
33180FOR R%=0 TO last_row%
33190  text_rowlen%(R%)=LEN FNrow(R%)
33200NEXT
33210SYS "Hourglass_Off"
33220ENDPROC
33230
33240DEF PROClist_pix
33250LOCAL mptr
33260SYS "Hourglass_On"
33270print=FALSE:store=text_block%
33280PROCfill(text_block%,text_blocksize%,dummy_spc)
33290col%=1:row%=0
33300
33310IF pxn>1 THEN
33320mptr=pixs+3
33330FOR I%=1 TO pxn-1
33340  PROCput(STR$(I%)+"= ")
33350  PROCput($mptr)
33360  mptr+=LEN$mptr+1
33370  PROCput(",<"+pos$(?mptr)+">"+CHR$13)
33380  mptr+=5
33390NEXT
33400PROCput(CHR$0)
33410ENDIF
33420
33430text_end%=store-1:text_ptr%=text_block%
33440IF text_end%<text_block% text_end%=text_block%
33450last_row%=FNfind_lastrow
33460
33470FOR R%=0 TO last_row%
33480text_rowlen%(R%)=LEN FNrow(R%)
33490NEXT
33500
33510SYS "Hourglass_Off"
33520ENDPROC
33530
33540DEF FNtoken_to_keyword(token)
33550=keyword$(info%(token-first_token+1,2))
33560
33570DEF PROCnew
33580obn=1:vbn=1:adn=1:prn=1:cjn=1:spn=1:nsn=1:pxn=1
33590nxtobj=nouns:?nxtobj=obn:nxtobj?1=3:nxtobj?2=0:nxtobj+=3:?nxtobj=&FF
33600nxtvrb=verbs:?nxtvrb=vbn:nxtvrb?1=3:nxtvrb?2=0:nxtvrb+=3:?nxtvrb=&FF
33610nxtadj=adjects:?nxtadj=adn:nxtadj?1=3:nxtadj?2=0:nxtadj+=3:?nxtadj=&FF
33620nxtprp=preps:?nxtprp=prn:nxtprp?1=3:nxtprp?2=0:nxtprp+=3:?nxtprp=&FF
33630nxtcjn=conjs:?nxtcjn=cjn:nxtcjn?1=3:nxtcjn?2=0:nxtcjn+=3:?nxtcjn=&FF
33640nxtspn=specs:?nxtspn=spn:nxtspn?1=3:nxtspn?2=0:nxtspn+=3:?nxtspn=&FF
33650nxtnsn=noise:?nxtnsn=nsn:nxtnsn?1=3:nxtnsn?2=0:nxtnsn+=3:?nxtnsn=&FF
33660nxtpxn=pixs:?nxtpxn=pxn:nxtpxn?1=3:nxtpxn?2=0:nxtpxn+=3:?nxtpxn=&FF
33670!aref=4:aref?4=0:!nref=4:nref?4=0
33680prev_file$=""
33690ENDPROC
33700
33710DEF PROClvar
33720vars=work%+&88
33730FOR I%=1 TO 2*num_vars STEP 8
33740PRINTTAB(8)CHR$(I% DIV 2 +ASC"A");"% = ";vars?(I%-1)+vars?I%*256;
33750PRINTTAB(24)CHR$(I% DIV 2 +ASC"B");"% = ";vars?(I%+1)+vars?(I%+2)*256;
33760PRINTTAB(40)CHR$(I% DIV 2 +ASC"C");"% = ";vars?(I%+3)+vars?(I%+4)*256;
33770PRINTTAB(56)CHR$(I% DIV 2 +ASC"D");"% = ";vars?(I%+5)+vars?(I%+6)*256
33780NEXT
33790ENDPROC
33800
33810DEF PROClisto
33820LOCAL bitmask$,op$
33830CASE item1% OF
33840WHEN 0: bitmask$="%11111101":op$=" AND "
33850WHEN 1: bitmask$="%00000010":op$=" OR "
33860WHEN 2: bitmask$="%11111011":op$=" AND "
33870WHEN 3: bitmask$="%00000100":op$=" OR "
33880ENDCASE
33890listoption=EVAL(STR$listoption+op$+bitmask$)
33900ENDPROC
33910
33920DEF PROCstatus
33930PRINTTAB(1);"User code address = &";~usercode%;" (";usercode%;" decimal)"
33940PRINTTAB(1);"Program bytes: ";TAB(21);FNprglen;TAB(28);code_size%-FNprglen;" bytes free."
33950PRINTTAB(1)"Messages defined: "TAB(21);FNmaxmsg;TAB(28);(FNtext_end-text%);" characters used. ";maxtext%-(FNtext_end-text%);" characters free."
33960PRINTTAB(1)"Verbs defined: "TAB(21);vbn-1;TAB(28);verb_size-(nxtvrb-verbs);" characters free."
33970PRINTTAB(1)"Nouns defined: "TAB(21);obn-1;TAB(28);noun_size-(nxtobj-nouns);" characters free."
33980PRINTTAB(1)"Adjectives defined: "TAB(21);adn-1;TAB(28);adjc_size-(nxtadj-adjects);" characters free."
33990PRINTTAB(1)"Objects defined: "TAB(21);last_object;TAB(28);maxobs-last_object" object(s) remaining."
34000PRINTTAB(1)"Rooms defined: "TAB(21);last_room;TAB(28);maxrms-last_room" room(s) remaining."
34010PRINTTAB(1)"Screen mode: ";mode%;", File: "CHR$34+loaded$+CHR$34", Data: ";:PROCcol(11):IF data_saved PRINT"Saved" ELSE PRINT"NOT Saved"
34020ENDPROC
34030
34040
34050REM ------ Various Disk Operations ------
34060
34070DEF PROCcreate_dirs(app$,root$)
34080LOCAL t$,l$,r$,I%,rd$,out%
34090SYS "Hourglass_On"
34100IF RIGHT$(root$,1)<>"." THEN root$+="."
34110t$=root$:l$="":I%=0
34120 WHILE INSTR(t$,".")<>0
34130  r$=LEFT$(t$,INSTR(t$,".")-1)
34140  IF I%>0 l$=l$+"."+r$ ELSE l$=r$
34150  I%+=1
34160  OSCLI("CDIR "+l$)
34170  t$=MID$(t$,INSTR(t$,".")+1)
34180 ENDWHILE
34190  IF LEFT$(app$,1)<>"!" THEN app$="!"+app$
34200  app$=LEFT$(app$,10)
34210  ra$=root$+app$:REM path to users 'Alps' file
34220  OSCLI("CDIR "+ra$)
34230  OSCLI("CDIR "+ra$+".ALPS")
34240  OSCLI("CDIR "+ra$+".PICTURES")
34250  OSCLI("CDIR "+ra$+".Resources")
34260  rd$=ra$+".Resources.":REM Resources dir path
34270  OSCLI "SAVE "+rd$+"pbytes "+STR$~pbytes+"+"+STR$~pbyte_size
34280  OSCLI("SAVE "+rd$+"ASIobjcode "+STR$~asicode%+"+"+STR$~codesize)
34290  OSCLI "SAVE "+rd$+"buttons "+STR$~picbuf+"+"+STR$~butlen
34300  OSCLI "SETTYPE "+rd$+"buttons Sprite"
34310  OSCLI "SETTYPE "+rd$+"pbytes Data"
34320  OSCLI "SETTYPE "+rd$+"ASIobjcode Absolute"
34330  OSCLI "SAVE "+ra$+".!RunImage "+STR$~(picbuf+butlen)+"+"+STR$~ldlen
34340  OSCLI "SETTYPE "+ra$+".!RunImage BASIC"
34350  SYS "OS_SpriteOp",256+26,sprld,"!alpsgames",app$:REM Rename Sprite
34360  SYS "OS_SpriteOp",256+12,sprld,ra$+".!Sprites":REM Save it
34370  out%=OPENOUT(ra$+".!Run")
34380  out2%=OPENOUT(ra$+".!Boot")
34390  BPUT#out%,"| !Run file for ALPS games"
34400  BPUT#out2%,"| !Boot file for ALPS games"
34410  BPUT#out%,"|"
34420  BPUT#out%,"SET Alps$NoMouseInput 0"
34430  BPUT#out%,"|"
34440  BPUT#out%,"SET Alps$ShowAddress 0"
34450  BPUT#out%,"|"
34460  BPUT#out2%,"|"
34470  BPUT#out%,"IconSprites <Obey$Dir>.!Sprites"
34480  BPUT#out2%,"IconSprites <Obey$Dir>.!Sprites"
34490  BPUT#out%,"SET AlpsGame$Dir <Obey$Dir>"
34500  BPUT#out%,"SET AlpsGame$Resources <AlpsGame$Dir>.Resources."
34510  BPUT#out%,"SET AlpsGame$Data <AlpsGame$Dir>.Alps"
34520  BPUT#out%,"SET Alps$Pictures <AlpsGame$Dir>.Pictures."
34530  BPUT#out2%,"SET AlpsGame$Dir <Obey$Dir>"
34540  BPUT#out2%,"SET AlpsGame$Resources <AlpsGame$Dir>.Resources."
34550  BPUT#out2%,"SET AlpsGame$Data <AlpsGame$Dir>.Alps"
34560  BPUT#out2%,"SET Alps$Pictures <AlpsGame$Dir>.Pictures."
34570  BPUT#out%,"Run <AlpsGame$Dir>.!RunImage"
34580  CLOSE#out%:CLOSE#out2%
34590  OSCLI "*SETTYPE "+ra$+".!Run Obey"
34600  OSCLI "*SETTYPE "+ra$+".!Boot Obey"
34610SYS "Hourglass_Off"
34620ENDPROC
34630
34640DEF PROCload_bits(app$)
34650REM Loads 'buttons' sprite and 'Loader' program into picture buffer
34660REM They will then be saved to the user's data disk by PROCcreate_dirs
34670IF LEFT$(app$,1)<>"!" THEN app$="!"+app$
34680bit$="<Alps$Resources>.buttons"
34690SYS "OS_File",5,bit$ TO ftype,,,,butlen
34700OSCLI "LOAD "+bit$+" "+STR$~picbuf
34710SYS "OS_File",5,"<Alps$Resources>.!Runimage" TO ftype,,,,ldlen
34720OSCLI "LOAD <Alps$Resources>.!Runimage "+STR$~(picbuf+butlen)
34730SYS "OS_File",5,"<Alps$Resources>.!Sprites" TO ftype,,,,sprlen
34740DIM sprld sprlen+4:!sprld=sprlen+4
34750sprld!4=0:sprld!8=16:sprld!12=16
34760SYS "OS_SpriteOp",266,sprld,"<Alps$Resources>.!Sprites"
34770cliplen=0
34780ENDPROC
34790
34800DEF PROCconvert(import$)
34810LOCAL in%,I%,V%,ptr,T%
34820SYS "Hourglass_On"
34830!program%=0
34840program%!4=0
34850PROCfill(nref+4,nref_size-4,0)
34860in%=OPENIN import$
34870
34880FOR I%=0 TO &57F
34890 V%=BGET#in%
34900 verbs?I%=V%
34910NEXT I%
34920vbn=?verbs
34930nxtvrb=verbs+(verbs?1+256*(verbs?2))
34940
34950FOR I%=0 TO &57F
34960 V%=BGET#in%
34970 nouns?I%=V%
34980NEXT I%
34990obn=?nouns
35000nxtobj=nouns+(nouns?1+256*(nouns?2))
35010
35020V%=BGET#in%
35030V%=BGET#in%
35040ptr=program%+4
35050
35060REPEAT
35070 T%=BGET#in%
35080 ?ptr=T%:ptr+=1
35090 IF T%>=&C0 THEN T%-=&10
35100 IF T%>=&70 THEN
35110 pb=oldpars?(T%-&70)
35120 IF pb>0 THEN
35130  FOR I%=1 TO pb
35140   V%=BGET#in%
35150   ?ptr=V%:ptr+=1
35160   CASE T% OF
35170    WHEN &A4,&A1,&92,&90,&96,&97,&A6,&9A,&AA,&87,&88,&7B
35180     IF I%=1 THEN ?ptr=0:ptr+=1
35190    WHEN &7A,&A5,&B2,&B3,&B4,&B5,&B6,&B7,&B8
35200     IF I%=2 THEN ?ptr=0:ptr+=1
35210   ENDCASE
35220  NEXT I%
35230 ENDIF
35240ENDIF
35250UNTIL EOF#in%
35260CLOSE#in%
35270PROCincprglen(ptr-5-program%)
35280SYS "Hourglass_Off"
35290ENDPROC
35300
35310DEF PROCimport_text(import$)
35320IF import$="" THEN
35330PROCerror(16,"")
35340ELSE
35350OSCLI "LOAD "+import$+" "+STR$~(text%+2)
35360mptr=1
35370?text%=text%?2:text%?1=text%?3
35380text%!2=(text%?4+256*text%?5)+2
35390text%!6=text%?6
35400ENDIF
35410ENDPROC
35420
35430DEF PROCimport_obj(import$)
35440LOCAL in%,O%,M%,J%,flags,state,room,mlo,mhi
35450M%=odata%
35460in%=OPENIN(import$)
35470IF in%=0 PROCerror(10,""):ENDPROC
35480O%=BGET#in%
35490PTR#in%=0
35500FOR I%=0 TO O%
35510flags=BGET#in%:state=BGET#in%:room=BGET#in%
35520mlo=BGET#in%:mhi=BGET#in%
35530M%?0=flags:M%?1=state
35540M%?2=room:M%?3=0
35550M%?4=mlo:M%?5=mhi
35560FOR J%=6 TO o_len-1
35570M%?J%=0
35580NEXT J%
35590M%+=o_len
35600NEXT I%
35610last_object=O%
35620CLOSE#in%
35630ENDPROC
35640
35650DEF PROCimport_rooms(import$)
35660LOCAL in%,R%,M%,J%
35670M%=rdata%
35680in%=OPENIN(import$)
35690IF in%=0 PROCerror(10,""):ENDPROC
35700R%=BGET#in%
35710PTR#in%=0
35720FOR I%=0 TO R%
35730FOR J%=0 TO 3
35740M%?J%=BGET#in%
35750NEXT J%
35760M%?4=0:M%?5=0
35770FOR J%=6 TO 13 STEP2
35780M%?J%=BGET#in%:M%?(J%+1)=0
35790NEXT J%
35800FOR J%=14 TO 37
35810M%?J%=0
35820NEXT J%
35830M%?22=BGET#in%
35840M%?24=BGET#in%
35850FOR J%=38 TO 73
35860IF (J%<42 OR J%=46 OR J%=47) THEN M%?J%=BGET#in% ELSE M%?J%=0
35870NEXT J%
35880M%+=r_len
35890NEXT I%
35900last_room=R%
35910ENDPROC
35920
35930DEF PROCupdate_data
35940   PROCremove_markers
35950   CASE text_owner$ OF
35960     WHEN "texted" : PROCstore_msg
35970     WHEN "program" : IF NOT text_ok THEN PROCstore_prog
35980     WHEN "vocab" : IF NOT text_ok THEN PROCstore_vocab
35990     WHEN "pix" : PROCstore_pix
36000   ENDCASE
36010 i%=THEkeyicon:IF icon%(i%)<>-1 PROCstore_obj(optr)
36020 i%=THEdooricon:IF icon%(i%)<>-1 PROCstore_room(rptr)
36030 ENDPROC
36040
36050DEF PROCsave_all(f$)
36060REM f$=full path name
36070IF INSTR(f$,".")=0 THEN ERROR 1,"To save, drag the file icon to a directory viewer in which there is an ALPS directory.":ENDPROC
36080SYS "Hourglass_On"
36090
36100REM Changes to prevent 'Input focus' bug - 12.04.90
36110REM PROCclose(texthandle):PROCclose(objhandle):PROCclose(roomhandle)
36120PROCupdate_data
36130REM ------------------------
36140IF NOT errflag THEN
36150p$=f$:f$=FNleafname(p$)
36160p$=LEFT$(p$,LEN(p$)-LEN(f$))
36170d$=p$+"Alps."
36180OSCLI("SET Alps$Data "+d$)
36190PROCsave_objs("<Alps$Data>Objects")
36200PROCsave_rooms("<Alps$Data>Rooms")
36210PROCsave_flags("<Alps$Data>Flags")
36220PROCsave_pix("<Alps$Data>Pictures")
36230PROCsave_vocab(f$)
36240PROCsave_program("<Alps$Data>Program")
36250PROCsave_text("<Alps$Data>Text")
36260PROCsave_dict("<Alps$Data>Dict")
36270PROCsave_pal("<Alps$Data>!Palette")
36280PROCsave_chars("<Alps$Data>charset")
36290OSCLI("CREATE "+p$+f$+" 100")
36300OSCLI("SETTYPE "+p$+f$+" "+type$)
36310OSCLI("CREATE <Alps$Data>GameData 100")
36320out%=OPENUP("<Alps$Data>GameData")
36330BPUT#out%,mode%
36340CLOSE#out%
36350data_saved=TRUE:loaded$=f$:$filename%=f$
36360ENDIF
36370SYS CreateM,,-1:REM Close the 'Save as' menu/dbox
36380SYS "Hourglass_Off"
36390ENDPROC
36400
36410DEF PROCsave_vocab(fi$)
36420IF fi$="" THEN
36430PROCerror(16,"")
36440ELSE
36450PROCsave_nouns("<Alps$Data>Nouns")
36460PROCsave_verbs("<Alps$Data>Verbs")
36470PROCsave_adjects("<Alps$Data>Adjectives")
36480PROCsave_preps("<Alps$Data>Prepos")
36490PROCsave_conj("<Alps$Data>Conjunc")
36500PROCsave_spec("<Alps$Data>Specials")
36510PROCsave_noise("<Alps$Data>Noise")
36520PROCsave_nrefs("<Alps$Data>Nref")
36530PROCsave_arefs("<Alps$Data>Aref")
36540PROCsave_vtypes("<Alps$Data>VerbType")
36550ENDIF
36560ENDPROC
36570
36580DEF PROCsave_nouns(fi$)
36590IF fi$="" THEN
36600PROCerror(16,"")
36610ELSE
36620OSCLI "SAVE "+fi$+" "+STR$~nouns+" "+STR$~(nxtobj+1)
36630OSCLI "SETTYPE "+fi$+" Data"
36640ENDIF
36650ENDPROC
36660
36670DEF PROCsave_verbs(fi$)
36680IF fi$="" THEN
36690PROCerror(16,"")
36700ELSE
36710OSCLI "SAVE "+fi$+" "+STR$~verbs+" "+STR$~(nxtvrb+1)
36720OSCLI "SETTYPE "+fi$+" Data"
36730ENDIF
36740ENDPROC
36750
36760DEF PROCsave_adjects(fi$)
36770IF fi$="" THEN
36780PROCerror(16,"")
36790ELSE
36800OSCLI "SAVE "+fi$+" "+STR$~adjects+" "+STR$~(nxtadj+1)
36810OSCLI "SETTYPE "+fi$+" Data"
36820ENDIF
36830ENDPROC
36840
36850DEF PROCsave_preps(fi$)
36860IF fi$="" THEN
36870PROCerror(16,"")
36880ELSE
36890OSCLI "SAVE "+fi$+" "+STR$~preps+" "+STR$~(nxtprp+1)
36900OSCLI "SETTYPE "+fi$+" Data"
36910ENDIF
36920ENDPROC
36930
36940DEF PROCsave_conj(fi$)
36950IF fi$="" THEN
36960PROCerror(16,"")
36970ELSE
36980OSCLI "SAVE "+fi$+" "+STR$~conjs+" "+STR$~(nxtcjn+1)
36990OSCLI "SETTYPE "+fi$+" Data"
37000ENDIF
37010ENDPROC
37020
37030DEF PROCsave_spec(fi$)
37040IF fi$="" THEN
37050PROCerror(16,"")
37060ELSE
37070OSCLI "SAVE "+fi$+" "+STR$~specs+" "+STR$~(nxtspn+1)
37080OSCLI "SETTYPE "+fi$+" Data"
37090ENDIF
37100ENDPROC
37110
37120DEF PROCsave_noise(fi$)
37130IF fi$="" THEN
37140PROCerror(16,"")
37150ELSE
37160OSCLI "SAVE "+fi$+" "+STR$~noise+" "+STR$~(nxtnsn+1)
37170OSCLI "SETTYPE "+fi$+" Data"
37180ENDIF
37190ENDPROC
37200
37210DEF PROCsave_vtypes(fi$)
37220IF fi$="" THEN
37230PROCerror(16,"")
37240ELSE
37250OSCLI "SAVE "+fi$+" "+STR$~verb_type+"+"+STR$~(2*(maxvbn+1))
37260OSCLI "SETTYPE "+fi$+" Data"
37270ENDIF
37280ENDPROC
37290
37300DEF PROCsave_arefs(fi$)
37310IF fi$="" THEN
37320PROCerror(16,"")
37330ELSE
37340OSCLI "SAVE "+fi$+" "+STR$~aref+"+"+STR$~(!aref+1)
37350OSCLI "SETTYPE "+fi$+" Data"
37360ENDIF
37370ENDPROC
37380
37390DEF PROCsave_nrefs(fi$)
37400IF fi$="" THEN
37410PROCerror(16,"")
37420ELSE
37430OSCLI "SAVE "+fi$+" "+STR$~nref+"+"+STR$~(!nref+1)
37440OSCLI "SETTYPE "+fi$+" Data"
37450ENDIF
37460ENDPROC
37470
37480DEF PROCsave_objs(fi$)
37490IF fi$="" THEN
37500PROCerror(16,"")
37510ELSE
37520IF NOT datavalid PROCswap_data:datavalid=TRUE
37530odata%?14=optr:odata%?15=last_object
37540OSCLI "SAVE "+fi$+" "+STR$~odata%+"+"+STR$~(o_len*(last_object+1))
37550OSCLI "SETTYPE "+fi$+" Data"
37560ENDIF
37570ENDPROC
37580
37590DEF PROCsave_rooms(fi$)
37600IF fi$="" THEN
37610PROCerror(16,"")
37620ELSE
37630IF NOT datavalid PROCswap_data:datavalid=TRUE
37640!rdata%=rptr+(last_room<<16)
37650OSCLI "SAVE "+fi$+" "+STR$~rdata%+"+"+STR$~(r_len*(last_room+1))
37660OSCLI "SETTYPE "+fi$+" Data"
37670ENDIF
37680ENDPROC
37690
37700DEF PROCsave_flags(fi$)
37710IF fi$="" THEN
37720PROCerror(16,"")
37730ELSE
37740chn%=OPENOUT fi$
37750FOR f%=0 TO 7
37760flag$=$(o_flags%+f%*maxd%)
37770PRINT#chn%,flag$
37780NEXT
37790FOR f%=0 TO 7
37800flag$=$(r_flags%+f%*maxd%)
37810PRINT#chn%,flag$
37820NEXT
37830CLOSE#chn%
37840ENDIF
37850ENDPROC
37860
37870DEF PROCsave_pix(fi$)
37880IF fi$="" THEN
37890PROCerror(16,"")
37900ELSE
37910OSCLI "SAVE "+fi$+" "+STR$~pixs+" "+STR$~(nxtpxn+1)
37920OSCLI "SETTYPE "+fi$+" Data"
37930ENDIF
37940ENDPROC
37950
37960DEF PROCsave_program(fi$)
37970IF fi$="" THEN
37980PROCerror(16,"")
37990ELSE
38000OSCLI "SAVE "+fi$+" "+STR$~program%+"+"+STR$~(FNprglen+4+1)
38010OSCLI "SETTYPE "+fi$+" Data"
38020ENDIF
38030ENDPROC
38040
38050DEF PROCsave_text(fi$)
38060IF fi$="" THEN
38070PROCerror(16,"")
38080ELSE
38090OSCLI "SAVE "+fi$+" "+STR$~text%+" "+STR$~FNtext_end
38100OSCLI "SETTYPE "+fi$+" Data"
38110ENDIF
38120ENDPROC
38130
38140DEF PROCsave_dict(fi$)
38150IF fi$="" THEN
38160PROCerror(16,"")
38170ELSE
38180OSCLI "SAVE "+fi$+" "+STR$~dict%+" "+STR$~(dict%+?dict%+256*dict%?1)
38190OSCLI "SETTYPE "+fi$+" Data"
38200ENDIF
38210ENDPROC
38220
38230DEF PROCload_all(f$)
38240REM f$ is the full pathname
38250SYS "Hourglass_On"
38260PROCclose(texthandle):PROCclose(objhandle):PROCclose(roomhandle)
38270p$=f$:f$=FNleafname(p$)
38280p$=LEFT$(p$,LEN(p$)-LEN(f$))
38290d$=p$+"Alps."
38300r$=p$+"Resources"
38310OSCLI("SET Users$Resources "+r$)
38320OSCLI("SET Alps$Pictures "+p$+"Pictures.")
38330OSCLI("SET Alps$Data "+d$)
38340PROCload_objs("<Alps$Data>Objects")
38350PROCload_rooms("<Alps$Data>Rooms")
38360PROCload_flags("<Alps$Data>Flags")
38370PROCload_pix("<Alps$Data>Pictures")
38380PROCload_vocab(f$)
38390PROCload_program("<Alps$Data>Program")
38400PROCload_text("<Alps$Data>Text")
38410PROCload_dict("<Alps$Data>Dict")
38420OSCLI("PRINT <Alps$Data>charset")
38430data_saved=TRUE:loaded$=f$:$filename%=f$
38440SYS "Hourglass_Off"
38450ENDPROC
38460
38470DEF PROCload_vocab(f$)
38480IF f$="" THEN
38490PROCerror(16,"")
38500ELSE
38510PROCload_nouns("<Alps$Data>Nouns")
38520PROCload_verbs("<Alps$Data>Verbs")
38530PROCload_adjects("<Alps$Data>Adjectives")
38540PROCload_preps("<Alps$Data>Prepos")
38550PROCload_conj("<Alps$Data>Conjunc")
38560PROCload_spec("<Alps$Data>Specials")
38570PROCload_noise("<Alps$Data>Noise")
38580PROCload_vtypes("<Alps$Data>VerbType")
38590PROCload_nrefs("<Alps$Data>Nref")
38600PROCload_arefs("<Alps$Data>Aref")
38610ENDIF
38620ENDPROC
38630
38640DEF PROCload_nouns(fi$)
38650IF fi$="" THEN
38660PROCerror(16,"")
38670ELSE
38680OSCLI "LOAD "+fi$+" "+STR$~nouns
38690obn=?nouns
38700nxtobj=nouns+(nouns?1+256*(nouns?2))
38710ENDIF
38720ENDPROC
38730
38740DEF PROCload_verbs(fi$)
38750IF fi$="" THEN
38760PROCerror(16,"")
38770ELSE
38780OSCLI "LOAD "+fi$+" "+STR$~verbs
38790vbn=?verbs
38800nxtvrb=verbs+(verbs?1+256*(verbs?2))
38810ENDIF
38820ENDPROC
38830
38840DEF PROCload_adjects(fi$)
38850IF fi$="" THEN
38860PROCerror(16,"")
38870ELSE
38880OSCLI "LOAD "+fi$+" "+STR$~adjects
38890adn=?adjects
38900nxtadj=adjects+(adjects?1+256*(adjects?2))
38910ENDIF
38920ENDPROC
38930
38940DEF PROCload_preps(fi$)
38950IF fi$="" THEN
38960PROCerror(16,"")
38970ELSE
38980OSCLI "LOAD "+fi$+" "+STR$~preps
38990prn=?preps
39000nxtprp=preps+(preps?1+256*(preps?2))
39010ENDIF
39020ENDPROC
39030
39040DEF PROCload_conj(fi$)
39050IF fi$="" THEN
39060PROCerror(16,"")
39070ELSE
39080OSCLI "LOAD "+fi$+" "+STR$~conjs
39090cjn=?conjs
39100nxtcjn=conjs+(conjs?1+256*(conjs?2))
39110ENDIF
39120ENDPROC
39130
39140DEF PROCload_spec(fi$)
39150IF fi$="" THEN
39160PROCerror(16,"")
39170ELSE
39180OSCLI "LOAD "+fi$+" "+STR$~specs
39190spn=?specs
39200nxtspn=specs+(specs?1+256*(specs?2))
39210ENDIF
39220ENDPROC
39230
39240DEF PROCload_noise(fi$)
39250IF fi$="" THEN
39260PROCerror(16,"")
39270ELSE
39280OSCLI "LOAD "+fi$+" "+STR$~noise
39290nsn=?noise
39300nxtnsn=noise+(noise?1+256*(noise?2))
39310ENDIF
39320ENDPROC
39330
39340DEF PROCload_vtypes(fi$)
39350IF fi$="" THEN
39360PROCerror(16,"")
39370ELSE
39380OSCLI "LOAD "+fi$+" "+STR$~verb_type
39390ENDIF
39400ENDPROC
39410
39420DEF PROCload_arefs(fi$)
39430IF fi$="" THEN
39440PROCerror(16,"")
39450ELSE
39460OSCLI "LOAD "+fi$+" "+STR$~aref
39470ENDIF
39480ENDPROC
39490
39500DEF PROCload_nrefs(fi$)
39510IF fi$="" THEN
39520PROCerror(16,"")
39530ELSE
39540OSCLI "LOAD "+fi$+" "+STR$~nref
39550ENDIF
39560ENDPROC
39570
39580DEF PROCload_objs(fi$)
39590IF fi$="" THEN
39600PROCerror(16,"")
39610ELSE
39620OSCLI "LOAD "+fi$+" "+STR$~odata%
39630optr=odata%?14
39640last_object=odata%?15
39650ENDIF
39660ENDPROC
39670
39680DEF PROCload_rooms(fi$)
39690IF fi$="" THEN
39700PROCerror(16,"")
39710ELSE
39720OSCLI "LOAD "+fi$+" "+STR$~rdata%
39730rptr=!rdata% AND &FFFF
39740last_room=(!rdata% AND &FFFF0000)>>16
39750ENDIF
39760ENDPROC
39770
39780DEF PROCload_flags(fi$)
39790IF fi$="" THEN
39800PROCerror(16,"")
39810ELSE
39820chn%=OPENIN fi$
39830FOR f%=0 TO 7
39840INPUT#chn%,flag$
39850$(o_flags%+f%*maxd%)=flag$
39860NEXT
39870
39880FOR f%=0 TO 7
39890INPUT#chn%,flag$
39900$(r_flags%+f%*maxd%)=flag$
39910NEXT
39920CLOSE#chn%
39930ENDIF
39940ENDPROC
39950
39960DEF PROCload_pix(fi$)
39970IF fi$="" THEN
39980PROCerror(16,"")
39990ELSE
40000OSCLI "LOAD "+fi$+" "+STR$~pixs
40010pxn=?pixs
40020nxtpxn=pixs+(pixs?1+256*(pixs?2))
40030ENDIF
40040ENDPROC
40050
40060DEF PROCload_program(fi$)
40070IF fi$="" THEN
40080PROCerror(16,"")
40090ELSE
40100OSCLI "LOAD "+fi$+" "+STR$~program%
40110ENDIF
40120ENDPROC
40130
40140DEF PROCload_text(fi$)
40150IF fi$="" THEN
40160PROCerror(16,"")
40170ELSE
40180OSCLI "LOAD "+fi$+" "+STR$~text%
40190mptr=1
40200ENDIF
40210ENDPROC
40220
40230DEF PROCload_dict(fi$)
40240LOCAL I%,L%
40250IF fi$="" THEN
40260PROCerror(16,"")
40270ELSE
40280OSCLI "LOAD "+fi$+" "+STR$~dict%
40290tok%=dict%?2:L%=0
40300IF tok%=0 tok%=128 ELSE tok%-=128
40310FOR I%=1 TO tok%
40320tok$(I%)=$(dict%+3+L%)
40330L%+=LENtok$(I%)+1
40340NEXT
40350ENDIF
40360ENDPROC
40370
40380DEF PROCsetup_disk(S%)
40390PROCgetw(setuph):PROCgetpointer
40400PROCopen(setuph,mousex%-64,mousey%,x1%-x0%,y1%-y0%)
40410PROCsys_claiminputfocus(setuph,2,0,0,-1,LEN(FNgeticondata(setuph,2)))
40420PROCgetw(setuph)
40430MOUSE RECTANGLE x0%,y0%,x1%-x0%,y1%-y0%
40440dialogue%=S%
40450ENDPROC
40460
40470DEF PROCquit(S%)
40480IF NOT data_saved THEN
40490ans = FNerrorbox("There is unsaved data in the memory. Do you really want to quit?",0,3,S%)
40500ELSE
40510quit%=TRUE
40520ENDIF
40530ENDPROC
40540
40550DEF PROCensure(S%,T$)
40560dialogue%=FNerrorbox(T$,0,3,S%)
40570ENDPROC
40580
40590
40600REM ------ Vocabulary routines ------
40610
40620DEF PROCgetobn(text$,RETURN num,RETURN found$)
40630sptr=nouns+3:PROCsearch(sptr,text$,num,found$)
40640ENDPROC
40650
40660DEF PROCgetvbn(text$,RETURN num,RETURN found$)
40670sptr=verbs+3:PROCsearch(sptr,text$,num,found$)
40680ENDPROC
40690
40700DEF PROCgetadn(text$,RETURN num,RETURN found$)
40710sptr=adjects+3:PROCsearch(sptr,text$,num,found$)
40720ENDPROC
40730
40740DEF PROCgetprn(text$,RETURN num,RETURN found$)
40750sptr=preps+3:PROCsearch(sptr,text$,num,found$)
40760ENDPROC
40770
40780DEF PROCgetcjn(text$,RETURN num,RETURN found$)
40790sptr=conjs+3:PROCsearch(sptr,text$,num,found$)
40800ENDPROC
40810
40820DEF PROCgetspn(text$,RETURN num,RETURN found$)
40830sptr=specs+3:PROCsearch(sptr,text$,num,found$)
40840ENDPROC
40850
40860DEF PROCgetnsn(text$,RETURN num,RETURN found$)
40870sptr=noise+3:PROCsearch(sptr,text$,num,found$)
40880ENDPROC
40890
40900DEF PROCsearch(sptr,search$,RETURN number,RETURN temp$)
40910LOCAL temp$,found
40920number=0
40930F%=work%:B%=sptr:$(work%+&128)=search$:REM put search string in 'text'
40940CALL search
40950number=!(work%+&148)
40960ENDPROC
40970
40980DEF PROCword(type,line$)
40990REM Add words to the vocabulary or picture list
41000REM word types are - nouns = 1, verbs = 2, adjectives = 3
41010REM                  prepositions = 4, conjunctions = 5, specials = 6
41020REM                  picture names = 10
41030LOCAL index,ptr,I%,len,len2,temp$
41040
41050IF line$="" THEN ENDPROC
41060
41070WHILE INSTR("0123456789=",LEFT$(line$,1))<>0
41080line$=MID$(line$,2)
41090ENDWHILE
41100
41110WHILE LEFT$(line$,1)=" "
41120line$=MID$(line$,2)
41130ENDWHILE
41140
41150IF type<4 OR type=10 THEN
41160end=INSTR(line$,"<"):IF end=0 THEN PROCerror(22,""):errflag=TRUE:ENDPROC
41170number$=MID$(line$,end+1):line$=LEFT$(line$,end-1)
41180IF RIGHT$(number$,1)=">" THEN number$=LEFT$(number$,LENnumber$-1)
41190ELSE
41200number$=""
41210ENDIF
41220
41230IF number$="" THEN
41240CASE type OF
41250WHEN 1,3
41260number$=STR$(obn)
41270WHEN 2
41280number$="0":REM Default verb type is zero
41290OTHERWISE
41300number$=""
41310ENDCASE
41320ENDIF
41330
41340index=0
41350ptr=INSTR(line$,",")
41360IF ptr=0 THEN
41370a_list$(index)=LEFT$(line$,maxlen)
41380ELSE
41390WHILE ptr<>0 AND index<11
41400temp$=LEFT$(line$,ptr-1)
41410len=LEN(line$)
41420line$=RIGHT$(line$,len-ptr)
41430a_list$(index)=LEFT$(temp$,maxlen)
41440index+=1
41450ptr=INSTR(line$,",")
41460ENDWHILE
41470a_list$(index)=LEFT$(line$,maxlen)
41480ENDIF
41490
41500CASE type OF
41510
41520WHEN 1
41530IF obn=maxobn THEN
41540PROCerror(17,"at "+a_list$(0)):errflag=TRUE
41550ELSE
41560FOR I%=0 TO index
41570  len2=LEN a_list$(I%)
41580  IF len2>0 THEN
41590  PROCgetobn(a_list$(I%),num,fnd$)
41600  IF num<>0 PROCerror(5,a_list$(I%)):errflag=TRUE
41610  IF nxtobj+len2>noun_end-2 PROCerror(13,error$(38)):errflag=TRUE
41620  IF NOT errflag THEN
41630    $nxtobj=a_list$(I%):?(nxtobj+len2-1)=?(nxtobj+len2-1) OR 128
41640    nxtobj+=len2:?nxtobj=obn:nxtobj+=1:?nxtobj=&FF
41650  ENDIF
41660  ENDIF
41670NEXT I%
41680  IF NOT errflag THEN
41690    obn+=1
41700    ?nouns=obn:nouns?1=(nxtobj-nouns) MOD 256:nouns?2=(nxtobj-nouns) DIV 256
41710    ptr=1:memptr=nref+!nref:svmptr=memptr:refs=0:memptr+=1
41720    REPEAT
41730    PROCdecode_parameter(number$,ptr,ptr,val,0)
41740    IF NOT errflag THEN ?memptr=val:memptr+=1:refs+=1
41750    UNTIL ptr>LENnumber$ OR errflag
41760    ?memptr=0:!nref=!nref+refs+1
41770    ?svmptr=refs
41780  ENDIF
41790ENDIF
41800WHEN 2
41810IF vbn=maxvbn THEN
41820PROCerror(18,"at "+a_list$(0)):errflag=TRUE
41830ELSE
41840FOR I%=0 TO index
41850  len2=LEN a_list$(I%)
41860  IF len2>0 THEN
41870  PROCgetvbn(a_list$(I%),num,fnd$)
41880  IF num<>0 PROCerror(8,a_list$(I%)):errflag=TRUE
41890  IF nxtvrb+len2>verb_end-2 PROCerror(13,error$(39)):errflag=TRUE
41900  IF NOT errflag THEN
41910    $nxtvrb=a_list$(I%):?(nxtvrb+len2-1)=?(nxtvrb+len2-1) OR 128
41920    nxtvrb+=len2:?nxtvrb=vbn:nxtvrb+=1:?nxtvrb=&FF
41930  ENDIF
41940  ENDIF
41950NEXT I%
41960IF NOT errflag THEN
41970ptr=1
41980PROCdecode_parameter(number$,ptr,ptr,val,0)
41990IF NOT errflag THEN
42000verb_type?(2*vbn)=val
42010oloc$=MID$(number$,ptr+1):olocflg=0
42020IF INSTR(oloc$,"C")<>0 THEN olocflg=1
42030IF INSTR(oloc$,"P")<>0 THEN olocflg=olocflg OR 2
42040verb_type?(2*vbn+1)=olocflg
42050vbn+=1
42060?verbs=vbn:verbs?1=(nxtvrb-verbs) MOD 256:verbs?2=(nxtvrb-verbs) DIV 256
42070ENDIF
42080ENDIF
42090ENDIF
42100WHEN 3
42110IF adn=maxadj THEN
42120PROCerror(19,"at "+a_list$(0)):errflag=TRUE
42130ELSE
42140FOR I%=0 TO index
42150  len2=LEN a_list$(I%)
42160  IF len2>0 THEN
42170  PROCgetadn(a_list$(I%),num,fnd$)
42180  IF num<>0 PROCerror(8,a_list$(I%)):errflag=TRUE
42190  IF nxtadj+len2>adjc_end-2 PROCerror(13,error$(40)):errflag=TRUE
42200  IF NOT errflag THEN
42210    $nxtadj=a_list$(I%):?(nxtadj+len2-1)=?(nxtadj+len2-1) OR 128
42220    nxtadj+=len2:?nxtadj=adn:nxtadj+=1:?nxtadj=&FF
42230  ENDIF
42240  ENDIF
42250NEXT I%
42260  IF NOT errflag THEN
42270adn+=1
42280?adjects=adn:adjects?1=(nxtadj-adjects) MOD 256:adjects?2=(nxtadj-adjects) DIV 256
42290    ptr=1:memptr=aref+!aref:svmptr=memptr:refs=0:memptr+=1
42300    REPEAT
42310    PROCdecode_parameter(number$,ptr,ptr,val,0)
42320    IF NOT errflag THEN ?memptr=val:memptr+=1:refs+=1
42330    UNTIL ptr>LENnumber$ OR errflag
42340    ?memptr=0:!aref=!aref+refs+1
42350    ?svmptr=refs
42360  ENDIF
42370ENDIF
42380WHEN 4
42390IF prn=maxprep THEN
42400PROCerror(20,"at "+a_list$(0)):errflag=TRUE
42410ELSE
42420FOR I%=0 TO index
42430  len2=LEN a_list$(I%)
42440  IF len2>0 THEN
42450  PROCgetprn(a_list$(I%),num,fnd$)
42460  IF num<>0 PROCerror(8,a_list$(I%)):errflag=TRUE
42470  IF nxtprp+len2>prep_end-2 PROCerror(13,error$(41)):errflag=TRUE
42480  IF NOT errflag THEN
42490    $nxtprp=a_list$(I%):?(nxtprp+len2-1)=?(nxtprp+len2-1) OR 128
42500    nxtprp+=len2:?nxtprp=prn:nxtprp+=1:?nxtprp=&FF
42510  ENDIF
42520  ENDIF
42530NEXT I%
42540  IF NOT errflag THEN
42550    prn+=1
42560    ?preps=prn:preps?1=(nxtprp-preps) MOD 256:preps?2=(nxtprp-preps) DIV 256
42570  ENDIF
42580ENDIF
42590WHEN 5
42600IF cjn=maxconj THEN
42610PROCerror(21,"at "+a_list$(0)):errflag=TRUE
42620ELSE
42630FOR I%=0 TO index
42640  len2=LEN a_list$(I%)
42650  IF len2>0 THEN
42660  PROCgetcjn(a_list$(I%),num,fnd$)
42670  IF num<>0 PROCerror(8,a_list$(I%)):errflag=TRUE
42680  IF nxtcjn+len2>conj_end-2 PROCerror(13,error$(42)):errflag=TRUE
42690  IF NOT errflag THEN
42700    $nxtcjn=a_list$(I%):?(nxtcjn+len2-1)=?(nxtcjn+len2-1) OR 128
42710    nxtcjn+=len2:?nxtcjn=cjn:nxtcjn+=1:?nxtcjn=&FF
42720  ENDIF
42730  ENDIF
42740NEXT I%
42750  IF NOT errflag THEN
42760    cjn+=1
42770    ?conjs=cjn:conjs?1=(nxtcjn-conjs) MOD 256:conjs?2=(nxtcjn-conjs) DIV 256
42780  ENDIF
42790ENDIF
42800WHEN 6
42810IF spn=maxspec THEN
42820PROCerror(24,"at "+a_list$(0)):errflag=TRUE
42830ELSE
42840FOR I%=0 TO index
42850  len2=LEN a_list$(I%)
42860  IF len2>0 THEN
42870  PROCgetspn(a_list$(I%),num,fnd$)
42880  IF num<>0 PROCerror(8,a_list$(I%)):errflag=TRUE
42890  IF nxtspn+len2>spec_end-2 PROCerror(13,error$(43)):errflag=TRUE
42900  IF NOT errflag THEN
42910    $nxtspn=a_list$(I%):?(nxtspn+len2-1)=?(nxtspn+len2-1) OR 128
42920    nxtspn+=len2:?nxtspn=spn:nxtspn+=1:?nxtspn=&FF
42930  ENDIF
42940  ENDIF
42950NEXT I%
42960  IF NOT errflag THEN
42970    spn+=1
42980    ?specs=spn:specs?1=(nxtspn-specs) MOD 256:specs?2=(nxtspn-specs) DIV 256
42990  ENDIF
43000ENDIF
43010WHEN 7
43020IF nsn=maxnoise THEN
43030PROCerror(25,"at "+a_list$(0)):errflag=TRUE
43040ELSE
43050FOR I%=0 TO index
43060  len2=LEN a_list$(I%)
43070  IF len2>0 THEN
43080  PROCgetnsn(a_list$(I%),num,fnd$)
43090  IF num<>0 PROCerror(8,a_list$(I%)):errflag=TRUE
43100  IF nxtnsn+len2>noise_end-2 PROCerror(13,error$(44)):errflag=TRUE
43110  IF NOT errflag THEN
43120    $nxtnsn=a_list$(I%):?(nxtnsn+len2-1)=?(nxtnsn+len2-1) OR 128
43130    nxtnsn+=len2:?nxtnsn=nsn:nxtnsn+=1:?nxtnsn=&FF
43140  ENDIF
43150  ENDIF
43160NEXT I%
43170  IF NOT errflag THEN
43180    nsn+=1
43190    ?noise=nsn:noise?1=(nxtnsn-noise) MOD 256:noise?2=(nxtnsn-noise) DIV 256
43200  ENDIF
43210ENDIF
43220WHEN 10
43230IF pxn=maxpix THEN
43240PROCerror(26,"at "+a_list$(0)):errflag=TRUE
43250ELSE
43260FOR I%=0 TO index
43270  len2=LEN a_list$(I%)
43280  IF len2>0 THEN
43290  IF nxtpxn+len2>pix_end-2 PROCerror(13,error$(45)):errflag=TRUE
43300  IF NOT errflag THEN
43310    $nxtpxn=a_list$(I%):REM ?(nxtpxn+len2-1)=?(nxtpxn+len2-1) OR 128
43320    nxtpxn+=len2+1
43330  ENDIF
43340  ENDIF
43350NEXT I%
43360  IF NOT errflag THEN
43370    loc$=MID$(number$,1)
43380    IF loc$<>"" THEN
43390      IF INSTR("TBLR",loc$)<>0 THEN val=INSTR("TBLR",loc$)-1 ELSE val=0
43400    ELSE val=0
43410    ENDIF
43420    ?nxtpxn=val:nxtpxn+=5:?nxtpxn=&FF
43430    pxn+=1
43440    ?pixs=pxn:pixs?1=(nxtpxn-pixs) MOD 256:pixs?2=(nxtpxn-pixs) DIV 256
43450  ENDIF
43460ENDIF
43470ENDCASE
43480ENDPROC
43490
43500DEF PROCgetstr(test$,place,RETURN place,RETURN result$)
43510chr$=MID$(test$,place,1)
43520IF chr$=CHR$13 THEN result$="":ENDPROC
43530WHILE chr$=" " OR chr$="," place+=1
43540chr$=MID$(test$,place,1)
43550ENDWHILE
43560
43570IF chr$<>CHR$ 34 PROCerror(6," : "+line$):result$="":ENDPROC
43580place+=1
43590place2=INSTR(line$,CHR$34,place):IF place2<place PROCerror(6," : "+line$):result$="":ENDPROC
43600
43610result$=MID$(line$,place,place2-place)
43620place=place2+1
43630ENDPROC
43640
43650DEF PROClistnouns
43660LOCAL mptr,I%,J%,refs
43670IF obn=1 THEN ENDPROC
43680mptr=nref+4
43690FOR I%=1 TO obn-1
43700PROCput(STR$(I%)+"= ")
43710PROCpvok(I%,1,TRUE):PROCput(",<")
43720refs=?mptr
43730IF refs>0 THEN
43740FOR J%=1 TO refs
43750PROCput(STR$(J%?mptr))
43760IF J%<refs PROCput(",")
43770NEXT
43780ENDIF
43790mptr+=refs+1
43800PROCput(">"+CHR$13)
43810NEXT
43820PROCput(CHR$0)
43830ENDPROC
43840
43850DEF PROClistverbs
43860IF vbn=1 THEN ENDPROC
43870FOR I%=1 TO vbn-1
43880PROCput(STR$(I%)+"= ")
43890vtype=verb_type?(2*I%)
43900PROCpvok(I%,0,TRUE):PROCput(",<"+STR$(vtype))
43910olflg=verb_type?(2*I%+1):oloc$=""
43920IF vtype>0 THEN
43930IF (olflg AND 1)<>0 THEN oloc$+="C"
43940IF (olflg AND 2)<>0 THEN oloc$+="P"
43950PROCput(",")
43960ENDIF
43970PROCput(oloc$+">"+CHR$13)
43980NEXT
43990PROCput(CHR$0)
44000ENDPROC
44010
44020DEF PROClistadjs
44030LOCAL mptr,I%,J%,refs
44040IF adn=1 THEN ENDPROC
44050mptr=aref+4
44060FOR I%=1 TO adn-1
44070PROCput(STR$(I%)+"= ")
44080PROCpvok(I%,2,TRUE):PROCput(",<")
44090refs=?mptr
44100IF refs>0 THEN
44110FOR J%=1 TO refs
44120PROCput(STR$(J%?mptr))
44130IF J%<refs PROCput(",")
44140NEXT
44150ENDIF
44160mptr+=refs+1
44170PROCput(">"+CHR$13)
44180NEXT
44190PROCput(CHR$0)
44200ENDPROC
44210
44220DEF PROClistpreps
44230LOCAL I%,J%
44240IF prn=1 THEN ENDPROC
44250FOR I%=1 TO prn-1
44260PROCput(STR$(I%)+"= ")
44270PROCpvok(I%,3,TRUE):PROCput(CHR$13)
44280NEXT
44290PROCput(CHR$0)
44300ENDPROC
44310
44320DEF PROClistconjs
44330LOCAL I%,J%
44340IF cjn=1 THEN ENDPROC
44350FOR I%=1 TO cjn-1
44360PROCput(STR$(I%)+"= ")
44370PROCpvok(I%,4,TRUE):PROCput(CHR$13)
44380NEXT
44390PROCput(CHR$0)
44400ENDPROC
44410
44420DEF PROClistspecs
44430LOCAL I%,J%
44440IF spn=1 THEN ENDPROC
44450FOR I%=1 TO spn-1
44460PROCput(STR$(I%)+"= ")
44470PROCpvok(I%,5,TRUE):PROCput(CHR$13)
44480NEXT
44490PROCput(CHR$0)
44500ENDPROC
44510
44520DEF PROClistnoise
44530LOCAL I%,J%
44540IF nsn=1 THEN ENDPROC
44550FOR I%=1 TO nsn-1
44560PROCput(STR$(I%)+"= ")
44570PROCpvok(I%,6,TRUE):PROCput(CHR$13)
44580NEXT
44590PROCput(CHR$0)
44600ENDPROC
44610
44620DEF PROCstore_pix
44630SYS "Hourglass_On"
44640errflag=FALSE
44650pxn=1
44660nxtpxn=pixs:?nxtpxn=pxn:nxtpxn?1=3:nxtpxn?2=0:nxtpxn+=3:?nxtpxn=&FF
44670last%=FNfind_lastrow
44680FOR I%=0 TO last%
44690IF NOT errflag PROCword(10,FNrow(I%))
44700NEXT
44710SYS "Hourglass_Off"
44720
44730ENDPROC
44740
44750DEF PROCstore_vocab
44760SYS "Hourglass_On"
44770errflag=FALSE:PROCremove_markers
44780
44790CASE voc_sect% OF
44800WHEN 1
44810obn=1
44820nxtobj=nouns:?nxtobj=obn:nxtobj?1=3:nxtobj?2=0:nxtobj+=3:?nxtobj=&FF
44830!nref=4
44840WHEN 2
44850vbn=1
44860nxtvrb=verbs:?nxtvrb=vbn:nxtvrb?1=3:nxtvrb?2=0:nxtvrb+=3:?nxtvrb=&FF
44870WHEN 3
44880adn=1
44890nxtadj=adjects:?nxtadj=adn:nxtadj?1=3:nxtadj?2=0:nxtadj+=3:?nxtadj=&FF
44900!aref=4
44910WHEN 4
44920prn=1
44930nxtprp=preps:?nxtprp=prn:nxtprp?1=3:nxtprp?2=0:nxtprp+=3:?nxtprp=&FF
44940WHEN 5
44950cjn=1
44960nxtcjn=conjs:?nxtcjn=cjn:nxtcjn?1=3:nxtcjn?2=0:nxtcjn+=3:?nxtcjn=&FF
44970WHEN 6
44980spn=1
44990nxtspn=specs:?nxtspn=spn:nxtspn?1=3:nxtspn?2=0:nxtspn+=3:?nxtspn=&FF
45000WHEN 7
45010nsn=1
45020nxtnsn=noise:?nxtnsn=nsn:nxtnsn?1=3:nxtnsn?2=0:nxtnsn+=3:?nxtnsn=&FF
45030ENDCASE
45040last%=FNfind_lastrow
45050
45060FOR I%=0 TO last%
45070 IF NOT errflag PROCword(voc_sect%,FNrow(I%))
45080NEXT
45090IF NOT errflag text_ok=TRUE
45100SYS "Hourglass_Off"
45110ENDPROC
45120
45130DEF FNfindnoun(obj,RETURN J%)
45140REM Finds the number of the noun referring to a specified object
45150LOCAL M%,I%,N%,found
45160M%=nref+4
45170WHILE N%<last_object AND NOT found
45180J%=?M%
45190IF J%>0 THEN
45200FOR I%=1 TO J%
45210IF M%?I%=obj THEN found=TRUE
45220NEXT
45230ENDIF
45240M%+=J%+1
45250N%+=1
45260ENDWHILE
45270IF found THEN=N% ELSE=0
45280
45290
45300DEF PROCwhich_obj(N%,RETURN V$,RETURN R%)
45310REM Returns a string containing the objects referenced by noun N%
45320REM R%=number of objects referenced
45330LOCAL M%,found,I%,J%,K%
45340
45350M%=nref+4
45360IF N%>1 THEN
45370FOR K%=1 TO N%-1
45380 J%=?M%
45390 M%+=J%+1
45400NEXT
45410ENDIF
45420J%=?M%
45430R%=J%:V$=""
45440IF J%>0 THEN
45450FOR I%=1 TO J%
45460 V$+=STR$(I%?M%)+","
45470NEXT
45480ENDIF
45490ENDPROC
45500
45510DEF PROCpvok(num,type,all)
45520LOCAL temp$,found,ctr
45530IF num=0 THEN ENDPROC
45540
45550CASE type OF
45560WHEN 0: sptr=verbs+3
45570WHEN 1: sptr=nouns+3
45580WHEN 2: sptr=adjects+3
45590WHEN 3: sptr=preps+3
45600WHEN 4: sptr=conjs+3
45610WHEN 5: sptr=specs+3
45620WHEN 6: sptr=noise+3
45630WHEN 10: sptr=pixs+3
45640ENDCASE
45650
45660A%=num:B%=sptr
45670IF NOT all THEN
45680CALL pvok:temp$=$atext:IF temp$<>"" PROCput(temp$)
45690ELSE
45700?pvokflag=0
45710REPEAT
45720CALL pvok
45730IF ?pvokflag=0 THEN
45740IF ctr>0 THEN PROCput(",")
45750temp$=$atext:IF temp$<>"" PROCput(temp$)
45760ctr+=1:B%=!address
45770ENDIF
45780UNTIL ?pvokflag>0
45790ENDIF
45800ENDPROC
45810
45820DEF PROCnonspc(str$,place,RETURN place,RETURN chr$)
45830WHILE MID$(str$,place,1)=" "
45840  place+=1
45850ENDWHILE
45860chr$=MID$(str$,place,1)
45870ENDPROC
45880
45890DEF PROCdodefn
45900IF vbn=maxvbn PROCerror(11,": "+STR$(maxvbn)+" "+error$(46)):ENDPROC
45910?prgptr=def_token:prgptr+=1
45920
45930PROCgetstr(line$,ptr,ptr,vrb$):index=0
45940IF errflag THEN ENDPROC
45950REM WHILE vrb$<>"" AND index<11
45960a_list$(index)=vrb$:index+=1
45970REM PROCgetstr(line$,ptr,ptr,vrb$)
45980REM ENDWHILE
45990
46000IF vrb$="" PROCerror(1,error$(47)):ENDPROC
46010
46020IF errflag THEN ENDPROC
46030
46040flag=FALSE:index-=1
46050FOR I%=0 TO index
46060  PROCgetvbn(a_list$(I%),num,fnd$)
46070  IF num<>0 AND NOT existing_verb PROCerror(8,a_list$(I%)):flag=TRUE
46080  oldvbn=num
46090NEXT I%
46100
46110IF NOT flag AND NOT existing_verb THEN
46120  FOR I%=0 TO index
46130    len2=LEN a_list$(I%)
46140    $nxtvrb=a_list$(I%):?(nxtvrb+len2-1)=?(nxtvrb+len2-1) OR 128
46150    nxtvrb+=len2:?nxtvrb=vbn:nxtvrb+=1
46160  NEXT I%
46170  ?prgptr=vbn:prgptr+=1:?nxtvrb=&FF:vbn+=1
46180  ?verbs=vbn:verbs?1=(nxtvrb-verbs) MOD 256:verbs?2=(nxtvrb-verbs) DIV 256
46190
46200ELSE
46210IF existing_verb THEN ?prgptr=oldvbn:prgptr+=1
46220ENDIF
46230
46240existing_verb=TRUE
46250ENDPROC
46260
46270DEF PROCprtdef
46280vrbnum=?listptr
46290PROCput(CHR$32+CHR$34):PROCpvok(vrbnum,0,FALSE):PROCput(CHR$34)
46300ENDPROC
46310
46320DEF FNfntype(parm)
46330LOCAL temp
46340IF token=prep_token OR token=notprep_token THEN =3
46350temp=parm AND %01000000:REM check if `object` function
46360IF temp<>0 THEN=1
46370temp=parm AND %00100000:REM check if `verb` function
46380IF temp<>0 THEN=2 ELSE =0
46390
46400DEF PROCprntobj
46410LOCAL num
46420objnum=?listptr
46430IF objnum>last_object THEN ENDPROC
46440num=FNfindnoun(objnum,refs)
46450IF refs=1 THEN
46460PROCput(CHR$34):PROCpvok(num,1,FALSE):PROCput(CHR$34)
46470doneit=TRUE
46480ENDIF
46490ENDPROC
46500
46510DEF PROCprntvrb
46520vrbnum=?listptr
46530IF vrbnum>=vbn THEN ENDPROC
46540PROCput(CHR$34):PROCpvok(vrbnum,0,FALSE):PROCput(CHR$34)
46550doneit=TRUE
46560ENDPROC
46570
46580DEF PROCprintprep
46590LOCAL num
46600num=?listptr
46610IF num>=prn THEN ENDPROC
46620PROCput(CHR$34):PROCpvok(num,3,FALSE):PROCput(CHR$34)
46630doneit=TRUE
46640ENDPROC
46650
46660DEF PROCcopy_from_editor
46670LOCAL ldptr,svptr,O%,I%,R%
46680svptr=initsave
46690FOR O%=last_object TO 0 STEP-1
46700ldptr=odata%+O%*o_len
46710!svptr=!ldptr:svptr+=4
46720?svptr=ldptr?12:svptr+=1
46730?svptr=ldptr?14:svptr+=1
46740?svptr=ldptr?15:svptr+=1
46750NEXT
46760FOR R%=last_room TO 0 STEP-1
46770ldptr=rdata%+R%*r_len
46780?svptr=?ldptr:svptr?1=ldptr?1:svptr+=2
46790FOR I%=54 TO 73 STEP4
46800!svptr=I%!ldptr:svptr+=4
46810NEXT
46820NEXT
46830ENDPROC
46840
46850DEF PROCcopy_to_editor
46860LOCAL ldptr,svptr,O%,I%,R%
46870ldptr=initsave
46880FOR O%=last_object TO 0 STEP-1
46890svptr=odata%+O%*o_len
46900!svptr=!ldptr:ldptr+=4
46910svptr?12=?ldptr:ldptr+=1
46920svptr?14=?ldptr:ldptr+=1
46930svptr?15=?ldptr:ldptr+=1
46940NEXT
46950FOR R%=last_room TO 0 STEP-1
46960svptr=rdata%+R%*r_len
46970?svptr=?ldptr:svptr?1=ldptr?1:ldptr+=2
46980FOR I%=54 TO 73 STEP4
46990I%!svptr=!ldptr:ldptr+=4
47000NEXT
47010NEXT
47020ENDPROC
47030
47040DEF PROCswap_data
47050LOCAL ldptr,svptr,O%,I%,R%,T%
47060ldptr=initsave
47070FOR O%=last_object TO 0 STEP-1
47080svptr=odata%+O%*o_len
47090T%=!svptr
47100!svptr=!ldptr:!ldptr=T%:ldptr+=4
47110T%=svptr?12
47120svptr?12=?ldptr:?ldptr=T%:ldptr+=1
47130T%=svptr?14
47140svptr?14=?ldptr:?ldptr=T%:ldptr+=1
47150T%=svptr?15
47160svptr?15=?ldptr:?ldptr=T%:ldptr+=1
47170NEXT
47180FOR R%=last_room TO 0 STEP-1
47190svptr=rdata%+R%*r_len
47200T%=?svptr:?svptr=?ldptr:?ldptr=T%:T%=svptr?1:svptr?1=ldptr?1:ldptr?1=T%:ldptr+=2
47210FOR I%=54 TO 73 STEP4
47220T%=I%!svptr
47230I%!svptr=!ldptr:!ldptr=T%:ldptr+=4
47240NEXT
47250NEXT
47260ENDPROC
47270
47280DEF FNerrorbox(err$,err%,Errorflags,fromPlace%)
47290SYS CreateM,,-1
47300SYS Poll,,block
47310!mistake = err%
47320IF NOT testing AND err%=29 THEN
47330   err$="Sorry - not implemented in this version": Errorflags=1
47340ENDIF
47350IF testing err$+=" (Error code: "+STR$(ERL)+")"
47360IF (err% AND &FF)=&C7 err$="Disk not formatted. Shall I format it now?":Errorflags=3
47370$(mistake+4) = err$+CHR$(0)
47380IF fromPlace%<>-99 THEN Errorflags=Errorflags OR 16:t$="Message from ALPS" ELSE t$="ALPS"
47390SYS "Wimp_ReportError",mistake,Errorflags,t$ TO ,dialogue%
47400ok = (dialogue%=1)
47410
47420IF (err% AND &FF)=&C7 AND ok THEN
47430   *FORMAT 0 E Y
47440   PROCcreate_dirs(FNgeticondata(setuph,2),FNgeticondata(setuph,5))
47450ENDIF
47460
47470CASE fromPlace% OF
47480WHEN -99: REM *** a proper error ***
47490WHEN 0:IF ok THEN PROCsave_all(path$)
47500WHEN 1:IF ok THEN PROCload_all(path$):PROCopen(ALPSmain,400,800,600,600)
47510WHEN 2:IF ok THEN PROCcreate_dirs
47520WHEN 3:IF ok THEN
47530quit%=TRUE
47540SYS "Wimp_GetCaretPosition",,quitblk+20 :REM Fill up first 5 words
47550quitblk!44=&1FC                         :REM CTRL-SHIFT-f12
47560!quitblk=48                             :REM Size of message block
47570quitblk!12=0
47580quitblk!16=8                            :REM Send Key_Pressed message
47590SYS "Wimp_SendMessage",17,quitblk,prequittask%
47600ENDIF
47610WHEN 4:IF ok THEN quit%=TRUE
47620ENDCASE
47630=dialogue%
47640
47650
47660DEF FNOS_Var(V$)
47670SYS "XOS_ReadVarVal",V$,0,-1 TO ,,exists
47680=exists
47690
47700DEF FNReadVarVal(V$)
47710DIM vblk 32
47720SYS "XOS_ReadVarVal",V$,vblk,32,,0,3 TO ,,N%
47730vblk?N%=13
47740=$vblk
47750 
47760DEF FNiconbar(sprBlk, spname$, xx,yy)
47770!qBlk%=-1
47780qBlk%!4=0:qBlk%!8=0:qBlk%!12=xx*2:qBlk%!16=yy*4
47790qBlk%!20=&2102
47800DIM qBlk%!24 (LENspname$+1):$(qBlk%!24)=spname$
47810qBlk%!28=sprBlk
47820qBlk%!32=LENspname$+1
47830SYS "Wimp_CreateIcon",,qBlk% TO theIc%
47840=theIc%
47850 
47860 
47870DEF PROCreceive(block)
47880ref%=block!8
47890CASE block!16 OF
47900  WHEN 0   :quit%=TRUE
47910  WHEN 2   :REM SaveAck from Filer/another app.
47920            path$=FNname(block+44)
47930            PROCsave_all(path$)
47940            !block=64:block!12=block!8:block!16=3
47950            SYS "Wimp_SendMessage",17,block,block!20,block!24
47960  WHEN 3,5 :PROCload(block)
47970  WHEN 8   :REM PreQuit
47980    IF NOT data_saved THEN
47990    prequittask%=block!4
48000    bytes=!block
48010    FOR I%=0 TO bytes
48020    quitblk!I%=block!I%
48030    NEXT
48040    quitblk!12=quitblk!8
48050    block!12=block!8
48060    SYS "Wimp_SendMessage",19,block
48070    ans = FNerrorbox("There is unsaved data in the memory. Do you really want to quit?",0,3,3)
48080    ENDIF
48090  WHEN &502:PROChelp(block!32,block!36,block)
48100  WHEN &400C1:REM mode change
48110   mode%=MODE
48120   PROCgetmodeinfo
48130   PROCassemble(armcode%):REM Need to allow for different screen size
48140   IF scrnsize>oldsize THEN null=FNerrorbox("Warning! It may not be possible to display pictures in this mode due to memory restrictions. To display pictures quit ALPS and restart in this mode.",0,1,5)
48150ENDCASE
48160ENDPROC
48170
48180DEF PROCload(b)
48190ourtype=EVAL("&"+type$)
48200IF b!40 = ourtype THEN
48210  path$=FNname(b+44)
48220  IF NOT data_saved THEN
48230    PROCLoadAck
48240    PROCensure(1,"Unsaved data in memory. Please confirm that you want to load this file.")
48250    ELSE
48260    REM Copy 'block' to preserve 'Load' message data - 12.04.90
48270    FOR I%=0 TO &200 STEP 4
48280    block2!I%=b!I%
48290    NEXT
48300    PROCload_all(path$)
48310    REM Restore block
48320    FOR I%=0 TO &200 STEP 4
48330    b!I%=block2!I%
48340    NEXT
48350    PROCLoadAck
48360    PROCopen(ALPSmain,400,800,600,600)
48370  ENDIF
48380ENDIF
48390ENDPROC
48400
48410DEF PROCLoadAck
48420block!12=block!8:block!16=4:!block=64
48430SYS "Wimp_SendMessage",17,block,block!4
48440ENDPROC
48450
48460DEF PROCsave
48470path$=FNgeticondata(savehandle,2)
48480PROCgetpointer
48490block!20=64:block!32=0:block!36=1:REM DataSave MSG
48500block!40=handle%:block!44=icon%:block!48=mousex%:block!52=mousey%
48510block!56=10000:REM Estimated size of data???
48520block!60=EVAL("&"+type$):REM File type
48530$(block+64)=FNleafname(path$)+CHR$0
48540SYS "Wimp_SendMessage",17,block+20,handle%,icon%
48550ENDPROC
48560
48570DEF FNname(indx)
48580LOCAL f$,g$,p,i
48590
48600WHILE ?indx<>0
48610f$+=CHR$(?indx):indx+=1
48620ENDWHILE
48630=f$
48640
48650DEF FNleafname(f$)
48660p=1
48670REPEAT
48680i=INSTR(f$,"."):IF i<>0 p=i+1:MID$(f$,i,1)="#"
48690UNTIL i=0
48700f$=MID$(f$,p)
48710=f$
48720
48730DEF FNtick_objected
48740flags%=VAL(FNgeticondata(objhandle,8))
48750FOR fl%=7 TO 0 STEP -1
48760  flag%=flags% DIV 2^fl%
48770  flags%=flags% MOD 2^fl%
48780  ptr=(m_objflag+28+(7-fl%)*24)
48790  IF flag%=1 THEN
48800    ?ptr=?ptr OR 1
48810  ELSE ?ptr=?ptr AND %11111110
48820  ENDIF
48830NEXT fl%
48840=0
48850
48860DEF FNtick_message
48870  ptr=0
48880  FOR I%=1 TO maxsw%
48890    $(swdata%+ptr)=STR$(switch_vals(I%))
48900    ptr+=12
48910    IF I%>switch_vals(0) THEN
48920      ?(m_switch%+28+24*I%)=(?(m_switch%+28+24*I%) AND &FE)
48930    ELSE
48940      ?(m_switch%+28+24*I%)=(?(m_switch%+28+24*I%) OR 1)
48950    ENDIF
48960  NEXT
48970REM  $(m_text%+5)=STR$(mptr) - Not needed now msg# is in window title bar
48980  IF switch_vals(0)<>0 THEN ?(m_switch%+28)=(?(m_switch%+28) AND &FE) ELSE ?(m_switch%+28)=(?(m_switch%+28) OR 1)
48990  IF overwrite THEN
49000    ?(m_text%+28+24)=?(m_text%+28+24) OR 1
49010    ?(m_text%+28)=?(m_text%+28) AND &FE
49020  ELSE
49030    ?(m_text%+28+24)=?(m_text%+28+24) AND &FE
49040    ?(m_text%+28)=?(m_text%+28) OR 1
49050  ENDIF
49060=0
49070
49080DEF FNtick_program
49090  IF overwrite THEN
49100    ?(m_prog%+28+24)=?(m_prog%+28+24) OR 1
49110    ?(m_prog%+28)=?(m_prog%+28) AND &FE
49120  ELSE
49130    ?(m_prog%+28+24)=?(m_prog%+28+24) AND &FE
49140    ?(m_prog%+28)=?(m_prog%+28) OR 1
49150  ENDIF
49160  IF (listoption AND %10)<>0 THEN
49170    ?(m_listopts+28+24)=?(m_listopts+28+24) OR 1
49180    ?(m_listopts+28)=?(m_listopts+28) AND &FE
49190  ELSE
49200    ?(m_listopts+28+24)=?(m_listopts+28+24) AND &FE
49210    ?(m_listopts+28)=?(m_listopts+28) OR 1
49220  ENDIF
49230=0
49240
49250DEF FNtick_vocab
49260  IF overwrite THEN
49270    ?(m_vocab%+28+24)=?(m_vocab%+28+24) OR 1
49280    ?(m_vocab%+28)=?(m_vocab%+28) AND &FE
49290  ELSE
49300    ?(m_vocab%+28+24)=?(m_vocab%+28+24) AND &FE
49310    ?(m_vocab%+28)=?(m_vocab%+28) OR 1
49320  ENDIF
49330  FOR I%=1 TO 7
49340    IF I%=voc_sect% THEN
49350      ?(m_vocab%+28+24*(I%+4))=?(m_vocab%+28+24*(I%+4)) OR 1
49360    ELSE
49370      ?(m_vocab%+28+24*(I%+4))=?(m_vocab%+28+24*(I%+4)) AND &FE
49380    ENDIF
49390  NEXT I%
49400=0
49410
49420
49430DEF FNtick_
49440=0
49450
49460
49470DEF FNtick_roomedit
49480REM First set the 'tick' bits for each menu item
49490flags%=VAL(FNgeticondata(roomhandle,34))
49500FOR fl%=7 TO 0 STEP -1
49510  flag%=flags% DIV 2^fl%
49520  flags%=flags% MOD 2^fl%
49530  ptr=(m_rmflag+28+(7-fl%)*24)
49540  IF flag%=1 THEN
49550    ?ptr=?ptr OR 1
49560  ELSE ?ptr=?ptr AND %11111110
49570  ENDIF
49580NEXT fl%
49590=0
49600
49610
49620DEF FNtick_exitedit
49630REM First set the 'tick' bits for each menu item
49640flags%=?(rdata%+rptr*r_len+oldrmicon%)
49650FOR fl%=7 TO 0 STEP -1
49660  flag%=flags% DIV 2^fl%
49670  flags%=flags% MOD 2^fl%
49680  ptr=(m_exitf+28+(7-fl%)*24)
49690  IF flag%=1 THEN
49700    ?ptr=?ptr OR 1
49710  ELSE ?ptr=?ptr AND %11111110
49720  ENDIF
49730NEXT fl%
49740=0
49750
49760
49770DEF FNbutton_misc
49780icon%(THEmiscicon)=-1
49790=0
49800
49810
49820DEF FNtick_misc
49830   ptr=(miscmenu+28+48)
49840   IF datavalid THEN
49850      ?ptr = ?ptr OR 1
49860   ELSE
49870      ?ptr = ?ptr AND %11111110
49880   ENDIF
49890=0
49900
49910
49920DEF PROChelp(w,h,b)
49930LOCAL help$
49940CASE w OF
49950WHEN -2:help$="This is the ALPS icon.|MClick SELECT to choose an editor.|MClick MENU to quit.|MDrag an 'Alps' file icon to the ALPS icon to load it."
49960WHEN ALPSmain
49970help$="Click SELECT to open the "
49980CASE h OF
49990WHEN 0:help$="Click SELECT to Save files or Set up a disk for use with ALPS."
50000WHEN 1:help$="Click SELECT to display the ALPS variables and status."
50010WHEN 2:help$+="Room Editor and enter your map details.|MClick MENU Print the room data or Import BBC room data."
50020WHEN 3:help$+="Object Editor and enter your object details.|MClick MENU to Print the objects data or Import BBC objects data."
50030WHEN 4:help$+="Message Editor.|MClick MENU to Print the messages or Import BBC messages."
50040WHEN 5:help$="This is the Alpine Software logo. It has no effect."
50050WHEN 6:help$+="Program Editor and enter the game's logic.|MClick MENU to Print the program, Import a BBC program or Run the game."
50060WHEN 7:help$+="Character Designer.|MDouble-click a 'BBC font' file to Load a character set.|MCurrent character set is saved with your game."
50070WHEN 8:help$+="Vocabulary Editor and enter nouns, verbs, adjectives etc.|MClick MENU to Print the vocabulary."
50080WHEN 9:help$="Click SELECT to swap the original data in the editors with the data values obtained during a run of the game.|MA "+CHR$128+" indicates data is original. An X indicates post-run data."
50090WHEN 10:help$+="Picture Editor and edit the picture filenames.|MClick MENU to Print the Picture list."
50100OTHERWISE help$="Click SELECT to choose an editor.|MTo load an 'Alps' file, drag its icon to this window."
50110ENDCASE
50120WHEN roomhandle
50130help$="Click SELECT to "
50140CASE h OF
50150 WHEN 1:help$+="edit the room's flags."
50160 WHEN 5:help$+="display the first room's data."
50170 WHEN 6:help$+="display the last room's data."
50180 WHEN 7:help$+="display the next room's data."
50190 WHEN 8:help$+="display the previous room's data."
50200 WHEN 9:help$+="move forward 10 rooms."
50210 WHEN 10:help$+="move back 10 rooms."
50220 WHEN 11:help$+="enter the displayed data."
50230 WHEN 12:help$+="make this the last room."
50240 WHEN 54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69:help$="Click MENU to edit the exit flags."
50250 OTHERWISE help$=""
50260ENDCASE
50270WHEN objhandle
50280 help$="Click SELECT to "
50290 CASE h OF
50300  WHEN 0:help$+="edit the object's flags."
50310  WHEN 5:help$+="display the first object's data."
50320  WHEN 6:help$+="display the last object's data."
50330  WHEN 27:help$+="display the next object's data."
50340  WHEN 16:help$+="display the previous object's data."
50350  WHEN 20:help$+="move forward 10 objects."
50360  WHEN 21:help$+="move back 10 objects."
50370  WHEN 17:help$+="enter the displayed data."
50380  WHEN 22:help$+="make this the last object."
50390  WHEN 26:help$+="create a container."
50400  OTHERWISE help$=""
50410 ENDCASE
50420WHEN texthandle
50430help$="Click SELECT to position the caret.|M"
50431IF text_owner$<>"pix" help$+="Click MENU to pop up a menu.|MClick ADJUST or press F9 to insert a marker."
50440WHEN design
50450help$="Click SELECT to "
50460CASE TRUE OF
50470 WHEN h=66:help$+="display next character."
50480 WHEN h=67:help$+="display previous character."
50490 WHEN h=68:help$+="choose a different character."
50500 WHEN h=64:help$="This shows the character actual size."
50510 WHEN (h>=0 AND h<64):help$+="toggle this block."
50520 OTHERWISE help$="This is the Character Designer."
50530ENDCASE
50540ENDCASE
50550b!16=&503:REM Send a message
50560b!12=ref%
50570$(b+20)=help$
50580b!0=(((20+LEN(help$)+1)DIV4)*4)+4
50590$(b+21+LEN(help$))=CHR$(0)
50600SYS "Wimp_SendMessage",17,b
50610ENDPROC
50620
50630DEF PROCreadPalette
50640FOR col=0 TO 15
50650PROCreadpal(col,16)
50660rgb(col,1)=r%:rgb(col,2)=g%:rgb(col,3)=b%
50670NEXT
50680PROCreadpal(16,24)
50690rgb(16,1)=r%:rgb(16,2)=g%:rgb(16,3)=b%
50700FOR col=17 TO 19
50710PROCreadpal(col-16,25)
50720rgb(col,1)=r%:rgb(col,2)=g%:rgb(col,3)=b%
50730NEXT
50740ENDPROC
50750
50760DEF PROCreadpal(l%,p%)
50770REM Read the rgb values for logical/physical colour l%,p%
50780SYS ReadPal,l%,p% TO R0,R1,palette%
50790r%=(palette%>> 8)AND&FF
50800g%=(palette%>>16)AND&FF
50810b%=(palette%>>24)AND&FF
50820ENDPROC

� >$.!ALPS.!RunImage
2� � Alpine Software/Philip Hawthorne 1989,1990
*� With modifications by Keith McAlpine
( version$="5.09A, 3-Mar-1991"
2
<4� block &200,block2 &200,mistake 300,quitblk 100
F
P-� � � 0:� �$:� ":";�:ș"Wimp_CloseDown":�
Z
d@%=&10:ctr%=0
nmode%=�
x
testing=�
�Aresources_ok=�OS_Var("Alps$Resources") � �OS_Var("Alps$Data")
�
�ș "OS_GetEnv" � Env$
�I%=�Env$,�34,�Env$,�34)+1)
�ef$=�Env$,I%+1)
�ȕ �ef$,1)=" "
�ef$=�ef$,2)
��
�
�theLastMenu = 0 : tick$=""
�
�type$="CF8"
�
� tempBlk 4
$tempBlk = "TASK"
5ș "Wimp_Initialise",200,!tempBlk,"ALPS" � ,task%
"
,�� � resources_ok � � 1,"The ALPS resources are not available. Open up the directory viewer with !ALPS in it.":ș "Wimp_CloseDown",task%,!tempBlk:�
6�install_texted
@
�init2
J+� � dialog=�errorbox(�$,�,1,-99):� �dtA
T�new
^�assemble(armcode%)
h0�fill(text_block%,text_blocksize%,dummy_spc)
r#�fill(verb_type,2*(maxvbn+1),0)
|�fill(nref+4,nref_size-4,0)
��fill(aref+4,aref_size-4,0)
�
�clear
�'claimpoll$="":claimmenu$="":quit%=�
�
�
path$=ef$
�� ef$<>"" �
�$filename%=�leafname(ef$)
��load_all(ef$)
�#�open(ALPSmain,400,800,600,600)
��
�
��
�ș Poll,,block � reason
Ȏ reason �
 � 1: �redraw(!block)
 � 2: ș OpenW,,block
& � 3: �close(!block)
0H � 6: �checkmouse(!block,block!4,block!8,block!12,block!16,block!20)
:E � 7: �save:� User has dragged 'Alps' file icon to another window
D2 � 8: �userkeypressed(!block,block!4,block!24)
N% � 9: �menuselect(!block,block!4)
X � 17,18: �receive(block)
b �
l� quit%
vNș "Wimp_CloseDown",task%,!tempBlk:� testing � �("FX4"):�:�" at line ";�:�
��
�
�� �init2
�!�getmodeinfo:oldsize=scrnsize
�data_saved=�:loaded$=""
�� a_list$(10)
�small_areasize%=30
�!� small_area% small_areasize%
�
�(� D%(3),shade%(15),scale 15,pixtr 15
�'� ---------------------------------
�'� Manifest constants for the system
�
2maxrms=1000:maxobs=255:maxsw%=10:maxtokens=128

 listoption=2:� Default LISTO
 
*
� pos$(3)
4� I%=0 � 3:� pos$(I%):�
>
� T,B,L,R
H
R� oldpars 73
\� I%=0 � 72
f� B%:oldpars?I%=B% � &F
p�
z
�� 0,0,0,0,0,1,161,193
�� 161,193,2,1,0,128,128,0
�� 128,0,0,128,0,1,1,1
�� 1,65,1,0,0,0,65,0
�%� 130,194,130,194,193,193,129,129
�#� 193,193,131,195,1,130,128,128
�� 2,2,66,0,1,66,3,67
�� 0,1,1,65,65,65,3,0
�� 1,1,130,130,130,2,130,2
�� 2
�
�1maxlen=10:� Maximum word length in vocabulary
�
3� Room and object data block lengths (in bytes)
r_len=74:o_len=16

$*num_vars=60:� Number of ALPS variables
..var_size=num_vars*2:� 2 bytes per variable
8
B5maxmsg=65535:maxobn=255:maxvbn=255:maxconst=65535
LEmaxadj=255:maxprep=50:maxconj=10:maxspec=30:maxnoise=50:maxpix=50
V
`noun_size=3000
jverb_size=3000
tadjc_size=2000
~-prep_size=400:� Size of prepositions list
�,conj_size=50:� size of conjunctions list
�;spec_size=100:� size of 'specials' list (IT, THEM, ALL)
�4noise_size=200:� size of 'noise' list (THE,A,AN)
�=aref_size=2000:� size of adjective object reference table
�9nref_size=2000:� size of nouns object reference table
�-pix_size=1000:� size of pix filename list
�
Ά� nouns noun_size,verbs verb_size,adjects adjc_size,preps prep_size,conjs conj_size,specs spec_size,noise noise_size,pixs pix_size
�
�:� aref aref_size,nref nref_size,verb_type 2*(maxvbn+1)
�
�5noun_end=nouns+noun_size:verb_end=verbs+verb_size
�adjc_end=adjects+adjc_size:prep_end=preps+prep_size:conj_end=conjs+conj_size:spec_end=specs+spec_size:noise_end=noise+noise_size

Iaref_end=aref+aref_size:nref_end=nref+nref_size:pix_end=pixs+pix_size

� Printer codes etc
(condensed=15:reset=64
2pline$=�132,"-")
<pline2$=�79,"-")
F
PK� ------- Set up data areas for rooms and objects and clear them ------
ZB� rdata% (maxrms+1)*r_len,odata% (maxobs+1)*o_len,controom% 12
d
n� Set up the save buffers
x+initareasize=7*(maxobs+1)+22*(maxrms+1)
�=� initsave initareasize,ramsave initareasize+var_size+128
�*$controom%="0":cont_room=0:container=�
�
�+rptr=1:optr=1:last_room=1:last_object=1
�
�&� areas to store flag descriptions
�maxd%=13
�'� o_flags% maxd%*8,r_flags% maxd%*8
�
�� Set the flag descriptions
�� I%=7 � 0 �-1
�� flag$
�($(o_flags%+I%*maxd%)=�flag$,maxd%-1)
�

� I%=7 � 0 �-1
"� flag$
,($(r_flags%+I%*maxd%)=�flag$,maxd%-1)
6�
@
J� Object Flag descriptions
TG� "","",Being worn,Wearable,Scenery,Invisible,Takeable,Light source
^
h� Room flag descriptions
r%� "","","","","","",Visited,Light
|
�!� Room Exit flag descriptions
�X� Invisible,Closed door,Open door,Locked door,Unl'ked door,Blocked,Reserved,Reserved
�
�� exit_flag$(7)
�)� flag=7 � 0 �-1:� exit_flag$(flag):�
�
�� proc% 12,exit% 12,def% 12
� $proc%="":$def%="":$exit%=""
�
�8� prg_sel% = Section of program selected for editing
�1�            2=Main, 3=Proc, 4=Define, 5=Exit
�K� progval$ = STR$ value of proc or exit number or name of selected verb
�
prg_sel%=2:progval$=""

<� voc_sect% = Section of vocabulary selected for editing
&"�             1=Nouns, 2=Verbs
0voc_sect%=1
:
D� voc$(8),prog$(6)
N[voc$()="","Nouns","Verbs","Adjectives","Prepositions","Conjunctions","Specials","Noise"
X4prog$()="","","Main","Procedure","Define","Exit"
b
l6pbsize=(scrnsize � 2)+400:� size of picture buffer
vF� pbsize<25*1024 � pbsize=25*1024:� Ensure at least 25k - 12.04.90
�
�� picbuf pbsize
�
�prgbsize=&1000
�� prgbuf% prgbsize
�
�?� ------- Some constants for the character designer -------
�
�cur_chr%=�"A":max_chr%=125
�� charnum 12
�$charnum=""
�
�7� ------- Dimension the other arrays needed -------
ucsize=500
Dș "OS_File",5,"<ALPS$Resources>.ASIobjcode" � ftype,,,,codesize
pbyte_size=148
 F� armcode% 1000,pbytes pbyte_size,work% &1100,asicode% codesize+10
*� usercode% ucsize
4Lrun=asicode%:printmsg=asicode%+4:search=asicode%+12:findcode=asicode%+16
>setup=asicode%+20
H5�("LOAD <ALPS$Resources>.ASIobjcode "+�~asicode%)
R
� pal%(2)
\� q% &2000,erroraddr%(4)
f� indexdata% 32*24+20
pmaxbuf%=&3000
z&� buffer% maxbuf%:curbuff%=buffer%
�nh%=32:ni%=11
�,� handle%(nh%+1),wident$(nh%),wptr%(nh%)
�>� I%=0�nh%:handle%(I%)=I%-1:wident$(I%)="":�:handleSP%=nh%
� � icon%(ni%+1),iconbar$(ni%)
�.� I%=0 � ni%:icon%(I%)=-1:� iconbar$(I%):�
�icon%(ni%+1)=-1
�oldicon%=0:oldrmicon%=0
�
�8� ------ Names of icons (sprites) on icon bar ------
�L� disk35,arclogo,door,key,quill,info,listing,chardes,vocab,swap,eye,face
�
�0diskicon=0:texticon=4:progicon=6:staricon=99
�0vocabicon=8:faceicon=99:arcicon=1:swapicon=9
	%alpsicon=5:helpicon=13:eyeicon=10
	7THEkeyicon=3:THEdooricon=2:texticon=4:THEcharicon=7
	
	$.� menufree% &1800:menuend%=menufree%+&1800
	.� menulist% &100
	8� qBlk% 256
	B+dx%=2:lsY%=40:ypixel%=4:chX%=16:chY%=32
	L%currentwindow%=-1:currenticon%=-1
	Vspritef$=""
	`9� mb_wident% 12,filename% 64,filename2% 64,import% 64
	j6� testing $filename%="demo" � $filename%="starter"
	t%$filename2%="charset":$import%=""
	~(� start(20),sys_b2% &300,os_block 50
	�
	��KeyWordRead
	��ErrorMsgRead
	�
	�9� ----- Define the "Wimp" and "OS" SYS numbers ------
	�Wimp=&400C0
	�CreateW=Wimp+1
	�CreateI=Wimp+2
	�DeleteW=Wimp+3
	�DeleteI=Wimp+4
	�OpenW=Wimp+5
	�CloseW=Wimp+6
Poll=Wimp+7

RedrawW=Wimp+8
UpdateW=Wimp+9
GetW=Wimp+11
(GetWI=Wimp+&C
2SetCaret=Wimp+&12
<GetCaret=Wimp+&13
FGetR=Wimp+&A
PSetI=Wimp+&D
ZGetI=Wimp+&E
dGetP=Wimp+&F
nDrag=Wimp+&10
xForceR=Wimp+&11
�CreateM=Wimp+&14
�SetP=Wimp+&18
�GetOutline=Wimp+&E0
�ReadPal=&2F
�
�F� ------ Set up our own sprite area and read the sprites in ------
�Aș "OS_File",5,"<ALPS$Resources>.AlpsSprite" � ,,,,spritesize
�spritesize+=4
�� spritearea% spritesize
�!spritearea%=spritesize
�Bș "OS_SpriteOp",266,spritearea%,"<Alps$Resources>.AlpsSprite"
�#� fontcounts% 255,mb_wident% 24
�
6� ------ Set up the wimps and their handles ------

�rgb(19,3)
"+�loadtemplates("<Alps$Resources>.ALPS")
,
6+� ------ Name the window handles ------
@.objhandle=handle%(�matchident("objected"))
J/roomhandle=handle%(�matchident("roomedit"))
T-texthandle=handle%(�matchident("texted"))
^,design=handle%(�matchident("chrdesign"))
h+infohandle=handle%(�matchident("info"))
r-savehandle=handle%(�matchident("saveas"))
|8ALPSmain=handle%(�matchident("iconbar")):dialogue%=0
�(setuph=handle%(�matchident("Setup"))
�desticon=47:exitprogicon=48
�
�iconbar% = -2
�windowindex%=nh%+1
�
�,�changeicon(infohandle,7,version$,dummy)
�
�;firstIconBarIcon% = �iconbar(spritearea%, "face",31,19)
�!THEmiscicon=firstIconBarIcon%
�
�
�&� ------ Define the colours ------
barfgcol=11:barbgcol=3
'`wbcol=0:`tbcol=2:`sco=&3:`mbcol=&B
(`wfcol=7:`tfcol=7:`sci=&D:`tbcol2=&C
&
0cur_pal%=7:phys_col%=16
:
D0first_token=&30:� Lowest keyword token value
NW�find_token(keyword$(),"INC",var_token,dummy):� Tokens from here up allow variables
X4�find_token(keyword$(),"DEFINE",def_token,dummy)
b3�find_token(keyword$(),"STOP",stop_token,dummy)
l1�find_token(keyword$(),"END",end_token,dummy)
v3�find_token(keyword$(),"EXIT",exit_token,dummy)
�6�find_token(keyword$(),"DEFPROC",proc_token,dummy)
�3�find_token(keyword$(),"PREP",prep_token,dummy)
�9�find_token(keyword$(),"NOTPREP",notprep_token,dummy)
�
�)� ------ Set up the dictionary ------
�dict_size=1000
�%� dict% dict_size,tok$(maxtokens)
�!dict%=3:dict%?2=&80
�
�-� ------ Find the available memory ------
�memfree=(�-�)-50000
�l� memfree<0 � null=�errorbox("Not enough memory available in 'Next' slot",0,1,-99):ș "Wimp_CloseDown":�
�maxtext%=0.83*memfree

code_size%=0.17*memfree



@� ------ Areas for storing messages, switch info etc; ------

 D� text% maxtext%,swdata% 12*maxsw%,switch_vals(maxsw%),m_msg% 12

*� switch_buf% 2*maxsw%+1

4'$swdata%=�12*maxsw%,�13):$m_msg%=""

>

H,� ------ Initialise the text area ------

R,!text%=1:text%!2=&B:text%!6=0:text%!10=0

\� st_msg% 12,end_msg% 12

f$st_msg%="1":$end_msg%="1"

p'mptr=1:� The current message number

zEtext_owner$="":� The current owner of any text in the text editor

�

�datavalid=�

�

�+� ------ Set up the program area ------

�� program% code_size%

�!program%=0

�program%!4=0

�
errflag=�

�

�-� ------ Set up the menu structure ------

�m_controom%=�crmenu

�� "#Number,$controom%(5)"

�m_contain=�crmenu
&� "Container,Use room>m_controom%"
m_chardes%=�crmenu
� "#CHANGE TO?,$charnum(2)"
$char_fname%=�crmenu
."� "#Filename:,$filename2%(11)"
8menu_fname%=�crmenu
B!� "#Filename:,$filename%(11)"
Lm_gotomsg%=�crmenu
V� "$m_msg%(12)"
`m_proc%=�crmenu
j� "#Number:,$proc%(4)"
tm_def%=�crmenu
~� "#Verb:,$def%(12)"
�m_exit%=�crmenu
�� "#Number:,$exit%(4)"
�m_listopts=�crmenu
�=� "#Display:,Vocabulary as numbers,Vocabulary as strings"
�m_import%=�crmenu
�� "#Filename:,$import%(11)"
� sw1=�crmenu:nxtsw=swdata%+12
�� "#Value:,$swdata%(12)"
�sw2=�crmenu:nxtsw=nxtsw+12
�� "#Value:,$nxtsw"
�sw3=�crmenu:nxtsw=nxtsw+12
�� "#Value:,$nxtsw"
sw4=�crmenu:nxtsw=nxtsw+12

� "#Value:,$nxtsw"
sw5=�crmenu:nxtsw=nxtsw+12
� "#Value:,$nxtsw"
(sw6=�crmenu:nxtsw=nxtsw+12
2� "#Value:,$nxtsw"
<sw7=�crmenu:nxtsw=nxtsw+12
F� "#Value:,$nxtsw"
Psw8=�crmenu:nxtsw=nxtsw+12
Z� "#Value:,$nxtsw"
dsw9=�crmenu:nxtsw=nxtsw+12
n� "#Value:,$nxtsw"
xsw10=�crmenu:nxtsw=nxtsw+12
�� "#Value:,$nxtsw"
�m_switch%=�crmenu
�Y� "#Switch,No switches,1>sw1,2>sw2,3>sw3,4>sw4,5>sw5,6>sw6,7>sw7,8>sw8,9>sw9,10>sw10"
�m_text%=�crmenu
��� "#MESSAGE,Insert,Overtype#,Cut   (Ctrl-X),Copy  (Ctrl-C),Paste (Ctrl-V)#,Previous  (f5),Next      (f6),First     (f7),Last      (f8),Goto msg#>m_gotomsg%,Edit switch#>m_switch%,Print this"
�m_prog%=�crmenu
��� "#Program Editor,Insert,Overtype#,Cut   (Ctrl-X),Copy  (Ctrl-C),Paste (Ctrl-V)#,Main,Procedure>m_proc%,Define>m_def%,Exit routine#>m_exit%,Print this,List options>m_listopts"
�m_vocab%=�crmenu
Ҟ� "#Vocabulary,Insert,Overtype#,Cut   (Ctrl-X),Copy  (Ctrl-C),Paste (Ctrl-V)#,Nouns,Verbs,Adjectives,Prepositions,Conjunctions,Specials,Noise#,Print this"
�pixmenu=�crmenu
�� "#Pictures,Print"
�progmenu=�crmenu
�,� "#Program,Print,Import#>m_import%,Run"
charmenu=�crmenu
2� "#CharSet,Save>char_fname%,Load>char_fname%"
vocabmenu=�crmenu
"� "#Vocabulary,Print"
,diskmenu=�crmenu
6-� "#Files,Save all>savehandle,Setup disk"
@facemenu=�crmenu
J� "#Actors,Print"
Tmiscmenu=�crmenu
^"� "#ALPS,Info>infohandle,Quit"
hmsg2%=�crmenu
r� "$st_msg%(6)"
|msg3%=�crmenu
�� "$end_msg%(6)"
�msg1%=�crmenu
�/� "#From/To?,Start msg>msg2%,End msg>msg3%"
�textmenu=�crmenu
�*� "#Text,Print>msg1%,Import>m_import%"
�objmenu=�crmenu
�'� "#Objects,Print,Import>m_import%"
�*mo_user5=�crmenu:ofl%=o_flags%+maxd%*3
�#� "#Description:,$o_flags%(13)"
�$mo_user4=�crmenu:ofl%=ofl%+maxd%
�� "#Description:,$ofl%(13)"
�$mo_user3=�crmenu:ofl%=ofl%+maxd%
�� "#Description:,$ofl%(13)"
$mo_user2=�crmenu:ofl%=ofl%+maxd%
� "#Description:,$ofl%(13)"
$mo_user1=�crmenu:ofl%=ofl%+maxd%
&� "#Description:,$ofl%(13)"
0$mo_user0=�crmenu:ofl%=ofl%+maxd%
:� "#Description:,$ofl%(13)"
Dm_objflag=�crmenu
N�� "#Flags,7 Light source,6 Takeable,5 Invisible,4 Scenery,3 Wearable,2 Being worn,1 User flag>mo_user1,0 User flag>mo_user0"
Xroommenu=�crmenu
b%� "#Rooms,Print,Import>m_import%"
l*mr_user6=�crmenu:rfl%=r_flags%+maxd%*2
v#� "#Description:,$r_flags%(13)"
�$mr_user5=�crmenu:rfl%=rfl%+maxd%
�� "#Description:,$rfl%(13)"
�$mr_user4=�crmenu:rfl%=rfl%+maxd%
�� "#Description:,$rfl%(13)"
�$mr_user3=�crmenu:rfl%=rfl%+maxd%
�� "#Description:,$rfl%(13)"
�$mr_user2=�crmenu:rfl%=rfl%+maxd%
�� "#Description:,$rfl%(13)"
�$mr_user1=�crmenu:rfl%=rfl%+maxd%
�� "#Description:,$rfl%(13)"
�$mr_user0=�crmenu:rfl%=rfl%+maxd%
�� "#Description:,$rfl%(13)"
�m_rmflag=�crmenu
�� "#Flags,7 Light,6 Visited,5 User (Trans)>mr_user5,4 User (Open)>mr_user4,3 User flag>mr_user3,2 User flag>mr_user2,1 User flag>mr_user1,0 User flag>mr_user0"
m_exitf=�crmenu
|� "#Flags,7 Invisible exit,6 Closed door,5 Open door,4 Locked door,3 Unlocked door,2 Blocked exit,1 Reserved,0 Reserved"
 
*�
4
>>� ------ Now we have the Procedures and Functions!! ------
H
R� �getmodeinfo
\� x,y,xeig,yeig,cols
f
mode=�
p
z1ș "OS_ReadModeVariable",mode,1 � ,,textcols%
�1ș "OS_ReadModeVariable",mode,2 � ,,textrows%
�text_maxllen%=textcols%-2
�,ș "OS_ReadModeVariable",mode,3 � ,,cols
�,ș "OS_ReadModeVariable",mode,4 � ,,xeig
�,ș "OS_ReadModeVariable",mode,5 � ,,yeig
�0ș "OS_ReadModeVariable",mode,7 � ,,scrnsize
�*ș "OS_ReadModeVariable",mode,11 � ,,x
�*ș "OS_ReadModeVariable",mode,12 � ,,y
�-scrw=((x+1)<<xeig)-1:scrh=((y+1)<<yeig)-1
��
�
�� �clear
�$�fill(odata%,(maxobs+1)*o_len,0)
$�fill(rdata%,(maxrms+1)*r_len,0)
%�fill(program%+4,code_size%-20,0)
'� PROCfill(initsave,initareasize,0)
$�
.
8
B� �return(x%,y%)
L�col(128+12):�col(7)
V>�centre(" Hit any key/button to return to the editor ",y%)
`�
jȗ X%,Y%,B%
t
� B%=0
~
��
�any=�(0)
�ȗ X%,Y%,B%
�� any>0 � B%>0
��
�
�� �centre(t$,r)
�#�(textcols%-� t$+1) � 2,r);t$;
��
�
�� �toUpper(text$)
�� I%,A$
�� I%=1 � � text$
� A$+=�(�(�text$,I%,1)) � &DF)
��
�=A$
�
�4� ------ General window handling routines ------
�
� �deletewindow(I%)

!q%=handle%(I%)
&handle%(I%)=handleSP%:handleSP%=I%
ș DeleteW,,q%
(wident$(I%)=""
2�
<
F� �loadtemplates(tfile$)
P
tmp%=0
Z"ș "Wimp_OpenTemplate",,tfile$
dtf_index%=0:�
n$mb_wident%="*"
xtș "Wimp_LoadTemplate",,q%+4,curbuff%,buffer%+maxbuf%,fontcounts%,mb_wident%,tf_index% � ,,curbuff%,,,,tf_index%
�+� tf_index%<>0 � �loadtemp($mb_wident%)
�� tf_index%=0
�ș "Wimp_CloseTemplate"
��
�
�� �loadtemp(wident$)
�8I%=�matchident(wident$):� I%<>-1 � �deletewindow(I%)
�-q%!68=spritearea%    : � user sprite area
��crwindow(q%+4,wident$)
��
�
�� �highlight(I%)
��
-ș SetCaret,handle%(I%),-1,0,0,&2000000,0
�

"+� �retitle(handle%,newtitle$,� handle%)
,index%=windowindex%
6�
@1  index%-=1: �index%<0 � 255,"Invalid window"
J� handle%(index%)=handle%
T!q%=handle%
^ș GetWI,,q%
hș DeleteW,,q%
rflags%=q%!60
|M� (flags% � 256)=0 � $(q%+76)=�newtitle$,11) � $(!(q%+76))=�newtitle$,39)
�ș CreateW,,q%+4 � handle%
�handle%(index%)=handle%
��
�
�� �retitle_text(title$)
�!block=texthandle
�ș GetWI,,block
�$(!(block+76))=�title$,39)
�block!16+=36
�block!8=block!16 - 36
�2ș ForceR,-1,block!4,block!8,block!12,block!16
��
�
� �crwindow(q%,wident$)
ș CreateW,,q% � handle%
Am%=handleSP%:handleSP%=handle%(handleSP%):handle%(m%)=handle%
&!q%=handle%
0ș GetW,,q%
:)currentwindow%=m%:wident$(m%)=wident$
Dcurrenticon%=-1
N�highlight(m%)
X�
b
l� �close(wind)
vi%=ni%+1
�
Ȏ wind �
�? � objhandle:i%=THEkeyicon:� icon%(i%)<>-1 �store_obj(optr)
�C � roomhandle: i%=THEdooricon:� icon%(i%)<>-1 �store_room(rptr)
� � texthandle
�   i%=texticon
�   �remove_markers
�   Ȏ text_owner$ �
�      � "texted" : �store_msg
�0     � "program" : � � text_ok � �store_prog
�/     � "vocab" : � � text_ok � �store_vocab
�     � "pix" : �store_pix
�   �
�   � � errflag �
4     text_owner$="":� release Text Editor window
5     �fill(text_block%,text_blocksize%,dummy_spc)
   �
 < � design: i%=THEcharicon:ș ForceR,-1,0,0,scrw+1,scrh+1
4�
>�� (text_owner$="program" � errflag � wind=texthandle) � (text_owner$="vocab" � errflag � wind=texthandle) � (text_owner$="pix" � errflag � wind=texthandle) � (text_owner$="texted" � errflag � wind=texthandle) �
H�
R  icon%(i%)=-1
\  !block=wind
f  ș CloseW,,block
p�
z�
�
�� �open(handle,x,y,w,d)
�!block=handle
�block!4=x:block!8=y-d
�block!12=x+w:block!16=y
�block!20=0:block!24=0
�block!28=-1
�ș OpenW,,block
��
�
�� �redraw(handle)
�block!0=handle
�ș RedrawW,0,block � more%
�info(block+4)
/� handle=texthandle � dummy=�redraw_text(�)
�
$
.� �forceR(handle)
8/� Force the given window ONLY to be redrawn
B�getw(handle)
L<ș ForceR,handle,scx%,scy%-(y1%-y0%),scx%+(x1%-x0%),scy%
V�
`
j� �matchident(A$)
t� A$="" � =-1
~� I%
�*I%=nh%+1:�I%=I%-1:�A$=wident$(I%)�I%=0
��A$=wident$(I%)�=I%�=-1
�
�� �getw(handle%)
�� handle%=iconbar%  �
�!!block=handle%:șGetW,0,block
�4�info(block+4):bhandle%=block!28:flags%=block!32
�ontop=flags% � &20000
��
�
�� �info(b)
�7x0%=!b:y0%=b!4:x1%=b!8:y1%=b!12:scx%=b!16:scy%=b!20
bx%=x0%-scx%:by%=y1%-scy%

/gwxl%=b!24:gwyb%=b!28:gwxr%=b!32:gwyt%=b!36
�

(� �getpointer
2șGetP,0,block
<Zmousex%=!block:mousey%=block!4:b%=block!8:handle%=block!12:icon%=block!16:ob%=block!20
F�
P
ZF� �sys_claiminputfocus(window%,icon%,xofst%,yofst%,height%,index%)
d:șSetCaret, window%,icon%,xofst%,yofst%,height%,index%
n�
x
�R� �sys_getcaretposition(� window%,� icon%,� xofst%,� yofst%,� height%,� indx%)
�șGetCaret,0,b
�dwindow%=!block: icon%=block!4: xofst%=block!8: yofst%=block!12: height%=block!16: indx%=block!20
��
�
�� �cursor(x%,y%)
�^�sys_claiminputfocus(texthandle,-1,(x%-1)*chX%,-y%*lsY%-9*ypixel%,&1000000 �10*ypixel%,-1)
��
�
�� �text_menubox
�Ȏ text_owner$ �
�� "texted"
�  tick$="message"
  null = �tick_message
B  ș CreateM,0,m_text%,mousex%-64,mousey%:claimmenu$="message"
  theLastMenu = m_text%
"
,� "program"
6  tick$="program"
@  null = �tick_program
JB  ș CreateM,0,m_prog%,mousex%-64,mousey%:claimmenu$="program"
T  theLastMenu = m_prog%
^
h
� "vocab"
r  tick$="vocab"
|  null = �tick_vocab
�A  ș CreateM,0,m_vocab%,mousex%-64,mousey%:claimmenu$="vocab"
�  theLastMenu = m_vocab%
�
��
�
��
�
�<� �checkmouse(mousex%,mousey%,button%,handle%,icon%,ob%)
��handle%=-1 � �
��getw(handle%)
��handle%=ALPSmain �
�  �icon%<>-1 �
�#�    icon% -= firstIconBarIcon%

    Ȏ� �
0      �(button%�1)=1 : � adjust does nothing
<      �(button%�2)=2 : void=�("FNmenu_"+iconbar$(icon%))
&)      �(button%�4)=4 : �openup(icon%)
0	    �
:  �
D�
N  � handle%=iconbar% �
X  � The RISC OS icon bar
b  Ȏ � �
l)    � (button%�2)=2 : void=�menu_misc
v    � (button%�4)=4
�C    � icon%=firstIconBarIcon% � �open(ALPSmain,400,800,600,600)
�  �
�   �
�    index%=windowindex%
�
     �
�5      index%-=1: �index%<0 � 255,"Invalid window"
�"     � handle%(index%)=handle%
�+    void=�("FNbutton_"+wident$(index%))
�  �
��
��
�
�)� �userkeypressed(handle%,icon%,key%)
�getw(handle%)
�index%
index%=windowindex%
 �
*index%-=1: �index%<0 � �
4�handle%(index%)=handle%
>)void=�("FNkeypress_"+wident$(index%))
H�
R
\ � �menuselect(item0%,item1%)
f#ș "Wimp_GetPointerInfo",,block
pbuTTon = block!8
z&void=�("FNmenuselect_"+claimmenu$)
�� buTTon=1 �
�:   � *** ADJUST pressed so keep the menu structure ***
�    null = �("FNtick_"+tick$)
�#   ș CreateM,0,theLastMenu,0,0
��
�   claimmenu$=""
��
��
�
�*� �update(handle%,ux0%,uy0%,ux1%,uy1%)
�H!block=handle%:block!4=ux0%:block!8=uy0%:block!12=ux1%:block!16=uy1%
�-ș UpdateW,0,block � more%:�info(block+4)
��

� �openup(icon%)
� icon%(icon%)=-1 �
$�  � icon%<>diskicon � icon%<>texticon � icon%<>arcicon � icon%<>swapicon � icon%<>progicon � icon%<>vocabicon � icon%<>eyeicon � icon%(icon%)=icon%
.   Ȏ icon% �
8     � diskicon:
B6          ș CreateM,0,diskmenu,mousex%-64,mousey%
L6          � loaded$<>"" � f$=path$ � f$="AlpsFile"
V/          �changeicon(savehandle,2,f$,void)
`?          claimmenu$="disk35":theLastMenu=diskmenu:tick$=""
j     � WHEN THEmiscicon:
t<          � *********** do nothing for this icon *******
~     � texticon:
�           � text_owner$="" �
�@            �retitle(texthandle,"MESSAGE "+�mptr,texthandle)
�1            �open(texthandle,0,1000,scrw,400)
�.            text_owner$="texted":text_ok=�
�            �show_msg(mptr)
�          �
�            � 7
�          �
�     � THEdooricon:
�E          �open(handle%(�matchident("roomedit")),0,720,1280,1040)
�!          �restore_room(rptr)
�     � THEkeyicon:
E          �open(handle%(�matchident("objected")),850,560,800,680)

           �restore_obj(optr)
     � progicon:
           � text_owner$="" �
(X            �retitle(texthandle,"PROGRAM: "+prog$(prg_sel%)+" "+progval$,texthandle)
21            �open(texthandle,0,1000,scrw,400)
</            text_owner$="program":text_ok=�
F(            �list(prg_sel%,progval$)
P          �
Z            � 7
d          �
n     � THEcharicon:
xE          �open(handle%(�matchident("chrdesign")),0,560,1280,860)
�$          �display_chr(cur_chr%)
�6          �changeicon(design,64,�(cur_chr%),dummy)
�     � vocabicon:
�           � text_owner$="" �
�N            �retitle(texthandle,"VOCABULARY: "+voc$(voc_sect%),texthandle)
�1            �open(texthandle,0,1000,scrw,400)
�-            text_owner$="vocab":text_ok=�
�&            �list_vocab(voc_sect%)
�          �
�            � 7
�          �
�     � helpicon:
�?          �open(handle%(�matchident("HELP")),0,500,960,400)
     � eyeicon:
           � text_owner$="" �
:            �retitle(texthandle,"PICTURES",texthandle)
"1            �open(texthandle,0,1000,scrw,400)
,+            text_owner$="pix":text_ok=�
6            �list_pix
@          �
J            � 7
T          �
^)     � arcicon:dummy=�keypress_status
h     � swapicon
r-     datavalid=� datavalid:� 7:�swap_data
|     � datavalid �
�8      �changeicon(ALPSmain,swapicon,"swap",swapicon)
�
     �
�:      �changeicon(ALPSmain,swapicon,"swap_x",swapicon)
�
     �
�     �forceR(ALPSmain)
�
     �
��
��
�
�
�J�  ------ `button` routines to deal with clicks in given window ------
�
�� �button_texted
 �mx%,my%
 � button%<>2 �
 �getpointer
 &)mx%=(mousex%-bx%+chX%�4) �(�(chX%-1))
 0-my%=(mousey%-by%) - ((mousey%-by%) �lsY%)
 :text_col%=1+mx% �chX%
 D$text_row%=-((mousey%-by%) �lsY%)
 N-� text_row%>last_row% text_row%=last_row%
 XK� text_col%>text_rowlen%(text_row%) text_col%=text_rowlen%(text_row%)+1
 b� text_col%<1 text_col%=1
 l�
 v
 �Ȏ button% �
 �� 2
 ��text_menubox
 �� 4
 ��locate_ptr
 � �cursor(text_col%,text_row%)
 �� 1
 ��insert_marker
 ��
 �=0
 �
 �� �insert_marker
 �� text_owner$<>"pix" �
!�locate_ptr
!
� mrk<2 �
!mark(mrk)=text_ptr%
! )col(mrk)=text_col%:row(mrk)=text_row%
!*asc(mrk)=?text_ptr%
!4/� asc(mrk)=13 � �23,dummy_cr � �23,chr(mrk)
!>?os_block=asc(mrk)
!Hș "OS_Word",&A,os_block
!R� R%=1 � 8
!\row_value=R%?os_block
!f� row_value � &FF
!p�
!z=� asc(mrk)=13 � ?text_ptr%=dummy_cr � ?text_ptr%=chr(mrk)
!�h�update(texthandle,chX%*(text_col%-1),-(text_row%+1)*lsY%,chX%*(text_col%-1)+chX%,-(text_row%)*lsY%)
!�dummy=�redraw_text(�)
!�
mrk+=1
!� �cursor(text_col%,text_row%)
!��
!��
!��
!�
!�� �locate_ptr
!�text_ptr%=text_block%
!�� text_row%>0 �
!�  � R%=0 � text_row%-1
!�#    text_ptr%+=text_rowlen%(R%)
"7    � text_rowlen%(R%)<text_maxllen% � text_ptr%+=1
"  �
"�
"$text_ptr%+=text_col%-1
"./� text_ptr%>text_end% � text_ptr%=text_end%
"8�
"B
"L� �button_objected
"VȎ icon% �
"`� 0:
"j
"t2� First set the 'tick' bits for each menu item
"~null = �tick_objected
"�Cș CreateM,0,m_objflag,mousex%-64,mousey%:claimmenu$="objected"
"�tick$="objected"
"�theLastMenu = m_objflag
"�
"�� 5:�first_obj
"�� 6:�last_obj
"�� 27:�next_obj
"�� 16:�prev_obj
"�� 20:�fwd_obj(10)
"�� 21:�rewind_obj(10)
"�� 17
"��store_obj(optr)
#%optr=�(�geticondata(objhandle,7))
#
� optr<1 � optr=1
#� optr>maxobs � optr=maxobs
#�restore_obj(optr)
#(� 22:last_object=optr
#2	� 26:
#<Dș CreateM,0,m_contain,mousex%-64,mousey%:claimmenu$="container"
#Ftick$=""
#PtheLastMenu = m_contain
#Z
#d�
#n4� optr>last_object last_object=optr:data_saved=�
#x=0
#�
#�� �button_roomedit
#�Ȏ icon% �
#�� 1:
#�tick$="roomedit"
#�null = �tick_roomedit
#�Bș CreateM,0,m_rmflag,mousex%-64,mousey%:claimmenu$="roomedit"
#�theLastMenu = m_rmflag
#�
#�� 5:�first_room
#�� 6:�last_room
#�� 7:�next_room
#�� 8:�prev_room
$� 9:�fwd_room(10)
$� 10:�rewind_room(10)
$� 11
$"�store_room(rptr)
$,'rptr=�(�geticondata(roomhandle,33))
$6� rptr<1 � rptr=1
$@� rptr>maxrms � rptr=maxrms
$J�restore_room(rptr)
$T
$^� 12:last_room=rptr
$h�
$r0� rptr>last_room last_room=rptr:data_saved=�
$|
$�8� Now check for clicking menu on selected EXITR icon
$�
$�
Ȏ � �
$�
$�� icon%>53 � icon%<70
$�
$�oldrmicon%=icon%
$�null = �tick_exitedit
$�tick$="exitedit"
$�Aș CreateM,0,m_exitf,mousex%-64,mousey%:claimmenu$="exitedit"
$�theLastMenu = m_exitf
$�
$��
%=0
%
%� �button_chrdesign
%&
Ȏ � �
%0� icon%>=0 � icon%<64
%:)  �set_icon(design,icon%,&50000000,0)
%D  �write_chr(cur_chr%)
%N  �set_icon(design,64,0,0)
%X� icon%=66
%b  cur_chr%+=1
%l+  � cur_chr%>max_chr% cur_chr%=max_chr%
%v.  �changeicon(design,64,�(cur_chr%),icon%)
%�  �display_chr(cur_chr%)
%�� icon%=67
%�  cur_chr%-=1
%�  � cur_chr%<32 cur_chr%=32
%�.  �changeicon(design,64,�(cur_chr%),icon%)
%�  �display_chr(cur_chr%)
%�� icon%=68
%�D  ș CreateM,0,m_chardes%,mousex%-64,mousey%:claimmenu$="chrdef"
%�'  theLastMenu = m_chardes%:tick$=""
%��
%�=0
%�
%�
&� �button_info
&� icon%=5 �
&�close(infohandle)
& �
&*=0
&4
&>� �button_saveas
&HȎ icon% �
&R/� 0 : �save_all(�geticondata(savehandle,2))
&\� 1 : �getw(savehandle)
&f.         dummy$=�geticondata(savehandle,1)
&p*         block!4=5:block!8=block!8+bx%
&z"         block!12=block!12+by%
&�"         block!16=block!16+bx%
&�"         block!20=block!20+by%
&�B         block!24=0:block!28=0:block!32=scrw+1:block!36=scrh+1
&�%         ș "Wimp_DragBox",,block
&��
&�=0
&�
&�� �button_Setup
&�Ȏ icon% �
&�� 0
&�C� 1:�create_dirs(�geticondata(setuph,2),�geticondata(setuph,5))
&��
&��close(setuph)
'ȗ ȓ 0,0,scrw,scrh
'=0
'
'$K�  ------ `keypress` routines deal with pressing key `key%` in a window
'.
'8� �keypress_texted
'B
Ȏ � �
'L-� key%=13:�newline:data_saved=�:text_ok=�
'V^� (key%=&186 � text_owner$="texted"):�next_msg:�forceR(texthandle):text_row%=0:text_col%=1
'`^� (key%=&185 � text_owner$="texted"):�prev_msg:�forceR(texthandle):text_row%=0:text_col%=1
'j_� (key%=&187 � text_owner$="texted"):�first_msg:�forceR(texthandle):text_row%=0:text_col%=1
't^� (key%=&188 � text_owner$="texted"):�last_msg:�forceR(texthandle):text_row%=0:text_col%=1
'~>� key%=24:�cut(mark(0),mark(1),picbuf):�forceR(texthandle)
'�>� key%=3:�copy(mark(0),mark(1),picbuf):�forceR(texthandle)
'�:� key%=22:�paste(text_ptr%,picbuf):�forceR(texthandle)
'�1� key%=26:�remove_markers:�forceR(texthandle)
'�� key%=&189:�insert_marker
'�� key%=&18F:�up
'�� key%=&18E:�down
'�� key%=&18D:�right
'�)� key%=&18A:� I%=1 � tab_set:�right:�
'�(� key%=&19A:� I%=1 � tab_set:�left:�
'�� key%=&18C:�left
'�3� key%=&1AB:�delete_line:data_saved=�:text_ok=�
'�3� key%=&1ED:�insert_line:data_saved=�:text_ok=�
(� key%=&1AC:�left_end
(
� key%=&1AD:�right_end
(:� key%=&18B:�right:�delete_char:data_saved=�:text_ok=�
(%� key%=&1CD:overwrite=� overwrite
((2� key%=127:�delete_char:data_saved=�:text_ok=�
(2� (key%>31) � (key%<126)
(<<� overwrite � �overwrite_char(key%) � �insert_char(key%)
(Fdata_saved=�:text_ok=�
(P ș "Wimp_ProcessKey",key%
(Z�
(d
(n �cursor(text_col%,text_row%)
(x=0
(�
(�� �check_scroll_up
(��getw(texthandle)
(�Ty%= (text_row%+1)*lsY%
(�D� (y1%-Ty%)<(y0%+scy%) � block!24 =block!24-lsY%:ș OpenW,,block
(��
(�
(�� �check_scroll_down
(��getw(texthandle)
(�Tr%=-scy% � lsY%
(�?� text_row%-1<Tr% � block!24 =block!24+lsY%:ș OpenW,,block
(��
(�
)� �check_scroll_left
)�getw(texthandle)
)Rx%=(text_col%-1)*chX%
)"D� (x1%-Rx%)<(x0%-scx%) � block!20 =block!20+chX%:ș OpenW,,block
),�
)6
)@� �check_scroll_right
)J�getw(texthandle)
)TLe%=scx% � chX%
)^?� text_col%-1<Le% � block!20 =block!20-chX%:ș OpenW,,block
)h�
)r
)|� �keypress_saveas
)�Q� key%=13 � �save_all(�geticondata(savehandle,2)) � ș "Wimp_ProcessKey",key%
)�=0
)�
)�� �keypress_objected
)�� key%=13 � icon%=7 �
)�  �store_obj(optr)
)�+  optr=�(�geticondata(objhandle,icon%))
)�  � optr<1 � optr=1
)�!  � optr>maxobs � optr=maxobs
)�  �restore_obj(optr)
)��
)�
)�
Ȏ key% �
*$� 13,&18E:� Return or down arrow
*� icon%<15 �
*  icon%+=1
*&�
*0
  icon%=7
*:�
*D� &18F:� Up arrow
*N� icon%>7 �
*X  icon%-=1
*b�
*l  icon%=15
*v�
*� ș "Wimp_ProcessKey",key%
*��
*�Q�sys_claiminputfocus(objhandle,icon%,0,0,-1,�(�geticondata(objhandle,icon%)))
*�=0
*�
*�� �keypress_roomedit
*�
Ȏ key% �
*�� 13,&18E,&18F
*�
*�� key%=13 � icon%=33 �
*�  �store_room(rptr)
*�,  rptr=�(�geticondata(roomhandle,icon%))
*�  � rptr<1 � rptr=1
+!  � rptr>maxrms � rptr=maxrms
+  �restore_room(rptr)
+�
+ 
+*� key%=13 � key%=&18E �
+4
Ȏ � �
+>� icon%=37:newicon%=71
+H� icon%=71:newicon%=38
+R� icon%=69:newicon%=33
+\� icon%<37:newicon%=icon%+1
+f-� (icon%>37 � icon%<54):newicon%=icon%+16
+p-� (icon%>53 � icon%<69):newicon%=icon%-15
+z�
+��
+�
+�� key%=&18F �
+�
Ȏ � �
+�� icon%=71:newicon%=37
+�� icon%=38:newicon%=71
+�� icon%=33:newicon%=69
+�� icon%>33:newicon%=icon%-1
+�-� (icon%>37 � icon%<54):newicon%=icon%-16
+�-� (icon%>53 � icon%<69):newicon%=icon%+15
+��
+��
+�
, ș "Wimp_ProcessKey",key%
,�
,Y�sys_claiminputfocus(roomhandle,newicon%,0,0,-1,�(�geticondata(roomhandle,newicon%)))
,$=0
,.
,8� �keypress_status
,B�col(128+2)
,L
� 26,4,12
,V�col(9):�col(128+7)
,`<�centre(�27," ")+"System Status Information"+�28," "),0)
,j�col(128+2):�col(7)
,t�status
,~�col(128+7):�col(9)
,�5�centre(�31," ")+"Integer Variables"+�32," "),10)
,��col(128+2):�col(7)
,�	�lvar
,��:�return(18,31):�
,�
� 26,5
,�"ș ForceR,-1,0,0,scrw+1,scrh+1
,�=0
,�
,�� �keypress_chrdef
,�� key%=13 � icon%=64 �
,�*cur_chr%=�(�geticondata(design,icon%))
,��display_chr(cur_chr%)
-,�changeicon(design,64,�(cur_chr%),icon%)
-
�
-*� key%<>13 � ș "Wimp_ProcessKey",key%
-�
-(=0
-2
-<� �keypress_Setup
-F0� key%=&18E � key%=13 � icon%=2 � newicon%=5
-P7� key%=13 � icon%=5 � icon%=1:void=�button_Setup:=0
-Z&� key%=&18E � icon%=5 � newicon%=2
-d&� key%=&18F � icon%=5 � newicon%=2
-n&� key%=&18F � icon%=2 � newicon%=5
-xD� key%<>13 � key%<>&18E � key%<>&18F � ș "Wimp_ProcessKey",key%
-�Q�sys_claiminputfocus(setuph,newicon%,0,0,-1,�(�geticondata(setuph,newicon%)))
-�=0
-�
-�A� ------ The `menu` routines to open the selected menu ------
-�
-�� �menu_
-�=0
-�
-�� �menu_swap
-�=0
-�
-�� �menu_arclogo
-�=0
.
.� �menu_info
.=0
."
.,
.6� �menu_disk35
.@,ș CreateM,0,diskmenu,mousex%-64,mousey%
.J,� loaded$<>"" � f$=path$ � f$="AlpsFile"
.T%�changeicon(savehandle,2,f$,void)
.^theLastMenu= diskmenu
.h claimmenu$="disk35":tick$=""
.r=0
.|
.�
.�� �menu_key
.�+ș CreateM,0,objmenu,mousex%-64,mousey%
.�theLastMenu = objmenu
.�claimmenu$="key":tick$=""
.�=0
.�
.�� �menu_door
.�,ș CreateM,0,roommenu,mousex%-64,mousey%
.�theLastMenu = roommenu
.�claimmenu$="door":tick$=""
.�=0
.�
/� �menu_quill
/$end_msg%=�(�maxmsg)
/,ș CreateM,0,textmenu,mousex%-64,mousey%
/&theLastMenu = textmenu
/0claimmenu$="quill":tick$=""
/:=0
/D
/N
/X� �menu_listing
/b,ș CreateM,0,progmenu,mousex%-64,mousey%
/ltheLastMenu = progmenu
/v!claimmenu$="listing":tick$=""
/�=0
/�
/�
/�� �menu_chardes
/�=0
/�,ș CreateM,0,charmenu,mousex%-64,mousey%
/�theLastMenu = charmenu
/�!claimmenu$="chardes":tick$=""
/�=0
/�
/�� �menu_vocab
/�-ș CreateM,0,vocabmenu,mousex%-64,mousey%
/�theLastMenu = vocabmenu
0$claimmenu$="vocabulary":tick$=""
0=0
0
0 � �menu_face
0*,ș CreateM,0,facemenu,mousex%-64,mousey%
04theLastMenu = facemenu
0> claimmenu$="actors":tick$=""
0H=0
0R
0\� �menu_misc
0fnull = �tick_misc
0p<ș CreateM,0,miscmenu,mousex%-64,�menuHeight(miscmenu,1)
0ztheLastMenu = miscmenu
0�"claimmenu$="misc":tick$="misc"
0�=0
0�
0�� �menu_help
0�=0
0�
0�
0�� �menu_eye
0�+ș CreateM,0,pixmenu,mousex%-64,mousey%
0�theLastMenu = pixmenu
0�claimmenu$="eye":tick$=""
0�=0
0�
1
1J� `menuselect` functions - called when a selection is made from a menu
1D� `item0%` is the number of selection from first menu (0,1,2...)
1$E� `item1%` is the number of selection from second menu (0,1,2...)
1.
18� �menuselect_
1B=0
1L
1V
1`� �menuselect_message
1j� changed_msg
1t
1~Ȏ item0% �
1�
  � -1
1�!  � 0,1:overwrite=� overwrite
1�&  � 2:�cut(mark(0),mark(1),picbuf)
1�'  � 3:�copy(mark(0),mark(1),picbuf)
1�"  � 4:�paste(text_ptr%,picbuf)
1�  � 5:�prev_msg
1�  � 6:�next_msg
1�  � 7:�first_msg
1�  � 8:�last_msg
1�  � 9:�goto_msg(�($m_msg%))
1�
  � 10
1�  � item1%>-1 �
2    � item1%=0 �
2
      � I%=0 � maxsw%
2        switch_vals(I%)=0
2      � I%
2(	    �
227    switch_vals(item1%)=�($(swdata%+12*(item1%-1)))
2<7    � item1%>switch_vals(0) � switch_vals(0)=item1%
2F6    � switch_vals(0) stores the number of switches
2P  �
2Z
  � 11
2d
  *FX3,10
2n  �print_msg(mptr)
2x  *FX3,0
2��
2��forceR(texthandle)
2�� changed_msg �
2�text_row%=0:text_col%=1
2��cursor(1,0)
2��
2�� claimmenu$=""
2�=0
2�
2�� �cut(start,end,buf)
2�� mrk<2 � � 1,error$(29)
2�Q� end<start � Ȕ start,end:Ȕ col(0),col(1):Ȕ row(0),row(1):Ȕ asc(0),asc(1)
2�cliplen=end-start+1
3�move(start,buf,cliplen)
3&� SYS"Wimp_CloseDown":MODE 12:STOP
3;�move(end+1,start,text_end%-end):� was +1 until 16.6.89
3"&?buf=asc(0):buf?(cliplen-1)=asc(1)
3,text_end%=text_end%-cliplen
36� asc(1)=0 � text_end%+=1
3@+� Restore end marker if it has been cut
3J3� text_end%<text_block% � text_end%=text_block%
3T?text_end%=0
3^last_row%=�find_lastrow
3h� I%=0 � last_row%
3rtext_rowlen%(I%)=��row(I%)
3|�
3�mrk=0:mark()=+0
3�/� text_row%>last_row% � text_row%=last_row%
3�M� text_col%>text_rowlen%(text_row%) � text_col%=text_rowlen%(text_row%)+1
3�,�locate_ptr:�cursor(text_col%,text_row%)
3�data_saved=�:text_ok=�
3��
3�
3�� �copy(start,end,buf)
3�� mrk<2 � � 1,error$(29)
3�Q� end<start � Ȕ start,end:Ȕ col(0),col(1):Ȕ row(0),row(1):Ȕ asc(0),asc(1)
3�cliplen=end+1-start
3��move(start,buf,cliplen)
3�&?buf=asc(0):buf?(cliplen-1)=asc(1)
4-?start=asc(0):?end=asc(1):mrk=0:mark()=+0
4�
4
4&� �paste(to,from)
40 � cliplen=0 � � 1,error$(30)
4:'�move(to,to+cliplen,text_end%-to+1)
4D�move(from,to,cliplen)
4Ntext_end%+=cliplen
4Xlast_row%=�find_lastrow
4b� I%=0 � last_row%
4ltext_rowlen%(I%)=��row(I%)
4v�
4�,�locate_ptr:�cursor(text_col%,text_row%)
4�data_saved=�:text_ok=�
4��
4�
4�� �menuselect_program
4�
errflag=�
4�� item0%>4 � item0%<9 �
4��remove_markers
4�� � text_ok � �store_prog
4�prg_sel%=item0%-3
4�text_row%=0:text_col%=1
4��cursor(1,0)
4��
5
5Ȏ item0% �
5� 0,1:overwrite=� overwrite
5 $� 2:�cut(mark(0),mark(1),picbuf)
5*%� 3:�copy(mark(0),mark(1),picbuf)
54 � 4:�paste(text_ptr%,picbuf)
5>� 5:progval$=""
5H� 6:progval$=$proc%
5R � 7:progval$=�toUpper($def%)
5\� 8:progval$=$exit%
5f� 9:�print_prog_seg
5p� 10:�listo
5z�
5�
5�� (item0%>4 � item0%<9) �
5� � � errflag �
5�  �list(item0%-3,progval$)
5�=  �retitle_text("PROGRAM: "+prog$(prg_sel%)+" "+progval$)
5�  �forceR(texthandle)
5� �
5��
5�� (item0%>1 � item0%<5) �
5��forceR(texthandle)
5��
5�� item0%=10 �
5�� � text_ok � �store_prog
6� � errflag �
6text_row%=0:text_col%=1
6�cursor(1,0)
6$�list(prg_sel%,progval$)
6.�forceR(texthandle)
68�
6B�
6L=0
6V
6`� �menuselect_vocab
6j6� Make a selection from the vocabulary editor menu
6tȎ item0% �
6~� 0,1:overwrite=� overwrite
6�$� 2:�cut(mark(0),mark(1),picbuf)
6�%� 3:�copy(mark(0),mark(1),picbuf)
6� � 4:�paste(text_ptr%,picbuf)
6�� 5,6,7,8,9,10,11
6�$�remove_markers:� Added 23.08.89
6�� � text_ok � �store_vocab
6�� � errflag �
6�voc_sect%=item0%-4
6��list_vocab(voc_sect%)
6�text_row%=0:text_col%=1
6��cursor(1,0)
6�1�retitle_text("VOCABULARY: "+voc$(voc_sect%))
7�
7
� 12:�print_prog_seg
7�
7Ȏ item0% �
7(� 2,3,4,5,6,7,8,9,10,11
72�forceR(texthandle)
7<�
7F� claimmenu$=""
7P=0
7Z
7d� �menuselect_exitedit
7nxerr%=�
7x� oldrmicon%<>0 �
7�)  ptr%=(rdata%+rptr*r_len+oldrmicon%)
7�  flags%=?ptr%
7�  cl_door%=flags% � &40
7�  op_door%=flags% � &20
7�  lk_door%=flags% � &10
7�  unlk_door%=flags% � &8
7�%  � cl_door% � item0%=2 � xerr%=�
7�%  � op_door% � item0%=1 � xerr%=�
7�%  � op_door% � item0%=3 � xerr%=�
7�'  � unlk_door% � item0%=3 � xerr%=�
7�%  � lk_door% � item0%=4 � xerr%=�
7�%  � lk_door% � item0%=2 � xerr%=�
7�  � xerr% �
8    � 7
8  �
8#  ?ptr%=?ptr% � (&80 >> item0%)
8"  � � lk_door% � item0%=3 �
8,+    ?ptr%=?ptr% � %11011111 � %01000000
86  �
8@  � lk_door% � item0%=1 �
8J    ?ptr%=?ptr% � %11101111
8T  �
8^  �
8h  data_saved=�
8r�
8|� claimmenu$=""
8�=0
8�
8�� �menuselect_disk35
8�Ȏ item0% �
8�	  � 0
8�(    path$=�geticondata(savehandle,2)
8�$    ș "OS_File",5,path$ � ftype
8�e    � ftype=0 � �save_all(path$) � �ensure(item0%,"This file exists. Do you want to replace it?")
8�	  � 1
8�*    �load_bits(�geticondata(setuph,2))
8�    �setup_disk(item0%)
8��
8�&icon%(diskicon)=-1:� claimmenu$=""
9=0
9
9
9&
90� �menuselect_objected
9:+old_flags%=�(�geticondata(objhandle,8))
9D+new_flags%=old_flags% � (&80 >> item0%)
9N0�changeicon(objhandle,8,�(new_flags%),dummy)
9X� claimmenu$=""
9b=0
9l
9v� �menuselect_container
9�Ȏ item0% �
9�� 0
9�container=� container
9�� container �
9�.�changeicon(objhandle,26,"SIZE <C>",dummy)
9��
9�*�changeicon(objhandle,26,"SIZE",dummy)
9��
9�� 1
9�cont_room=�($controom%)
9��
9�� data_saved=FALSE
9�� claimmenu$=""
:=0
:
:� �menuselect_roomedit
: -old_flags%=�(�geticondata(roomhandle,34))
:*+new_flags%=old_flags% � (&80 >> item0%)
:42�changeicon(roomhandle,34,�(new_flags%),dummy)
:>� claimmenu$=""
:H=0
:R
:\� �menuselect_key
:fȎ item0% �
:p  � 0:�print_objs
:z$  � 1:�import_obj("O."+$import%)
:��
:�� claimmenu$=""
:�=0
:�
:�� �menuselect_door
:�Ȏ item0% �
:�  � 0:�print_rooms
:�&  � 1:�import_rooms("R."+$import%)
:��
:�� claimmenu$=""
:�=0
:�
:�� �menuselect_quill
;Ȏ item0% �
;  � 0:�print_text
;%  � 1:�import_text("T."+$import%)
;$&         �load_dict("D."+$import%)
;.�
;8� claimmenu$=""
;B=0
;L
;V� �menuselect_listing
;`Ȏ item0% �
;j  � 0:�print_program
;t  � 1:�convert($import%)
;~  � 2:�run
;��
;�� claimmenu$=""
;�=0
;�
;�� �menuselect_chardes
;�2� When `menu` is clicked on the `chardes` icon
;�Ȏ item0% �
;�5� 0:�save_chars("<Users$Resources>."+$filename2%)
;�� 1
;�,�("PRINT <Alps$Resources>."+$filename2%)
;��display_chr(cur_chr%)
;�"ș ForceR,-1,0,0,scrw+1,scrh+1
<�
<
� claimmenu$=""
<=0
<
<(� �menuselect_chrdef
<2K� When button is clicked on the `SELECT` icon in the char design window
<<chr%=�($charnum)
<F � chr%>31 � chr%<=max_chr% �
<P  cur_chr%=chr%
<Z.  �changeicon(design,64,�(cur_chr%),icon%)
<d  �display_chr(cur_chr%)
<n�
<x� claimmenu$=""
<�=0
<�
<�� �menuselect_vocabulary
<�-� When SELECT pressed in small vocab menu
<�Ȏ item0% �
<�� 0:�print_vocab
<��
<�� claimmenu$=""
<�=0
<�
<�� �menuselect_actors
<�2� SELECT pressed in small 'face' menu (Actors)
<�Ȏ item0% �
=� 0:�print_actors
=�
=� claimmenu$=""
="=0
=,
=6� �menuselect_eye
=@3� SELECT pressed in small 'eye' menu (Pictures)
=JȎ item0% �
=T� 0:�print_pix
=^�
=h� claimmenu$=""
=r=0
=|
=�� �menuselect_misc
=�Ȏ item0% �
=� � 1: � quit
=�  �quit(4)
=� �
=�icon%(THEmiscicon)=-1
=�=0
=�
=�
=�D� ------ Utility procedures and functions for each editor ------
=�
=�0� ------ Character designer utilities ------
=�
>� �write_chr(C%)
>� 23,C%
>� row%=0 � 7
>&row_value=0
>0� col%=0 � 7
>:-dummy=�(�geticondata(design,row%*8+col%))
>Dbit=flags% >>> 28
>N,� bit=7 � row_value=row_value+2^(7-col%)
>X
� col%
>b� row_value
>l
� row%
>v�
>�
>�� �display_chr(C%)
>�?os_block=C%
>�ș "OS_Word",&A,os_block
>�� R%=1 � 8
>�row_value=R%?os_block
>�� C%=0 � 7
>�bit=row_value � 2^(7-C%)
>�"row_value=row_value � 2^(7-C%)
>�q� bit>0 �set_icon(design,(R%-1)*8+C%,&70000000,&F0000000) � �set_icon(design,(R%-1)*8+C%,&20000000,&F0000000)
>�� C%
>�� R%
>��
?
?� �save_chars(f$)
?f%=�(f$)
? � ch%=32 � max_chr%
?*�#f%,23:�#f%,ch%
?4?os_block=ch%
?>ș "OS_Word",&A,os_block
?H� I%=1 � 8
?R�#f%,I%?os_block
?\� I%
?f	� ch%
?p�#f%
?z �("SETTYPE "+f$+" BBC Font")
?��
?�
?�� �save_pal(f$)
?�� ch%,col1,rgb
?��readPalette
?�ch%=� f$
?�� col=0 � 19
?�� rgb=1 � 3
?��#ch%,rgb(col,rgb)
?�	� rgb
?�	� col
?�	�#ch%
?�� "SETTYPE "+f$+" FED"
@�
@
@
@$
@.)� ------ Text editor utilities ------
@8
@B� �left
@L� text_col%<>1 �
@V  text_ptr%-=1
@`  text_col%-=1
@j�
@t  � text_row%<>0 �
@~    text_row%-=1
@�+    text_col%=text_rowlen%(text_row%)+1
@�>    � text_rowlen%(text_row%)<text_maxllen% � text_ptr%-=1
@�    �getw(texthandle)
@�=    block!20=(text_col%-1)*chX%-(x1%-x0%):ș OpenW,,block
@�  �
@�    � 7
@�  �
@��
@��check_scroll_right
@��
@�
@�� �left_end
Atext_ptr%-=(text_col%-1)
A
text_col%=1
A�getw(texthandle)
Ablock!20=0:ș OpenW,,block
A(�
A2
A<� �right
AFA� text_row%=last_row% � text_col%=text_rowlen%(text_row%)+1 �
AP	  � 7
AZ�
Ad0  � This '<' was changed to '<=' on 23.08.89
An/  � text_col%<=text_maxllen% � text_ptr%+=1
Ax  text_col%+=1
A�D  � text_col%>text_rowlen%(text_row%)+1 � text_row%<>last_row% �
A�     text_col%=1:text_row%+=1
A�    �getw(texthandle)
A�"    block!20=0:ș OpenW,,block
A�  �
A��
A��check_scroll_left
A��
A�
A�� �right_end
A�4text_ptr%+=(text_rowlen%(text_row%)-text_col%)+1
A�'text_col%=text_rowlen%(text_row%)+1
A��getw(texthandle)
BBblock!20=(text_col%-1)*chX%-(x1%-x0%)+chX% � 2:ș OpenW,,block
B8� IF text_col%>text_maxllen% text_col%=text_maxllen%
B�
B"
B,� �down
B65� text_row%=text_maxrows% � text_row%=last_row% �
B@	  � 7
BJ�
BT  text_row%+=1
B^  old_col%=text_col%
Bh+  � text_rowlen%(text_row%)<text_col% �
Br+    text_col%=text_rowlen%(text_row%)+1
B|  �
B�?  text_ptr%+=(text_rowlen%(text_row%-1)-old_col%+text_col%)
B�<  � text_rowlen%(text_row%-1)<text_maxllen% text_ptr%+=1
B��
B��check_scroll_up
B��
B�
B�	� �up
B�� text_row%<>0 �
B�  text_row%-=1
B�  old_col%=text_col%
B�+  � text_rowlen%(text_row%)<text_col% �
B�+    text_col%=text_rowlen%(text_row%)+1
B�  �
C?  text_ptr%-=(old_col%+(text_rowlen%(text_row%)-text_col%))
C:  � text_rowlen%(text_row%)<text_maxllen% text_ptr%-=1
C�
C&	  � 7
C0�
C:�check_scroll_down
CD�
CN
CX� �newline
Cbold_col%=text_col%
Cl�insert_char(13)
Cvtext_row%+=1
C�text_col%=1
C�D�update(texthandle,scx%,scy%-(y1%-y0%),scx%+(x1%-x0%)+chX%,scy%)
C�dummy=�redraw_text(�)
C��check_scroll_up
C��
C�
C�� �insert_char(chr%)
C�� flag1,flag2
C�S� text_ptr%>text_end% � � I%=text_end% � text_ptr%:?I%=32:�:text_end%=text_ptr%
C�E� text_ptr%=text_end% � text_rowlen%(text_row%)<text_maxllen%-1 �
C�  redraw_all%=�
C��
C�  redraw_all%=�
D�
D
D4�move(text_ptr%,text_ptr%+1,text_end%-text_ptr%)
D $� text_ptr%<mark(0) � mark(0)+=1
D*$� text_ptr%<mark(1) � mark(1)+=1
D4:?text_ptr%=chr%:text_ptr%+=1:text_end%+=1:?text_end%=0
D>
DH:� text_rowlen%(text_row%)<text_maxllen%-1 � chr%<>13 �
DR2� The '-1' above added 29.08.89 to fix bug 8a.
D\text_rowlen%(text_row%)+=1
Df�
Dplast_row%=�find_lastrow
Dz� R%=text_row% � last_row%
D�!  text_rowlen%(R%)=� �row(R%)
D��
D��
D�
D�� redraw_all% �
D�S�update(texthandle,0,-(last_row%+1)*lsY%,scx%+(x1%-x0%)+chX%,-(text_row%)*lsY%)
D��
D�� text_col%>text_maxllen% �
D�S�update(texthandle,0,-(text_row%)*lsY%,scx%+(x1%-x0%)+chX%,-(text_row%-1)*lsY%)
D��
D�d�update(texthandle,chX%*(text_col%-1),-(text_row%+1)*lsY%,scx%+(x1%-x0%)+chX%,-(text_row%)*lsY%)
D��
D��
E
E� text_col%>text_maxllen% �
E  text_col%=2:text_row%+=1
E$/  � text_row%>last_row% last_row%=text_row%
E.
  flag1=�
E8�
EB  text_col%+=1
EL!  � text_col%>text_maxllen% �
EV     text_col%=1:text_row%+=1
E`1    � text_row%>last_row% last_row%=text_row%
Ej    flag1=�
Et  �
E~�
E�
E�#dummy=�redraw_text(redraw_all%)
E�'�check_scroll_left:�check_scroll_up
E�
� flag1 �
E�  �getw(texthandle)
E�   block!20=0:ș OpenW,,block
E��
E��
E�
E�� �overwrite_char(chr%)
E�>� text_col%>text_rowlen%(text_row%) � �insert_char(chr%):�
E��� text_ptr%=mark(0) � Ȕ mark(0),mark(1):Ȕ asc(0),asc(1):Ȕ chr(0),chr(1):mrk-=1:mark(1)=0 � � text_ptr%=mark(1) � mrk-=1:mark(1)=0
F?text_ptr%=chr%
F
text_ptr%+=1
F-� text_ptr%>text_end% text_end%=text_ptr%
F?text_end%=0
F(d�update(texthandle,chX%*(text_col%-1),-(text_row%+1)*lsY%,scx%+(x1%-x0%)+chX%,-(text_row%)*lsY%)
F2dummy=�redraw_text(�)
F<text_col%+=1
FF8� text_col%>text_maxllen% � text_col%=1:text_row%+=1
FP
FZlast_row%=�find_lastrow
Fd
Fn� R%=text_row% � last_row%
Fx!  text_rowlen%(R%)=� �row(R%)
F��
F��
F�
F�� �delete_char
F�%� text_col%=1 � text_row%=0 � 7:�
F�$� text_ptr%<mark(0) � mark(0)-=1
F�$� text_ptr%<mark(1) � mark(1)-=1
F�text_ptr%-=1:text_end%-=1
F҈� text_ptr%=mark(0) � Ȕ mark(0),mark(1):Ȕ asc(0),asc(1):Ȕ chr(0),chr(1):mrk-=1:mark(1)=0 � � text_ptr%=mark(1) � mrk-=1:mark(1)=0
F�Atext_col%-=1:this_row%=text_row%:� text_rowlen%(text_row%)-=1
F�	cr%=�
F�� text_col%<1 �
F�  cr%=�
G)  text_col%=text_rowlen%(text_row%-1)
G"  � ?text_ptr%=13 text_col%+=1
G  text_row%-=1
G"�
G,6�move(text_ptr%+1,text_ptr%,text_end%-text_ptr%+1)
G6
G@5� text_rowlen%(this_row%)<text_maxllen% � � cr% �
GJtext_rowlen%(this_row%)-=1
GT�
G^last_row%=�find_lastrow
Gh� R%=text_row% � last_row%
Gr!  text_rowlen%(R%)=� �row(R%)
G|�
G��
G��getw(texthandle)
G�P� (text_ptr%=text_end% � text_rowlen%(text_row%)<text_maxllen%-1)  � � cr% �
G�d�update(texthandle,chX%*(text_col%-1),-(text_row%+1)*lsY%,scx%+(x1%-x0%)+chX%,-(text_row%)*lsY%)
G�  C%=text_col%
G��
G�S�update(texthandle,0,-(last_row%+2)*lsY%,scx%+(x1%-x0%)+chX%,-(text_row%)*lsY%)
G�J�  PROCupdate(texthandle,scx%,scy%-(y1%-y0%),scx%+(x1%-x0%)+chX%,scy%)
G��
G�
G�dummy=�redraw_text(�)
G�� cr% �
G��getw(texthandle)
H9block!20=(text_col%-1)*chX%-(x1%-x0%):ș OpenW,,block
H�
H�
H&
H0� �insert_line
H:$� last_row%=text_maxrows% � �7:�
HDfrom%=text_ptr%-text_col%+1
HN � from%<mark(0) � mark(0)+=1
HX � from%<mark(1) � mark(1)+=1
Hb*�move(from%,from%+1,text_end%-from%+1)
Hl
?from%=13
Hv'� R%=last_row%+1 � text_row%+1 � -1
H�'text_rowlen%(R%)=text_rowlen%(R%-1)
H��
H�text_rowlen%(text_row%)=0
H�text_end%+=1:last_row%+=1
H�text_ptr%-=text_col%-1
H�text_col%=1
H�U�update(texthandle,scx%,scy%-(y1%-y0%),scx%+(x1%-x0%)+chX%,scy%-(text_row%)*lsY%)
H�dummy=�redraw_text(�)
H��
H�
H�� �delete_line
H�
� cr%,to%
H��remove_markers
I<next_line%=text_ptr%+text_rowlen%(text_row%)-text_col%+1
I*text_ptr%-=(text_col%-1):to%=text_ptr%
IA� ?(text_ptr%+text_rowlen%(text_row%))=13 next_line%+=1:cr%=�
I .�move(next_line%,to%,text_end%-next_line%)
I*&text_end%-=text_rowlen%(text_row%)
I4� cr% text_end%-=1
I>1� text_end%<text_block% text_end%=text_block%
IH?text_end%=0
IRtext_col%=1
I\last_row%=�find_lastrow
If
Ip� R%=text_row% � last_row%
Iz!  text_rowlen%(R%)=� �row(R%)
I��
I�
I�Z� PROCupdate(texthandle,scx%,scy%-(y1%-y0%),scx%+(x1%-x0%)+chX%,scy%-(text_row%)*lsY%)
I�D�update(texthandle,scx%,scy%-(y1%-y0%),scx%+(x1%-x0%)+chX%,scy%)
I�dummy=�redraw_text(�)
I��
I�
I�� �install_texted
I�text_maxrows%=500
I�text_blocksize%=20000
I�text_original%=�
I�!� text_rowlen%(text_maxrows%)
I�-� default_text_block% text_blocksize%+300
J#text_block%=default_text_block%
Jdummy_spc=27:dummy_cr=253
J!�23,dummy_spc,0,0,0,0,0,0,0,0
J$ �23,dummy_cr,0,0,0,0,0,0,0,0
J.text_row%=0
J8text_col%=1
JBlast_row%=0
JLtext_cur%=�
JVoverwrite=�
J`
tab_set=5
Jjtext_ptr%=text_block%
Jttext_end%=text_block%
J~?text_block%=0
J�Omrk=0:� mark(1),row(1),col(1),chr(1),asc(1):chr(0)=254:chr(1)=255:cliplen=0
J��
J�
J�� �remove_markers
J�� I%
J�
� mrk>0 �
J�
mrk-=1
J�� I%=0 � mrk
J� ?mark(I%)=asc(I%):mark(I%)=0
J��
J�	mrk=0
J��
K�
K

K� �find_lastrow
K� A%,B%
K(A%=text_block%:B%=text_end%
K2
� lastrow
K<=!rowcount
KF
KP� �row(row%)
KZ� A%,B%
KdA%=text_block%:B%=row%
Kn	� row
Kx=$linebuffer
K�
K�
K�+� ------ Object editor utilities ------
K�
K�� �first_obj
K��store_obj(optr)
K�
optr=1
K��restore_obj(1)
K��
K�
K�� �last_obj
K��store_obj(optr)
K�optr=last_object
L�restore_obj(optr)
L�
L
L"� �next_obj
L,�store_obj(optr)
L6optr+=1
L@� optr>maxobs optr=maxobs
LJ�restore_obj(optr)
LT�
L^
Lh� �prev_obj
Lr�store_obj(optr)
L|optr-=1
L�� optr<1 optr=1
L��restore_obj(optr)
L��
L�
L�� �fwd_obj(times%)
L��store_obj(optr)
L�,optr+=times%:� optr>maxobs � optr=maxobs
L��restore_obj(optr)
L��
L�
L�� �rewind_obj(times%)
L��store_obj(optr)
L�"optr-=times%:� optr<1 � optr=1
M�restore_obj(optr)
M�
M
M&� �store_obj(o%)
M0G� This reads the object data from the writeable icons in the window
M:7� and stores it in the object data area (odata%...)
MD
� olddata
MNptr=o%*o_len
MX
Mb� I%=8 � 15
Ml,  icondata=�(�geticondata(objhandle,I%))
Mv
  Ȏ I% �
M�    � 10,11,12,13
M�     � The double-byte values
M�1    olddata=?(odata%+ptr)+?(odata%+ptr+1)*256
M�*    � icondata<>olddata � data_saved=�
M�$    ?(odata%+ptr)=icondata � 256
M�&    ?(odata%+ptr+1)=icondata � 256
M�    ptr+=2
M�    � 8,9,14,15
M�     � The single-byte values
M�    olddata=?(odata%+ptr)
M�0    � olddata<>icondata � 256 � data_saved=�
M�+    ?(odata%+ptr)=icondata � 256:ptr+=1
M�  �
N�
N� container �
NJ?(odata%+ptr)=?(odata%+ptr) � %10000000:ptr+=1:?(odata%+ptr)=cont_room
N �
N*B?(odata%+ptr)=?(odata%+ptr) � %01111111:ptr+=1:?(odata%+ptr)=0
N4�
N>�
NH
NR� �restore_obj(o%)
N\H� This reads the data for object o% from memory and updates the icon
Nf;� contents, ensuring the window reflects the new values
Np
Nzptr=o%*o_len
N�(�changeicon(objhandle,7,�(o%),icon%)
N�� I%=8 � 15
N�
  Ȏ I% �
N�G    � 10,11,12,13:data$=�(?(odata%+ptr)+256*?(odata%+ptr+1)):ptr+=2
N�1    � 8,9,14,15:data$=�(?(odata%+ptr)):ptr+=1
N�  �
N�  � data$="" � data$="0"
N�.  �changeicon(objhandle,I%,data$,newicon%)
N�� I%
N�
N�#store=small_area%:col%=1:row%=0
N�)�fill(small_area%,small_areasize%,13)
N�print=�
O!�pvok(�findnoun(o%,void),1,�)
O3�changeicon(objhandle,19,$small_area%,newicon%)
OG� ((?(odata%+ptr) � %10000000) � 128)>0 � container=� � container=�
O$
ptr+=1
O.3cont_room=?(odata%+ptr):$controom%=�(cont_room)
O8i� container �changeicon(objhandle,26,"SIZE <C>",newicon%) � �changeicon(objhandle,26,"SIZE",newicon%)
OB�
OL
OV
O`)� ------ Room editor utilities ------
Oj
Ot� �first_room
O~�store_room(rptr)
O�
rptr=1
O��restore_room(1)
O��
O�
O�� �last_room
O��store_room(rptr)
O�rptr=last_room
O��restore_room(rptr)
O��
O�
O�� �next_room
O��store_room(rptr)
Prptr+=1
P
� rptr>maxrms rptr=maxrms
P�restore_room(rptr)
P�
P(
P2� �prev_room
P<�store_room(rptr)
PFrptr-=1
PP� rptr<1 rptr=1
PZ�restore_room(rptr)
Pd�
Pn
Px� �fwd_room(times%)
P��store_room(rptr)
P�,rptr+=times%:� rptr>maxrms � rptr=maxrms
P��restore_room(rptr)
P��
P�
P�� �rewind_room(times%)
P��store_room(rptr)
P�"rptr-=times%:� rptr<1 � rptr=1
P��restore_room(rptr)
P��
P�
P�� �store_room(r%)
P�ptr=r%*r_len
Q� I%=34 � 69
Q-  icondata=�(�geticondata(roomhandle,I%))
Q  Ȏ � �
Q"    � I%>35 � I%<54
Q,1    olddata=?(rdata%+ptr)+?(rdata%+ptr+1)*256
Q6*    � icondata<>olddata � data_saved=�
Q@$    ?(rdata%+ptr)=icondata � 256
QJ&    ?(rdata%+ptr+1)=icondata � 256
QT    ptr+=2
Q^    � I%<36 � I%>53
Qh    olddata=?(rdata%+ptr)
Qr0    � olddata<>icondata � 256 � data_saved=�
Q|$    ?(rdata%+ptr)=icondata � 256
Q�    ptr+=1
Q�  �
Q�� I%
Q�+icondata=�(�geticondata(roomhandle,71))
Q�#?(rdata%+ptr+16)=icondata � 256
Q�#?(rdata%+ptr+17)=icondata � 256
Q��
Q�
Q�� �restore_room(r%)
Q�ptr=r%*r_len
Q�*�changeicon(roomhandle,33,�(r%),icon%)
Q�� I%=34 � 69
Q�  Ȏ � �
R    � I%>35 � I%<54
R9    data$=�(?(rdata%+ptr)+256*?(rdata%+ptr+1)):ptr+=2
R    � I%<36 � I%>53
R&%    data$=�(?(rdata%+ptr)):ptr+=1
R0  �
R:  � data$="" � data$="0"
RD/  �changeicon(roomhandle,I%,data$,newicon%)
RN� I%
RX2data$=�(?(rdata%+ptr+16)+256*?(rdata%+ptr+17))
Rb� data$="" � data$="0"
Rl-�changeicon(roomhandle,71,data$,newicon%)
Rv�
R�
R�
R�,� ------ Message editor utilities ------
R�
R�� �store_msg
R�errflag=�:�remove_markers
R� newlen=text_end%-text_block%
R�diff=newlen-oldlen
R�� diff+text%!2>maxtext% �
R�  �error(13,error$(36))
R�  errflag=�
R��
R�  to=mstart+newlen-1
S  from=mend-1
S1  text_end%=text_block%:text_ptr%=text_block%
S$  bytes_to_move=�text_end-mend+1
S "  �move(from,to,bytes_to_move)
S*&  �move(text_block%,mstart,newlen)
S4  �incmsglen(diff)
S>  ns%=switch_vals(0)
SH  � ns%>0 �
SR    ?switch_buf%=ns%:ptr%=1
S\    � I%=1 � ns%
Sf*      switch_buf%?ptr%=switch_vals(I%)
Sp4      switch_buf%?(ptr%+1)=switch_vals(I%) � 256
Sz      ptr%+=2
S�	    �
S�  �
S�'    �fill(switch_buf%,maxsw%*2+1,0)
S�  �
S�2  �move(mstart,swloc+2*ns%+1,�text_end-mstart)
S�&  �move(switch_buf%,swloc,2*ns%+1)
S�  �incmsglen(2*ns%-2*oldsw)
S��
S��
S�
S�� �incmsglen(bytes_to_add)
S� text%!2=text%!2+bytes_to_add
S��
T
T� �text_end
T=text%+text%!2
T$
T.
� �maxmsg
T8=?text%+256*text%?1
TB
TL� �incmaxmsg
TV&?text%+=1:� ?text%=0 ?(text%+1)+=1
T`�
Tj
Tt� �show_msg(ms%)
T~"� ms%>�maxmsg � � 4,error$(31)
T�
� ms%<1 �
T�0�fill(text_block%,text_blocksize%,dummy_spc)
T�&text_rowlen%()=+0:switch_vals()=+0
T�changed_msg=�
T�$A%=ms%:C%=text%+7:ptr%=� findmsg
T�chr%=?ptr%:ptr%+=1
T�/switch_vals(0)=chr%:oldsw=chr%:swloc=ptr%-1
T�� chr%>0 �
T�  � I%=1 � chr%
T�(    switch_vals(I%)=?ptr%+256*ptr%?1
T�    ptr%+=2
T�  �
U�
U
mstart=ptr%
Uchr%=?ptr%
U row%=0:text_ptr%=text_block%
U(
ȕ chr%>0
U2  col%=1:line$=""
U<1  ȕ chr%<>13 � chr%<>0 � col%<=text_maxllen%
UF  � chr%>&7F �
UP  tokptr=chr%-&7F
UZ+  line$+=tok$(tokptr):L%=� tok$(tokptr)
Ud  � I%=1 � L%
Un.  ?(text_ptr%+I%-1)=�(�tok$(tokptr),I%,1))
Ux  �
U�  text_ptr%+=(L%-1)
U�  �
U�%    ?text_ptr%=chr%:line$+=� chr%
U�  �
U�/    ptr%+=1:text_ptr%+=1:chr%=?ptr%:col%+=1
U�  �
U�   text_rowlen%(row%)=� line$
U�3  � col%>text_maxllen% � chr%=13 row%+=1:col%=1
U�2  � chr%=13 ?text_ptr%=13:text_ptr%+=1:ptr%+=1
U�  chr%=?ptr%:� ptr%+=1
U��
U�mend=ptr%:?text_ptr%=chr%
U�text_end%=text_ptr%
Voldlen=mend-mstart
V� oldlen<0 oldlen=0
Vtext_ptr%=text_block%
V"last_row%=�find_lastrow
V,4� I%=0 � last_row%:text_rowlen%(I%)=� �row(I%):�
V6�
V@
VJ� �next_msg
VTmptr+=1
V^$�store_msg:� save this one first
VhK� mptr>�maxmsg � ptr=�text_end:ptr?0=0:ptr?1=0:�incmaxmsg:�incmsglen(2)
Vr9�show_msg(mptr):� Now load the next one into `texted`
V|<�retitle_text("MESSAGE "+�mptr):� PROCforceR(texthandle)
V��
V�
V�� �prev_msg
V�� mptr>1 �
V�mptr-=1
V��store_msg
V��show_msg(mptr)
V�#�retitle_text("MESSAGE "+�mptr)
V��
V��
V�
V�� �goto_msg(ms%)
V�!� ms%>�maxmsg ms%=�maxmsg:� 7
W� ms%<1 ms%=1:� 7
W�store_msg
W�show_msg(ms%)
W&mptr=ms%
W0#�retitle_text("MESSAGE "+�mptr)
W:�
WD
WN� �last_msg
WX�store_msg
Wbmptr=�maxmsg
Wl�show_msg(mptr)
Wv#�retitle_text("MESSAGE "+�mptr)
W��
W�
W�� �first_msg
W��store_msg
W�
mptr=1
W��show_msg(mptr)
W�#�retitle_text("MESSAGE "+�mptr)
W��
W�
W�
W�,� ------ Program Editor utilities ------
W�
W�� �store_prog
X� sp_ptr%,line$,chr%
X� Use `hourglass` pointer
Xș "Hourglass_On"
X errflag=�:�remove_markers
X*sp_ptr%=text_block%
X4chr%=?sp_ptr%
X>prgptr=prgbuf%
XH$ȕ sp_ptr%<text_end% � � errflag
XR  line$=""
X\3  ȕ (chr%<>13) � (chr%<>0) � (chr%<>dummy_spc)
Xf    chr%=?sp_ptr%
Xp    sp_ptr%+=1
Xz    line$+=�(chr%)
X�  �
X�  �scan
X�  chr%=?sp_ptr%
X�B  ȕ (chr%=13 � chr%=dummy_spc � chr%=0) � (sp_ptr%<text_end%)
X�     sp_ptr%+=1:chr%=?sp_ptr%
X�  �
X��
X�� � errflag �
X�3  oldlen%=prgend-pstart:� oldlen%<>0 oldlen%+=1
X�#  bytes_to_move=�prglen-oldlen%
X�  �incprglen(-oldlen%)
X�  newlen%=prgptr-prgbuf%
X�1  � This check for 'No room' was added 2.6.89
Y&  � �prglen+newlen%>code_size%-4 �
Y    �incprglen(oldlen%)
Y    �error(13,error$(35))
Y$  �
Y.4    �move(prgend+1,pstart+newlen%,bytes_to_move)
Y8%    �move(prgbuf%,pstart,newlen%)
YB    �incprglen(newlen%)
YLH    ?(program%+4+�prglen)=0:� restore end of program marker (9/4/89)
YV    text_ok=�
Y`  �
Yj�
Ytș "Hourglass_Off"
Y~�
Y�
Y�
� �prglen
Y�=!program%
Y�
Y�� �incprglen(bytes)
Y�!program%=!program%+bytes
Y��
Y�
Y�
Y�-� ------ Window `redraw` functions ------
Y�
Y�
Z� �redraw_text(flag%)
Z
,� flag%=TRUE -> redraw WHOLE text window
Z+� else only redraw from the cursor line
Z
Z(ȕ more%
Z2%BR%=(by%-block!32-ypixel%) � lsY%
Z<!� BR%>last_row% BR%=last_row%
ZF%TR%=(by%-block!40-ypixel%) � lsY%
ZP!� TR%>last_row% TR%=last_row%
ZZ*ptr_end%=BR%*text_maxllen%+text_block%
Zd�
Zn� I%=TR% � BR%
Zx  � bx%,by%-lsY%*I%-ypixel%
Z�  � �row(I%);
Z��
Z�șGetR,0,block � more%
Z��
Z�=0
Z�
Z�
Z�2� ------ General icon handling routines ------
Z�
Z�$� �ht(handle%,icon%,fl$,fc%,bc%)
Z�
�mask%
Z�5�fl$="*"�fl%=0:mask%=&FF000000 �fl%=�fl$:mask%=-1
Z�a!block=handle%:block!4=icon%:block!8=fl%:block?11=fc%+(bc%<<4):block!12=mask%:ș SetI,0,block
[�
[
[!� �geticondata(handle%,icon%)
[" !block=handle%:block!4=icon%
[,ș GetI,0,block
[6flags%=block!24
[@B� (flags% � 256)<>0 � data$=$(!(block+28)) � data$=$(block+28)
[J
=data$
[T
[^-� �changeicon(handle%,icon%,new$,� icon%)
[h� J%
[r&dummy$=�geticondata(handle%,icon%)
[|@� (flags% � 256)<>0 � $(!(block+28))=new$ � $(block+28)=new$
[�ș DeleteI,0,block
[�� J%=4 � 28 � 4
[�  block!J%=block!(J%+4)
[�� J%
[�-!block=handle%:ș CreateI,0,block � icon%
[�F�set_icon(handle%,icon%,0,0):� ensure it appears updated on screen
[��
[�
[�)� �set_icon(handle%,icon%,eor%,mask%)
[�<!block=handle%:block!4=icon%:block!8=eor%:block!12=mask%
[�ș SetI,0,block
[��
[�
\
\,� ------ Menu creation procedures ------
\
\&7� **** onIconBar = 1 if yes, otherwise 0 **********
\0'� �menuHeight(theMenu%, onIconBar%)
\:C= ((96 * onIconBar%) + (theMenu%?30 * 44) + (theMenu%?31 * 24))
\D
\N
\X
� �crmenu
\b.� menufree%+28 > menuend% � � 1,error$(32)
\l� m%,menu$:� menu$
\v
\�
\�H� ************** the bodge to store the menu height ****************
\�� menuHiAddr%
\�KmenuHiAddr% = menufree% + 28 + 2 :� 2nd last byte in 1st menuitem flags
\�menuItemNum% = 0
\�dashItemNum% = 0
\�
\�
\�&� �menu$,1)="=" � menu$=��menu$,2)
\�menuptr%=menufree%
\�i%=0:ctr%=0
\�?� �menu$,1)="#" � i%=1:menutitle$=�par(",") � menutitle$=""
\�I%=�menutitle$,">")
]� I%>0 �
])     menuptr%!20=�(�menutitle$,I%+1))
]%     menutitle$=�menutitle$,I%-1)
] � menuptr%!20=44
]*�
]4$menuptr%=menutitle$
]>Omenuptr%?12=`tfcol:menuptr%?13=`tbcol:menuptr%?14=`wfcol:menuptr%?15=`wbcol
]H$menuptr%!16=196-24:menuptr%!24=0
]R$menuptr%+=28:maxx%=�menutitle$-3
]\ȕ �menu$,1)="~"
]f  menu$=�menu$,�menu$-1)
]p3  � item$=�par(","):�menuitem(item$):� item$=""
]z
  � menu$
]��
]�1� item$=�par(","):�menuitem(item$):� item$=""
]�#menuptr%!-24=(menuptr%!-24)�&80
]�&m%=menufree%:m%!16=(maxx%*8+6)*dx%
]�menufree%=menuptr%
]�<?menuHiAddr% = menuItemNum%      : � the number of items
]�=?(menuHiAddr% +1) = dashItemNum% : � the number of dashes
]�=m%
]�
]�� �menuitem(text$)
]�� text$="" � �
]�-� menuptr%+24 > menuend% � � 1,error$(32)
]�� text$="&" �
^+  ș "Font_ListFonts",,q%,ctr% � ,,ctr%
^1  � ctr%>=0 � text$=$q%+">m_fsize%":i%-=2 � �
^�
^$�i%,flg%
^.
^8menuItemNum% += 1
^B
^Lflg%=&00
^Vi%=�text$,">")
^`=�i%>0�subptr%=��text$,i%+1):text$=�text$,i%-1)�subptr%=-1
^jH� �text$,1)="#" � text$=�text$,�text$-1):flg%+=&02:dashItemNum% += 1
^tmenuptr%!0=flg%
^~menuptr%!4=subptr%
^�menuptr%!8=&07000021
^�� �text$,1)="?" �
^�  menuptr%!8=&0700011A
^�)  I%=�workspace(�text$):$I%=�text$,2)
^�B  menuptr%!12=I%:menuptr%!16=systemsprites%:menuptr%!20=�text$
^��
^�  � �text$,1)="$" �
^�    !menuptr%+=&04
^�    menuptr%!8+=&100
^�    i%=�text$,"(")
^�7    �i%>0�L%=��text$,i%+1):text$=�text$,i%-1)�L%=12
^�>    menuptr%!12=�(�text$,2)):menuptr%!16=-1:menuptr%!20=L%
_    text$=�L%," ")
_
  �
_    �text$<=12�
_!         $(menuptr%+12)=text$
_(+    � I%=�workspace(�text$+1):$I%=text$
_2?         menuptr%!12=I%:menuptr%!16=-1:menuptr%!20=�text$+1
_<)         menuptr%!8=menuptr%!8 � &100
_F	    �
_P  �
_Z   �text$>maxx%�maxx%=�text$
_d�
_nmenuptr%+=24
_x�
_� 
_�� �par(sep$)
_�%i1%=i%+1:i%=�menu$+sep$,sep$,i1%)
_�=�menu$,i1%,i%-i1%)
_�
_�� �workspace(L%)
_�2� curbuff%+L%>buffer%+maxbuf% � � 1,error$(33)
_�curbuff%+=L%:=curbuff%-L%
_�
_�
_�9� ------ Procedures to interface with ARM code ------
_�
_�"� �move(from,to,bytes_to_move)
`� bytes_to_move=0 � �
`"A%=from:B%=to:C%=bytes_to_move
`
� move
`"�
`,
`6� �fill(start,bytes,filler)
`@A%=start:B%=bytes:C%=filler
`J	�fill
`T�
`^
`h
`r#� ------ ARM source code ------
`|
`�� �assemble(addr%)
`�
� pass
`�sp=13:link=14
`�� pass=0 � 2 � 2
`�P%=addr%
`�
[OPT pass
`�.fill     b fill2
`�.move     b blockmove
`�
`�
.fill2
`�?\ r0=start address r1=number of bytes r2=value to fill with
`�!\ all registers are preserved
`�stmfd (sp)!,{r0-r3,link}
a
mov r3,r0
aadd r3,r3,r1
a
.fillloop
a&strb r2,[r0],#1
a0
cmp r0,r3
a:blt fillloop
aDldmfd (sp)!,{r0-r3,PC}
aN
aXE\ General purpose block move routine (up or down and overlapping)
abJ\ r0 = `from` address, r1 = `to` address, r2 = number of bytes to move
al.blockmove
av
cmp r0,r1
a�blt moveup
a�bal movedown
a�
a�
.movedown
a�\ Move memory block down
a�I\ r0 = `from` address, r1= `to` address, r2 = number of bytes to move
a�stmfd (sp)!,{r0-r3,link}
a�
a�
.movdloop
a�ldrb r3,[r0],#1
a�strb r3,[r1],#1
a�subs r2,r2,#1
a�bne movdloop
b
bldmfd (sp)!,{r0-r3,PC}
b
b .moveup
b*\ Move memory block up
b4I\ r0 = `from` address, r1= `to` address, r2 = number of bytes to move
b>
bHstmfd (sp)!,{r0-r3,link}
bRsub r2,r2,#1
b\add r0,r0,r2
bfadd r1,r1,r2
bp#\ Call here if r2 = end address
bz.moveuploop
b�ldrb r3,[r0],#-1
b�strb r3,[r1],#-1
b�subs r2,r2,#1
b�bpl moveuploop
b�ldmfd (sp)!,{r0-r3,PC}
b�
b�.lastrow
b�\ Find last row of text
b�6\ Entry - r0 = start address of text (text_block%)
b�2\         r1 = end address of text (text_end%)
b�J\ Exit  - number of last row is in 'rowcount' (rows numbered 0,1,2...)
b�stmfd (sp)!,{r0-r4,link}
b�
mov r2,#0
c
mov r3,#0
c
mov r4,#0
c
c$
.while
c.
cmp r0,r1
c8beq endwhile
cBldrb r3,[r0],#1
cLadd r4,r4,#1
cVcmp r4,#text_maxllen%
c`addeq r2,r2,#1
cjmoveq r4,#0
ct
beq while
c~cmp r3,#13
c�addeq r2,r2,#1
c�moveq r4,#0
c�cmp r3,#dummy_cr
c�addeq r2,r2,#1
c�moveq r4,#0
c�
bal while
c�
c�
.endwhile
c�str r2,rowcount
c�ldmfd (sp)!,{r0-r4,PC}
c�
c�.rowcount EQUD 0
d
d
.row
dG\ Returns the string of text in the specified row of the text block
d6\ Entry - r0 = start address of text (text_block%)
d((\         r1 = row wanted (0,1,2...)
d2H\ Exit  - the string is returned in 'linebuffer', terminated by <cr>
d<\ r2 is the current row
dF!\ r3 is the current character
dP)\ r4 is the length of the current row
dZ
ddstmfd (sp)!,{r0-r4,link}
dn
mov r2,#0
dx
mov r4,#0
d�
d�.while2
d�
cmp r2,r1
d�beq endwhile2
d�ldrb r3,[r0],#1
d�add r4,r4,#1
d�cmp r4,#text_maxllen%
d�moveq r4,#0
d�addeq r2,r2,#1
d�beq while2
d�cmp r3,#13
d�moveq r4,#0
d�addeq r2,r2,#1
ecmp r3,#dummy_cr
emoveq r4,#0
eaddeq r2,r2,#1
e"bal while2
e,
e6.endwhile2
e@adr r1,linebuffer
eJ
mov r4,#0
eT
e^.strloop
ehldrb r3,[r0],#1
eradd r4,r4,#1
e|
cmp r3,#0
e�beq lineend
e�cmp r3,#dummy_spc
e�beq lineend
e�cmp r3,#13
e�beq lineend
e�cmp r3,#dummy_cr
e�streqb r3,[r1],#1
e�beq lineend
e�strb r3,[r1],#1
e�cmp r4,#text_maxllen%
e�bne strloop
e�
e�.lineend
f
cmp r3,#0
fmoveq r3,#13
fcmp r3,#dummy_spc
f&moveq r3,#13
f0cmp r3,#dummy_cr
f:moveq r3,#13
fDcmp r4,#text_maxllen%
fNmoveq r3,#13
fXstrb r3,[r1],#1
fbldmfd (sp)!,{r0-r4,PC}
fl
fv2.linebuffer EQUS �text_maxllen%+1,� dummy_spc)
f�
 align
f�
f�.findmsg
f�%\Finds start of specified message
f� \Entry - r0 = message number
f�,\      - r2 = text start address (MSG#0)
f�5\Exit  - r0 = start address of message (switches)
f�stmfd (sp)!,{r1-r3,link}
f�
cmp r0,#0
f�beq startm
f�
f�.nxtmsg
f�ldrb r1,[r2],#1
g)add r2,r2,r1, lsl #1 \ r2 = r2 + r1*2
g
g.readch
g ldrb r1,[r2],#1
g*
cmp r1,#0
g4bne readch
g>subs r0,r0,#1
gHbne nxtmsg
gR
g\.startm
gf
mov r0,r2
gpldmfd (sp)!,{r1-r3,pc}
gz
g�	.pvok
g�<;Print Verb, Object or Keyword (returns the word string)
g�);Entry - r0 = Number of word to print
g�0;        r1 = address of required word table
g�2;Exit  - word is in 'atext' terminated by <cr>
g�stmfd (sp)!,{r0-r5,link}
g�,mov r3,r0      \Word number is now in r3
g�$mov r4,r2      \r4 is 'all' flag
g�mov r5,#0      \r5 is 'ctr'
g�
g�	.LLL1
g�(adr r2,atext   \r2 points to 'atext'
g�
h	.LLL2
h+ldrb r0,[r1]   \Get character from list
h*\orr r0,r0,#32  \Convert to lower case
h$$strb r0,[r2]   \Put it in 'text'
h.2tst r0,#&80    \Is bit 7 set (end of the word)
h8bne endofw     \Yes
hBadd r2,r2,#1
hLadd r1,r1,#1
hV
b LLL2
h`
hj.endofw
htcmp r0,#&FF
h~adreq r2,pvokflag
h�streqb r0,[r2]
h�beq endtbl
h�%and r0,r0,#%01111111 ;Clear bit 7
h�strb r0,[r2],#1
h�mov r0,#13
h�strb r0,[r2]
h�add r1,r1,#1
h�7ldrb r0,[r1] ;Get the verb/object number from table
h�!add r1,r1,#1 ;Skip the number
h�(cmp r0,r3    ;Is it the one we want?
h�'bne LLL1     ;No - try the next one
h�
i.endtbl
i
adr r2,address
istr r1,[r2]
ildmfd (sp)!,{r0-r5,pc}
i(
i2.atext EQUS �80,"*")
i<	align
iF.address equd 0
iP.pvokflag equb 0
iZ	align
id]
in
� pass
ix�
i�
i�
i�1� ------ Some general utility routines ------
i�
i�� �ErrorMsgRead
i�'in%=�("<Alps$Resources>.Errormsgs")
i��#in%,errors
i�� error$(errors)
i�� error=0 � errors-1
i�  �#in%,error$(error)
i�� error
i�	�#in%
i��
j
j� �KeyWordRead
j'� Reads file of keywords/info bytes
j"(� Keywords are in alphabetical order
j,� CHN%,I%,J%
j6first_token=&60
j@5maxmsg=65535:maxobn=255:maxvbn=255:maxconst=65535
jJ(chn%=� "<Alps$Resources>.keywrdlist"
jT�#chn%,keywords
j^*� keyword$(keywords),info%(keywords,5)
jh
jr� Set up keyword tables
j|C� keyword$ | token | type/No. params | Max values param 1,2,3 |
j�H� type/No. params gives number of parameters and bit 7 is set if its
j�H� a function, bit 6 set for object keywords, bit 5 for verb keywords
j�
j�� I%=1 � keywords
j��#chn%,keyword$(I%)
j�� J%=0 � 5
j��#chn%,info%(I%,J%)
j�� J%
j�� I%
j�
�#chn%
j�
j�� I%=1 � keywords
j�+params=info%(info%(I%,2),1) � %00011111
kbytes=0
k� params>0 �
k� K%=3 � 5
k& maxval=info%(info%(I%,2),K%)
k0&� maxval<256 � maxval>0 � bytes+=1
k:*� maxval>255 � maxval<65536 � bytes+=2
kD� maxval>65535 � bytes+=3
kN� K%
kX�
kb.parambyte=info%(info%(I%,2),1) � %10000000
kl#pbytes?(I%-1)=bytes � parambyte
kv�
k��
k�
k�
k�'� ------ Printing procedures ------
k�
k�� �print_prog_seg
k�� R%
k�� �
k�)� � �:�("FX3,0"):ș "Hourglass_Off":�
k�*FX3,10
k�� R%=0 � last_row%
k�  � �row(R%)
k�� R%
l
*FX3,0
l�
l
l � �print_program
l*� �
l4)� � �:�("FX3,0"):ș "Hourglass_Off":�
l>�list(1,"")
lH�
lR
l\� �print_text
lf� st%,end%,M%
lp� �
lz)� � �:�("FX3,0"):ș "Hourglass_Off":�
l��close(texthandle)
l�*FX3,10
l�st%=� $st_msg%
l�end%=� $end_msg%
l�� end%>�maxmsg end%=�maxmsg
l�� M%=st% � end%
l�  �show_msg(M%)
l�  �print_msg(M%)
l�� M%
l�
*FX3,0
l��
l�
l�� �print_msg(M%)
m� S%,R%
m"�"Message: ";M%;" Switches: ";
m� switch_vals(0)=0 �
m$  �"None";
m.�
m8  � S%=1 � switch_vals(0)
mB!    �"<";switch_vals(S%);">";
mL  �
mV�
m`�
mj� R%=0 � last_row%
mt  � �row(R%)
m~� R%
m�� �text_maxllen%,"-")
m��
m�
m�� �print_objs
m�� O%,F%,I%,ptr%
m�*FX3,10
m�� condensed
m��pline$
m��print_flags(o_flags%)
m��pline$
m�t�"Obj Noun       Flags 7 6 5 4 3 2 1 0 State Start Describe Short Examine Weight Size Cont. 'Store' Trans. Open"
m��pline$
n� O%=1 � last_object
n
	�;O%;
n#store=small_area%:col%=1:row%=0
n)�fill(small_area%,small_areasize%,13)
n(print=�
n28�pvok(�findnoun(O%,void),1,�):�4)$small_area%;�21);
n<ptr%=odata%+O%*o_len
nF� F%=7 � 0 �-1
nP&� ?ptr% � (2^F%) � �"* "; � �". ";
nZ�
nd��39);ptr%?1;�43);ptr%?2+256*ptr%?3;�50)ptr%?4+256*ptr%?5;�58);ptr%?6+256*ptr%?7;�65);ptr%?8+256*ptr%?9;�73);ptr%?10;�80);ptr%?11;
nn3� (ptr%?12 � &80)<>0 � �85)"<C>";�92);ptr%?13;
nx� (ptr%?12 � &80)<>0 �
n�store_room=ptr%?13
n�&rmflags=?(rdata%+store_room*r_len)
n�!tr_flag=(rmflags � %100000)>0
n� op_flag=(rmflags � %10000)>0
n�'� tr_flag �100);"Y"; � �100);"N";
n�%� op_flag �106);"Y" � �106);"N"
n��
n��
n��
n��
n��pline$
n�� 27,reset
n�
*FX3,0
o�
o
o� �print_rooms
o"� R%,F%,I%,ptr%
o,*FX3,10
o6� condensed
o@�pline$
oJ�print_flags(r_flags%)
oT%�pline$:�70);" * DESTINATIONS *"
o^��"Room Flags 76543210 State Desc. Short Pict. N    S    E    W    NE   NW   SE   SW   Up   Down In   Out  Back Left Righ Jump"
oh�pline$
or� R%=1 � last_room
o|�;R%;�11);
o�ptr%=rdata%+R%*r_len
o�� F%=7 � 0 �-1
o�$� ?ptr% � (2^F%) � �"*"; � �".";
o��
o�X�20);ptr%?1;�26);ptr%?2+256*ptr%?3;�32);ptr%?4+256*ptr%?5;�38);ptr%?70+256*ptr%?71;
o�� I%=6 � 36 � 2
o�/�5*(I% � 2-3)+44);ptr%?I%+256*ptr%?(I%+1);
o�� I%
o��
o�� R%
o�
o�&�pline$:�30);" * EXIT ROUTINES *"
o�\�"Room  N    S    E    W    NE   NW   SE   SW   Up   Down In   Out  Back Left Righ Jump"
p�pline$
p� R%=1 � last_room
p	�;R%;
p&ptr%=rdata%+R%*r_len
p0� I%=38 � 53
p:�5*(I%-38)+6);ptr%?I%;
pD� I%
pN�
pX� R%
pb�pline$
pl�59)"* EXIT FLAGS *"
pv�pline$
p��"Exit Flag: ";
p�� flag=7 � 0 �-1
p�/�11+(7-flag)*15);"|"�20+(7-flag)*15);flag;
p��
p��11+8*15);"|"
p��"Descript'n";
p�� flag=7 � 0 �-1
p�-�10+(7-flag)*15);" | ";exit_flag$(flag);
p��
p��10+8*15);" |"
p��pline$
p��4);" North   South    East    West   No'east No'west So'east So'west   Up     Down     In     Out     Back    Left    Right   Jump  "
p�� R%=1 � last_room
q,� R%=1 � R% � 10=0 � �4)�16,"|-------")
q	�;R%;
qptr%=rdata%+R%*r_len
q 	�4);
q*� I%=54 � 69
q4� F%=7 � 0 �-1
q>)� ?(ptr%+I%) � (2^F%) � �"*"; � �".";
qH� F%
qR� I%
q\�
qf� R%
qp�pline$
qz� 27,reset
q�
*FX3,0
q��
q�
q�� �print_flags(mem%)
q��"Flag:      ";
q�� flag=7 � 0 �-1
q�/�11+(7-flag)*15);"|"�20+(7-flag)*15);flag;
q��
q��11+8*15);"|"
q��"Descript'n";
q�� flag=7 � 0 �-1
q�+�10+(7-flag)*(maxd%-1+3));" | ";$mem%;
q�mem%+=maxd%
r�
r�10+8*(maxd%-1+3));" |"
r�
r$
r.� �print_vocab
r8print=�
rB�put(pline2$+�13)
rL*�put(�37," ")+"Nouns:"+�13):�listnouns
rV�put(pline2$+�13)
r`*�put(�37," ")+"Verbs:"+�13):�listverbs
rj�put(pline2$+�13)
rt.�put(�34," ")+"Adjectives:"+�13):�listadjs
r~�put(pline2$+�13)
r�1�put(�33," ")+"Conjunctions:"+�13):�listconjs
r��put(pline2$+�13)
r�1�put(�33," ")+"Prepositions:"+�13):�listpreps
r��put(pline2$+�13)
r�-�put(�35," ")+"Specials:"+�13):�listspecs
r��put(pline2$+�13)
r�*�put(�37," ")+"Noise:"+�13):�listnoise
r��put(pline2$+�13)
r�print=�
r��
r�
r�� �print_pix
s
� mptr
s
print=�:ș "Hourglass_On"
s
s
� pxn>1 �
s(mptr=pixs+3
s2� I%=1 � pxn-1
s<  �put(�(I%)+"= ")
sF  �put($mptr)
sP  mptr+=�$mptr+1
sZ$  �put(",<"+pos$(?mptr)+">"+�13)
sd
  mptr+=5
sn�
sx�
s�
s�print=�:ș "Hourglass_Off"
s��
s�
s�� �scan
s�oldptr=prgptr:numflag=0
s�&ptr=1:len=� line$:� len=0 � � �@Xu
s��
s�temp$=""
s�"ȕ �line$,ptr,1)<"A" � ptr<len
s�
ptr+=1
s��
s�vptr=ptr
t"ȕ �line$,ptr,1)>"@" � ptr<len
t$temp$=temp$+�line$,ptr,1):ptr+=1
t�
t"� temp$<>"" �
t,!�lookup(temp$,token,info_ptr)
t6A� token=0 �error(0,": "+�line$,vptr,30)):prgptr=oldptr:� �@Du
t@%� token=def_token � �dodefn:�@Du
tJ)?prgptr=token:tokptr=prgptr:prgptr+=1
tTFp_info=info%(info%(token-first_token+1,2),1):params=p_info � %1111
t^
ptr+=1
th� params <>0 �
tr� I%=1 � params
t|) ȕ �", ",�line$,ptr,1))<>0 � ptr<len
t�  ptr+=1
t� �
t�C  � token>=var_token � I%=1 � �get_var(ptr,ptr,paramvalue,vptr)
t�m  � token>=var_token � I%>1 � �get_num_or_var(ptr,ptr,paramvalue,varflag):� varflag � ?tokptr=?tokptr+&10
t�  � token<var_token �
t��  � �line$,ptr,1)=�34 �decode_string(line$,ptr,ptr,paramvalue,�fntype(p_info)) � �decode_parameter(line$,ptr,ptr,paramvalue,vptr)
t�  �
t�  � errflag � �@Du
t�^  � paramvalue>info%(info_ptr,I%+2) �error(2,�(info%(info_ptr,I%+2))+" ("+temp$+")"):�@Du
t�*  � info%(info_ptr,I%+2)<256 � bytes=1
t�G  � info%(info_ptr,I%+2)>255 � info%(info_ptr,I%+2)<65536 � bytes=2
t�,  � info%(info_ptr,I%+2)>65535 � bytes=3
t�  � J%=0 � bytes-1
u%    J%?prgptr=paramvalue � 256^J%
u
  � J%
u  prgptr+=bytes
u&� I%
u0�
u:�
uD&� ptr>=(len-1) � token=0 � errflag
uN,� token=0 � errflag � �restore_end:�@bu
uX?prgptr=13:prgptr+=1
ub�
ul
uv� �restore_end
u�prgptr=oldptr:?prgptr=0
u��
u�
u�� �error(err_num,err$)
u�
errflag=�
u�;null =�errorbox(error$(err_num)+" "+err$,err_num,1,-99)
u��
u�
u�-� �find_token(A$(),search$,� token,� mid)
u�&� first,last,stop_search,found,len
u�len=� search$
u�first=1
u�last=�(A$(),1)
vstop_search=�:found=�
v�
v	�chop
v � stop_search
v**� found � token=info%(mid,0) � token=0
v4�
v>
vH� �chop
vRmid=(first+last) � 2
v\A$=A$(mid)
vf*� A$=search$ � stop_search=�:found=�:�
vp� A$>search$ �
vzlast=mid-1
v��
v�first=mid+1
v��
v� � first>last � stop_search=�
v��
v�
v�&� �lookup(search$,� token,� index)
v�� I%,found
v�token=0
v�� search$="" � �
v�/�find_token(keyword$(),search$,token,index)
v��
v�
wI%=1
w�
wQ� ��keyword$(I%),�(search$)),search$)<>0 � token=info%(I%,0):found=�:index=I%
w$	I%+=1
w.� found � I%=keywords+1
w8�
wB
wL9� �decode_parameter(line$,place,� place,� value,vptr)
wV� temp1$
w`*ȕ �" (,",�line$,place,1))<>0 place+=1
wj�
wtaȕ �"0123456789",�line$,place,1))<>0 � place<=�(line$) temp1$=temp1$+�line$,place,1):place+=1
w~�
w�%� �") ,"+�13,�line$,place,1))=0 �
w�,�error(1,": "+�line$,vptr,30)):errflag=�
w��
w�value=�(temp1$)
w��
w��
w�
w�6� �decode_string(line$,place,� place,� value,type)
w�� temp1$,dummy$,vptr
w�vptr=place-1
w�place+=1
w�
temp1$=""
x/ȕ (��34,�line$,place,1))=0 � place<�line$)
x
temp1$+=�line$,place,1)
xplace+=1
x�
x(9� ��34,�line$,place,1))<>0 � place+=1:� added 31.5.89
x2� temp1$="" �
x<value=0
xF�
xP
Ȏ type �
xZ� 1
xd7�getobn(temp1$,value,dummy$):� Find the noun number
xn� value=0 �
xxtemp1$=": "+temp1$
x�A� 1,"Badly formed/Non-existent noun: "+�line$,vptr-�temp$,20)
x��
x�C�which_obj(value,val$,refs):� Find which object/s it references
x�;� refs=1 � value=�(val$) � �error(27,temp1$+error$(37))
x��
x�$� 2:�getvbn(temp1$,value,dummy$)
x�$� 3:�getprn(temp1$,value,dummy$)
x��
x��
x��
x�
x�*� �get_var(place,� place,� value,vptr)
x�*ȕ �" (,",�line$,place,1))<>0 place+=1
y�
ychr$=�line$,place,1)
y<� chr$<"A" � chr$>"|" � �error(3,": "+�line$,vptr,30)):�
y"value=� chr$ - �"A"
y,Oplace+=1:� �line$,place,1)<>"%" � �error(3,": "+�line$,vptr,30)) � place+=1
y6�
y@
yJ3� �get_num_or_var(place,� place,� value,� flag)
yT*ȕ �" (,",�line$,place,1))<>0 place+=1
y^�
yhchr$=�line$,place,1)
yrT� �"0123456789",chr$) � flag=�:�decode_parameter(line$,place,place,value,vptr):�
y|+�get_var(place,place,value,vptr):flag=�
y��
y�
y�
� �run
y�� �
y�%ș "OS_Byte",229,0,0 � ,oldstate%
y�:err_col=11:�col(130):�col(7):ș "Wimp_SetColour",128+2
y�a� � �:�col(err_col):� �<>17 �'"Interpreter reports a run-time error: "�$:� �Pj{ � �'�$:� �Pj{
y�F� PROCclose(texthandle):PROCclose(objhandle):PROCclose(roomhandle)
y��update_data
y�� � errflag �
y�!work%=rdata%
y�work%!4=verbs+3
y�work%!8=nouns+3
zwork%!12=program%+4
zwork%!16=text%+7
zwork%!20=dict%+3
z&work%!24=odata%
z0work%!28=adjects+3
z:work%!32=preps+3
zDwork%!36=conjs+3
zNwork%!40=specs+3
zXwork%!44=noise+3
zbwork%!48=pixs+3
zl�  work%!52 is reserved
zvwork%!56=initsave
z�work%!60=last_room
z�work%!64=last_object+1
z��26,4,12
z��centre("PLEASE WAIT",0):�
z�5� datavalid � �copy_from_editor � �copy_to_editor
z�!picbuf=pbsize
z�5�("LOAD <Users$Resources>.Buttons "+�~(picbuf+4))
z�8� Read the scale factors and pixel translation table
z�Bș "Wimp_ReadPixTrans",&200,picbuf,picbuf+16,0,0,0,scale,pixtr
z�� Now PutSpriteScaled
z�<ș "OS_SpriteOp",&234,picbuf,picbuf+16,0,0,8,scale,pixtr
z�6� 28,0,textrows%-5,textcols%,0,24,0;148;scrw;scrh;
z��centre(�11," "),0):�:�
{+A%=verb_type:B%=nref:C%=aref:D%=ramsave
{*E%=pbytes:F%=work%:G%=picbuf:H%=pbsize
{
cliplen=0
{ 	� run
{*`� 26:�centre("PLEASE WAIT",26):�:�swap_data:datavalid=�:�centre(�11," "),26):�return(18,0):�
{42�changeicon(ALPSmain,swapicon,"swap",swapicon)
{>K� The copy/swap routines as used above ensure the data in the editor is
{HL� ALWAYS valid after running a game, even if it wasn't before running it
{R� 5
{\"ș ForceR,-1,0,0,scrw+1,scrh+1
{f�
{p� �
{z ș "OS_Byte",229,oldstate%,0
{�ș "OS_Byte",124
{��
{�
{�� �col(color)
{�ș "Wimp_TextColour",color
{��
{�
{�)� �find_section(code%,value%,� found)
{�4� Searches program for a match with code%,value%
{�� eg DEFPROC(3) --> &86,&03
{�A� Sets `listptr` to the address of the `code%` byte, if found
{�ptr=listptr
{�� byte1,byte2
|found=�
|%E%=pbytes:F%=work%:� setup:G%=ptr
|�
|$A%=code%:ptr=� findcode
|.&� ?ptr=value% � found=� � G%=ptr+1
|8� found � ptr=0
|B:� found � listptr=ptr-1 � listptr=program%+4+�prglen+1
|L�
|V
|`� �list(prg_part%,val$)
|j� col%,row%
|t0�fill(text_block%,text_blocksize%,dummy_spc)
|~text_rowlen%()=+0
|�ș "Hourglass_On"
|�0listptr=program%+4:line=1:last=65535:first=1
|�col%=1:row%=0
|�store=text_block%
|�existing_verb=�
|�print=�
|�
errflag=�
|�
|�Ȏ prg_part% �
|�=� 1:found=�:end1%=0:end2%=0:print=�:� Print whole program
|�0� 2:found=�:end1%=stop_token:end2%=def_token
|�#� 3,4,5:end1%=end_token:end2%=0
}�
}

}Ȏ prg_part% �
}� 3
}(*�find_section(proc_token,� val$,found)
}2token=proc_token
}<� 4
}Fexisting_verb=�
}P�getvbn(val$,verb,dummy$)
}Z'�find_section(def_token,verb,found)
}dtoken=def_token
}n� 5
}x*�find_section(exit_token,� val$,found)
}�token=exit_token
}��
}�
}�� � found �
}�9  �error(10,""+�token_to_keyword(token)+"("+val$+")")
}�*  listptr-=1:� Point to end of program
}�)  � token=def_token � existing_verb=�
}��
}�
}�5pstart=listptr:� Start address of program section
}�byte1=?listptr:found_end=�
}�ȕ byte1<>0 � � found_end
}�
eol%=�
~  ȕ byte1=13
~#    listptr+=1:�put(�13):eol%=�
~    row%+=1
~"    byte1=?listptr
~,  �
~6"  � byte1=0 � �put(�(0)):�p|
~@8  � (byte1=end1% � eol%) � byte1=end2% � found_end=�
~J1  � byte1>&BF � byte2=byte1-&10 � byte2=byte1
~T  token=byte2:listptr+=1
~^$  word$=�token_to_keyword(token)
~h  �put(word$)
~r2  � byte2=def_token � �prtdef:listptr+=1:�p|
~|H  p_info=info%(info%(token-first_token+1,2),1):params=p_info � %1111
~�)  � params=0 � ?listptr<>13 �put(" ")
~�  � params<>0 �
~�    �put("(")
~�    � I%=1 � params
~�;      maxvalue=info%(info%(token-first_token+1,2),I%+2)
~�"      � maxvalue<256 � bytes=1
~�3      � maxvalue>255 � maxvalue<65536 � bytes=2
~�$      � maxvalue>65535 � bytes=3
~�      value=0
~�      � J%=0 � bytes-1
~�+        value=value+(J%?listptr)*256^J%
~�      � J%
~�      doneit=�
>      � I%=1 � (listoption � %10)<>0 � �fntype(p_info)=1 �
        �prntobj
      �
&@        � I%=1 � (listoption � %10)<>0 � �fntype(p_info)=2 �
0          �prntvrb
:
        �
D      �
NX      � I%=1 � (word$="PREP" � word$="NOTPREP") � (listoption � %10)<>0 � �printprep
XW      � I%=2 � (word$="PUTIN" � word$="TAKEOUT") � (listoption � %10)<>0 � �prntobj
b      � � doneit �
l[        � byte1<var_token � (I%>1 � byte1<&C0) �put(�(value)) � �put(�(value+�"A")+"%")
v      �
�      listptr+=bytes
�"      � I%<>params � �put(",")
�    � I%
�    �put(")")
�     � ?listptr<>13 �put(" ")
�  �
�    byte1=?listptr
��
�� found_end �put(�13+�0)
�+text_end%=store-1:text_ptr%=text_block%
�1� text_end%<text_block% text_end%=text_block%
�3prgend=listptr:� End address of program section
�last_row%=�find_lastrow
�
�� R%=0 � last_row%
�text_rowlen%(R%)=� �row(R%)
� �
�*
�4ș "Hourglass_Off"
�>�
�H
�R� �put(text$)
�\� I%
�f� � print �
�p� text$<>"" �
�z$store=text$
��store+=� text$
���
���
��*FX3,10
���text$;
��
*FX3,0
���
���
��
��� �list_vocab(voc%)
��ș "Hourglass_On"
��print=�:store=text_block%
��0�fill(text_block%,text_blocksize%,dummy_spc)
�col%=1:row%=0
�
�
Ȏ voc% �
�$� 1: �listnouns
�.� 2: �listverbs
�8� 3: �listadjs
�B� 4: �listpreps
�L� 5: �listconjs
�V� 6: �listspecs
�`� 7: �listnoise
�j�
�t
�~+text_end%=store-1:text_ptr%=text_block%
��1� text_end%<text_block% text_end%=text_block%
��last_row%=�find_lastrow
��� R%=0 � last_row%
��!  text_rowlen%(R%)=� �row(R%)
���
��ș "Hourglass_Off"
���
��
��� �list_pix
��
� mptr
��ș "Hourglass_On"
��print=�:store=text_block%
�0�fill(text_block%,text_blocksize%,dummy_spc)
�
col%=1:row%=0
�
�
� pxn>1 �
�(mptr=pixs+3
�2� I%=1 � pxn-1
�<  �put(�(I%)+"= ")
�F  �put($mptr)
�P  mptr+=�$mptr+1
�Z$  �put(",<"+pos$(?mptr)+">"+�13)
�d
  mptr+=5
�n�
�x�put(�0)
���
��
��+text_end%=store-1:text_ptr%=text_block%
��1� text_end%<text_block% text_end%=text_block%
��last_row%=�find_lastrow
��
��� R%=0 � last_row%
��text_rowlen%(R%)=� �row(R%)
���
��
��ș "Hourglass_Off"
���
��
�� �token_to_keyword(token)
�+=keyword$(info%(token-first_token+1,2))
�
�"
� �new
�,3obn=1:vbn=1:adn=1:prn=1:cjn=1:spn=1:nsn=1:pxn=1
�6Hnxtobj=nouns:?nxtobj=obn:nxtobj?1=3:nxtobj?2=0:nxtobj+=3:?nxtobj=&FF
�@Hnxtvrb=verbs:?nxtvrb=vbn:nxtvrb?1=3:nxtvrb?2=0:nxtvrb+=3:?nxtvrb=&FF
�JJnxtadj=adjects:?nxtadj=adn:nxtadj?1=3:nxtadj?2=0:nxtadj+=3:?nxtadj=&FF
�THnxtprp=preps:?nxtprp=prn:nxtprp?1=3:nxtprp?2=0:nxtprp+=3:?nxtprp=&FF
�^Hnxtcjn=conjs:?nxtcjn=cjn:nxtcjn?1=3:nxtcjn?2=0:nxtcjn+=3:?nxtcjn=&FF
�hHnxtspn=specs:?nxtspn=spn:nxtspn?1=3:nxtspn?2=0:nxtspn+=3:?nxtspn=&FF
�rHnxtnsn=noise:?nxtnsn=nsn:nxtnsn?1=3:nxtnsn?2=0:nxtnsn+=3:?nxtnsn=&FF
�|Gnxtpxn=pixs:?nxtpxn=pxn:nxtpxn?1=3:nxtpxn?2=0:nxtpxn+=3:?nxtpxn=&FF
��%!aref=4:aref?4=0:!nref=4:nref?4=0
��prev_file$=""
���
��
��� �lvar
��vars=work%+&88
��� I%=1 � 2*num_vars � 8
��7�8)�(I% � 2 +�"A");"% = ";vars?(I%-1)+vars?I%*256;
��<�24)�(I% � 2 +�"B");"% = ";vars?(I%+1)+vars?(I%+2)*256;
��<�40)�(I% � 2 +�"C");"% = ";vars?(I%+3)+vars?(I%+4)*256;
��;�56)�(I% � 2 +�"D");"% = ";vars?(I%+5)+vars?(I%+6)*256
���
���
�
�� �listo
�� bitmask$,op$
�&Ȏ item1% �
�0)� 0: bitmask$="%11111101":op$=" AND "
�:(� 1: bitmask$="%00000010":op$=" OR "
�D)� 2: bitmask$="%11111011":op$=" AND "
�N(� 3: bitmask$="%00000100":op$=" OR "
�X�
�b*listoption=�(�listoption+op$+bitmask$)
�l�
�v
��
� �status
��F�1);"User code address = &";~usercode%;" (";usercode%;" decimal)"
��N�1);"Program bytes: ";�21);�prglen;�28);code_size%-�prglen;" bytes free."
����1)"Messages defined: "�21);�maxmsg;�28);(�text_end-text%);" characters used. ";maxtext%-(�text_end-text%);" characters free."
��U�1)"Verbs defined: "�21);vbn-1;�28);verb_size-(nxtvrb-verbs);" characters free."
��U�1)"Nouns defined: "�21);obn-1;�28);noun_size-(nxtobj-nouns);" characters free."
��\�1)"Adjectives defined: "�21);adn-1;�28);adjc_size-(nxtadj-adjects);" characters free."
��Z�1)"Objects defined: "�21);last_object;�28);maxobs-last_object" object(s) remaining."
��R�1)"Rooms defined: "�21);last_room;�28);maxrms-last_room" room(s) remaining."
��p�1)"Screen mode: ";mode%;", File: "�34+loaded$+�34", Data: ";:�col(11):� data_saved �"Saved" � �"NOT Saved"
���
��
��
�+� ------ Various Disk Operations ------
�
�� �create_dirs(app$,root$)
� � t$,l$,r$,I%,rd$,out%
�*ș "Hourglass_On"
�4!� �root$,1)<>"." � root$+="."
�>t$=root$:l$="":I%=0
�H ȕ �t$,".")<>0
�R  r$=�t$,�t$,".")-1)
�\!  � I%>0 l$=l$+"."+r$ � l$=r$
�f  I%+=1
�p  �("CDIR "+l$)
�z  t$=�t$,�t$,".")+1)
�� �
��%  � �app$,1)<>"!" � app$="!"+app$
��  app$=�app$,10)
��0  ra$=root$+app$:� path to users 'Alps' file
��  �("CDIR "+ra$)
��  �("CDIR "+ra$+".ALPS")
��   �("CDIR "+ra$+".PICTURES")
��!  �("CDIR "+ra$+".Resources")
��0  rd$=ra$+".Resources.":� Resources dir path
��7  � "SAVE "+rd$+"pbytes "+�~pbytes+"+"+�~pbyte_size
��<  �("SAVE "+rd$+"ASIobjcode "+�~asicode%+"+"+�~codesize)
��4  � "SAVE "+rd$+"buttons "+�~picbuf+"+"+�~butlen
��'  � "SETTYPE "+rd$+"buttons Sprite"
�$  � "SETTYPE "+rd$+"pbytes Data"
�,  � "SETTYPE "+rd$+"ASIobjcode Absolute"
�?  � "SAVE "+ra$+".!RunImage "+�~(picbuf+butlen)+"+"+�~ldlen
�$)  � "SETTYPE "+ra$+".!RunImage BASIC"
�.E  ș "OS_SpriteOp",256+26,sprld,"!alpsgames",app$:� Rename Sprite
�8=  ș "OS_SpriteOp",256+12,sprld,ra$+".!Sprites":� Save it
�B  out%=�(ra$+".!Run")
�L  out2%=�(ra$+".!Boot")
�V)  �#out%,"| !Run file for ALPS games"
�`+  �#out2%,"| !Boot file for ALPS games"
�j  �#out%,"|"
�t&  �#out%,"SET Alps$NoMouseInput 0"
�~  �#out%,"|"
��%  �#out%,"SET Alps$ShowAddress 0"
��  �#out%,"|"
��  �#out2%,"|"
��.  �#out%,"IconSprites <Obey$Dir>.!Sprites"
��/  �#out2%,"IconSprites <Obey$Dir>.!Sprites"
��*  �#out%,"SET AlpsGame$Dir <Obey$Dir>"
��?  �#out%,"SET AlpsGame$Resources <AlpsGame$Dir>.Resources."
��4  �#out%,"SET AlpsGame$Data <AlpsGame$Dir>.Alps"
��9  �#out%,"SET Alps$Pictures <AlpsGame$Dir>.Pictures."
��+  �#out2%,"SET AlpsGame$Dir <Obey$Dir>"
��@  �#out2%,"SET AlpsGame$Resources <AlpsGame$Dir>.Resources."
��5  �#out2%,"SET AlpsGame$Data <AlpsGame$Dir>.Alps"
�:  �#out2%,"SET Alps$Pictures <AlpsGame$Dir>.Pictures."
�
+  �#out%,"Run <AlpsGame$Dir>.!RunImage"
�  �#out%:�#out2%
�$  � "*SETTYPE "+ra$+".!Run Obey"
�(%  � "*SETTYPE "+ra$+".!Boot Obey"
�2ș "Hourglass_Off"
�<�
�F
�P� �load_bits(app$)
�ZE� Loads 'buttons' sprite and 'Loader' program into picture buffer
�dH� They will then be saved to the user's data disk by PROCcreate_dirs
�n#� �app$,1)<>"!" � app$="!"+app$
�x#bit$="<Alps$Resources>.buttons"
��)ș "OS_File",5,bit$ � ftype,,,,butlen
��� "LOAD "+bit$+" "+�~picbuf
��@ș "OS_File",5,"<Alps$Resources>.!Runimage" � ftype,,,,ldlen
��:� "LOAD <Alps$Resources>.!Runimage "+�~(picbuf+butlen)
��@ș "OS_File",5,"<Alps$Resources>.!Sprites" � ftype,,,,sprlen
��$� sprld sprlen+4:!sprld=sprlen+4
��$sprld!4=0:sprld!8=16:sprld!12=16
��:ș "OS_SpriteOp",266,sprld,"<Alps$Resources>.!Sprites"
��
cliplen=0
���
��
��� �convert(import$)
��� in%,I%,V%,ptr,T%
�ș "Hourglass_On"
�!program%=0
�program%!4=0
�"�fill(nref+4,nref_size-4,0)
�,in%=� import$
�6
�@� I%=0 � &57F
�J
 V%=�#in%
�T verbs?I%=V%
�^� I%
�hvbn=?verbs
�r(nxtvrb=verbs+(verbs?1+256*(verbs?2))
�|
��� I%=0 � &57F
��
 V%=�#in%
�� nouns?I%=V%
��� I%
��obn=?nouns
��(nxtobj=nouns+(nouns?1+256*(nouns?2))
��
��V%=�#in%
��V%=�#in%
��ptr=program%+4
��
���
��
 T%=�#in%
� ?ptr=T%:ptr+=1
� � T%>=&C0 � T%-=&10
� � T%>=&70 �
�& pb=oldpars?(T%-&70)
�0
 � pb>0 �
�:  � I%=1 � pb
�D   V%=�#in%
�N   ?ptr=V%:ptr+=1
�X   Ȏ T% �
�b9    � &A4,&A1,&92,&90,&96,&97,&A6,&9A,&AA,&87,&88,&7B
�l     � I%=1 � ?ptr=0:ptr+=1
�v-    � &7A,&A5,&B2,&B3,&B4,&B5,&B6,&B7,&B8
��     � I%=2 � ?ptr=0:ptr+=1
��   �
��
  � I%
�� �
���
��� �#in%
��	�#in%
���incprglen(ptr-5-program%)
��ș "Hourglass_Off"
���
��
��� �import_text(import$)
��� import$="" �
��error(16,"")
��
�%� "LOAD "+import$+" "+�~(text%+2)
� 
mptr=1
�*"?text%=text%?2:text%?1=text%?3
�4#text%!2=(text%?4+256*text%?5)+2
�>text%!6=text%?6
�H�
�R�
�\
�f� �import_obj(import$)
�p+� in%,O%,M%,J%,flags,state,room,mlo,mhi
�z
M%=odata%
��in%=�(import$)
��� in%=0 �error(10,""):�
��O%=�#in%
���#in%=0
��� I%=0 � O%
��&flags=�#in%:state=�#in%:room=�#in%
��mlo=�#in%:mhi=�#in%
��M%?0=flags:M%?1=state
��M%?2=room:M%?3=0
��M%?4=mlo:M%?5=mhi
��� J%=6 � o_len-1
��M%?J%=0
��� J%
�
M%+=o_len
�� I%
�last_object=O%
�$	�#in%
�.�
�8
�B� �import_rooms(import$)
�L� in%,R%,M%,J%
�V
M%=rdata%
�`in%=�(import$)
�j� in%=0 �error(10,""):�
�tR%=�#in%
�~�#in%=0
��� I%=0 � R%
��� J%=0 � 3
��M%?J%=�#in%
��� J%
��M%?4=0:M%?5=0
��� J%=6 � 13 �2
��M%?J%=�#in%:M%?(J%+1)=0
��� J%
��� J%=14 � 37
��M%?J%=0
��� J%
��M%?22=�#in%
�M%?24=�#in%
�
� J%=38 � 73
�5� (J%<42 � J%=46 � J%=47) � M%?J%=�#in% � M%?J%=0
�� J%
�(
M%+=r_len
�2� I%
�<last_room=R%
�F�
�P
�Z� �update_data
�d   �remove_markers
�n   Ȏ text_owner$ �
�x      � "texted" : �store_msg
��0     � "program" : � � text_ok � �store_prog
��/     � "vocab" : � � text_ok � �store_vocab
��     � "pix" : �store_pix
��   �
��3 i%=THEkeyicon:� icon%(i%)<>-1 �store_obj(optr)
��5 i%=THEdooricon:� icon%(i%)<>-1 �store_room(rptr)
�� �
��
��� �save_all(f$)
��� f$=full path name
��q� �f$,".")=0 � � 1,"To save, drag the file icon to a directory viewer in which there is an ALPS directory.":�
��ș "Hourglass_On"
��
�5� Changes to prevent 'Input focus' bug - 12.04.90
�F� PROCclose(texthandle):PROCclose(objhandle):PROCclose(roomhandle)
��update_data
�"� ------------------------
�,� � errflag �
�6p$=f$:f$=�leafname(p$)
�@p$=�p$,�(p$)-�(f$))
�Jd$=p$+"Alps."
�T�("SET Alps$Data "+d$)
�^$�save_objs("<Alps$Data>Objects")
�h#�save_rooms("<Alps$Data>Rooms")
�r#�save_flags("<Alps$Data>Flags")
�|$�save_pix("<Alps$Data>Pictures")
���save_vocab(f$)
��'�save_program("<Alps$Data>Program")
��!�save_text("<Alps$Data>Text")
��!�save_dict("<Alps$Data>Dict")
��$�save_pal("<Alps$Data>!Palette")
��%�save_chars("<Alps$Data>charset")
���("CREATE "+p$+f$+" 100")
��!�("SETTYPE "+p$+f$+" "+type$)
��'�("CREATE <Alps$Data>GameData 100")
��!out%=�("<Alps$Data>GameData")
���#out%,mode%
��
�#out%
��)data_saved=�:loaded$=f$:$filename%=f$
��
�2ș CreateM,,-1:� Close the 'Save as' menu/dbox
�ș "Hourglass_Off"
�&�
�0
�:� �save_vocab(fi$)
�D� fi$="" �
�N�error(16,"")
�X�
�b#�save_nouns("<Alps$Data>Nouns")
�l#�save_verbs("<Alps$Data>Verbs")
�v*�save_adjects("<Alps$Data>Adjectives")
��$�save_preps("<Alps$Data>Prepos")
��$�save_conj("<Alps$Data>Conjunc")
��%�save_spec("<Alps$Data>Specials")
��#�save_noise("<Alps$Data>Noise")
��"�save_nrefs("<Alps$Data>Nref")
��"�save_arefs("<Alps$Data>Aref")
��'�save_vtypes("<Alps$Data>VerbType")
���
���
��
��� �save_nouns(fi$)
��� fi$="" �
���error(16,"")
��
�.� "SAVE "+fi$+" "+�~nouns+" "+�~(nxtobj+1)
�� "SETTYPE "+fi$+" Data"
� �
�*�
�4
�>� �save_verbs(fi$)
�H� fi$="" �
�R�error(16,"")
�\�
�f.� "SAVE "+fi$+" "+�~verbs+" "+�~(nxtvrb+1)
�p� "SETTYPE "+fi$+" Data"
�z�
���
��
��� �save_adjects(fi$)
��� fi$="" �
���error(16,"")
���
��0� "SAVE "+fi$+" "+�~adjects+" "+�~(nxtadj+1)
��� "SETTYPE "+fi$+" Data"
���
���
��
��� �save_preps(fi$)
��� fi$="" �
��error(16,"")
��
�.� "SAVE "+fi$+" "+�~preps+" "+�~(nxtprp+1)
�$� "SETTYPE "+fi$+" Data"
�.�
�8�
�B
�L� �save_conj(fi$)
�V� fi$="" �
�`�error(16,"")
�j�
�t.� "SAVE "+fi$+" "+�~conjs+" "+�~(nxtcjn+1)
�~� "SETTYPE "+fi$+" Data"
���
���
��
��� �save_spec(fi$)
��� fi$="" �
���error(16,"")
���
��.� "SAVE "+fi$+" "+�~specs+" "+�~(nxtspn+1)
��� "SETTYPE "+fi$+" Data"
���
���
��
�� �save_noise(fi$)
�
� fi$="" �
��error(16,"")
��
�(.� "SAVE "+fi$+" "+�~noise+" "+�~(nxtnsn+1)
�2� "SETTYPE "+fi$+" Data"
�<�
�F�
�P
�Z� �save_vtypes(fi$)
�d� fi$="" �
�n�error(16,"")
�x�
��6� "SAVE "+fi$+" "+�~verb_type+"+"+�~(2*(maxvbn+1))
��� "SETTYPE "+fi$+" Data"
���
���
��
��� �save_arefs(fi$)
��� fi$="" �
���error(16,"")
���
��,� "SAVE "+fi$+" "+�~aref+"+"+�~(!aref+1)
��� "SETTYPE "+fi$+" Data"
���
���
�
�� �save_nrefs(fi$)
�� fi$="" �
�"�error(16,"")
�,�
�6,� "SAVE "+fi$+" "+�~nref+"+"+�~(!nref+1)
�@� "SETTYPE "+fi$+" Data"
�J�
�T�
�^
�h� �save_objs(fi$)
�r� fi$="" �
�|�error(16,"")
���
��(� � datavalid �swap_data:datavalid=�
��(odata%?14=optr:odata%?15=last_object
��<� "SAVE "+fi$+" "+�~odata%+"+"+�~(o_len*(last_object+1))
��� "SETTYPE "+fi$+" Data"
���
���
��
��� �save_rooms(fi$)
��� fi$="" �
���error(16,"")
���
��(� � datavalid �swap_data:datavalid=�
� !rdata%=rptr+(last_room<<16)
�:� "SAVE "+fi$+" "+�~rdata%+"+"+�~(r_len*(last_room+1))
�� "SETTYPE "+fi$+" Data"
�&�
�0�
�:
�D� �save_flags(fi$)
�N� fi$="" �
�X�error(16,"")
�b�
�lchn%=� fi$
�v� f%=0 � 7
��flag$=$(o_flags%+f%*maxd%)
���#chn%,flag$
���
��� f%=0 � 7
��flag$=$(r_flags%+f%*maxd%)
���#chn%,flag$
���
��
�#chn%
���
���
��
��� �save_pix(fi$)
��� fi$="" �
��error(16,"")
��
�-� "SAVE "+fi$+" "+�~pixs+" "+�~(nxtpxn+1)
� � "SETTYPE "+fi$+" Data"
�*�
�4�
�>
�H� �save_program(fi$)
�R� fi$="" �
�\�error(16,"")
�f�
�p4� "SAVE "+fi$+" "+�~program%+"+"+�~(�prglen+4+1)
�z� "SETTYPE "+fi$+" Data"
���
���
��
��� �save_text(fi$)
��� fi$="" �
���error(16,"")
���
��-� "SAVE "+fi$+" "+�~text%+" "+�~�text_end
��� "SETTYPE "+fi$+" Data"
���
���
��
��� �save_dict(fi$)
�� fi$="" �
��error(16,"")
��
�$>� "SAVE "+fi$+" "+�~dict%+" "+�~(dict%+?dict%+256*dict%?1)
�.� "SETTYPE "+fi$+" Data"
�8�
�B�
�L
�V� �load_all(f$)
�`� f$ is the full pathname
�jș "Hourglass_On"
�t;�close(texthandle):�close(objhandle):�close(roomhandle)
�~p$=f$:f$=�leafname(p$)
��p$=�p$,�(p$)-�(f$))
��d$=p$+"Alps."
��r$=p$+"Resources"
�� �("SET Users$Resources "+r$)
��*�("SET Alps$Pictures "+p$+"Pictures.")
���("SET Alps$Data "+d$)
��$�load_objs("<Alps$Data>Objects")
��#�load_rooms("<Alps$Data>Rooms")
��#�load_flags("<Alps$Data>Flags")
��$�load_pix("<Alps$Data>Pictures")
���load_vocab(f$)
��'�load_program("<Alps$Data>Program")
�!�load_text("<Alps$Data>Text")
�
!�load_dict("<Alps$Data>Dict")
�!�("PRINT <Alps$Data>charset")
�)data_saved=�:loaded$=f$:$filename%=f$
�(ș "Hourglass_Off"
�2�
�<
�F� �load_vocab(f$)
�P
� f$="" �
�Z�error(16,"")
�d�
�n#�load_nouns("<Alps$Data>Nouns")
�x#�load_verbs("<Alps$Data>Verbs")
��*�load_adjects("<Alps$Data>Adjectives")
��$�load_preps("<Alps$Data>Prepos")
��$�load_conj("<Alps$Data>Conjunc")
��%�load_spec("<Alps$Data>Specials")
��#�load_noise("<Alps$Data>Noise")
��'�load_vtypes("<Alps$Data>VerbType")
��"�load_nrefs("<Alps$Data>Nref")
��"�load_arefs("<Alps$Data>Aref")
���
���
��
��� �load_nouns(fi$)
��� fi$="" �
��error(16,"")
��
�� "LOAD "+fi$+" "+�~nouns
�"obn=?nouns
�,(nxtobj=nouns+(nouns?1+256*(nouns?2))
�6�
�@�
�J
�T� �load_verbs(fi$)
�^� fi$="" �
�h�error(16,"")
�r�
�|� "LOAD "+fi$+" "+�~verbs
��vbn=?verbs
��(nxtvrb=verbs+(verbs?1+256*(verbs?2))
���
���
��
��� �load_adjects(fi$)
��� fi$="" �
���error(16,"")
���
��� "LOAD "+fi$+" "+�~adjects
��adn=?adjects
��.nxtadj=adjects+(adjects?1+256*(adjects?2))
���
��
�
�� �load_preps(fi$)
�&� fi$="" �
�0�error(16,"")
�:�
�D� "LOAD "+fi$+" "+�~preps
�Nprn=?preps
�X(nxtprp=preps+(preps?1+256*(preps?2))
�b�
�l�
�v
��� �load_conj(fi$)
��� fi$="" �
���error(16,"")
���
��� "LOAD "+fi$+" "+�~conjs
��cjn=?conjs
��(nxtcjn=conjs+(conjs?1+256*(conjs?2))
���
���
��
��� �load_spec(fi$)
��� fi$="" �
���error(16,"")
��
�� "LOAD "+fi$+" "+�~specs
�spn=?specs
� (nxtspn=specs+(specs?1+256*(specs?2))
�*�
�4�
�>
�H� �load_noise(fi$)
�R� fi$="" �
�\�error(16,"")
�f�
�p� "LOAD "+fi$+" "+�~noise
�znsn=?noise
��(nxtnsn=noise+(noise?1+256*(noise?2))
���
���
��
��� �load_vtypes(fi$)
��� fi$="" �
���error(16,"")
���
��!� "LOAD "+fi$+" "+�~verb_type
���
���
��
��� �load_arefs(fi$)
�� fi$="" �
��error(16,"")
��
�$� "LOAD "+fi$+" "+�~aref
�.�
�8�
�B
�L� �load_nrefs(fi$)
�V� fi$="" �
�`�error(16,"")
�j�
�t� "LOAD "+fi$+" "+�~nref
�~�
���
��
��� �load_objs(fi$)
��� fi$="" �
���error(16,"")
���
��� "LOAD "+fi$+" "+�~odata%
��optr=odata%?14
��last_object=odata%?15
���
���
��
�� �load_rooms(fi$)
�
� fi$="" �
��error(16,"")
��
�(� "LOAD "+fi$+" "+�~rdata%
�2rptr=!rdata% � &FFFF
�<'last_room=(!rdata% � &FFFF0000)>>16
�F�
�P�
�Z
�d� �load_flags(fi$)
�n� fi$="" �
�x�error(16,"")
���
��chn%=� fi$
��� f%=0 � 7
���#chn%,flag$
��$(o_flags%+f%*maxd%)=flag$
���
��
��� f%=0 � 7
���#chn%,flag$
��$(r_flags%+f%*maxd%)=flag$
���
��
�#chn%
���
��
�
�� �load_pix(fi$)
�"� fi$="" �
�,�error(16,"")
�6�
�@� "LOAD "+fi$+" "+�~pixs
�J
pxn=?pixs
�T%nxtpxn=pixs+(pixs?1+256*(pixs?2))
�^�
�h�
�r
�|� �load_program(fi$)
��� fi$="" �
���error(16,"")
���
�� � "LOAD "+fi$+" "+�~program%
���
���
��
��� �load_text(fi$)
��� fi$="" �
���error(16,"")
���
��� "LOAD "+fi$+" "+�~text%
��
mptr=1
��
��
�
�&� �load_dict(fi$)
�0� I%,L%
�:� fi$="" �
�D�error(16,"")
�N�
�X� "LOAD "+fi$+" "+�~dict%
�btok%=dict%?2:L%=0
�l!� tok%=0 tok%=128 � tok%-=128
�v� I%=1 � tok%
��tok$(I%)=$(dict%+3+L%)
��L%+=�tok$(I%)+1
���
���
���
��
��� �setup_disk(S%)
���getw(setuph):�getpointer
��4�open(setuph,mousex%-64,mousey%,x1%-x0%,y1%-y0%)
��C�sys_claiminputfocus(setuph,2,0,0,-1,�(�geticondata(setuph,2)))
���getw(setuph)
��!ȗ ȓ x0%,y0%,x1%-x0%,y1%-y0%
��dialogue%=S%
��
�
�� �quit(S%)
� � � data_saved �
�*^ans = �errorbox("There is unsaved data in the memory. Do you really want to quit?",0,3,S%)
�4�
�>quit%=�
�H�
�R�
�\
�f� �ensure(S%,T$)
�p"dialogue%=�errorbox(T$,0,3,S%)
�z�
��
��
��'� ------ Vocabulary routines ------
��
��#� �getobn(text$,� num,� found$)
��/sptr=nouns+3:�search(sptr,text$,num,found$)
���
��
��#� �getvbn(text$,� num,� found$)
��/sptr=verbs+3:�search(sptr,text$,num,found$)
���
��
��#� �getadn(text$,� num,� found$)
�1sptr=adjects+3:�search(sptr,text$,num,found$)
��
�
�$#� �getprn(text$,� num,� found$)
�./sptr=preps+3:�search(sptr,text$,num,found$)
�8�
�B
�L#� �getcjn(text$,� num,� found$)
�V/sptr=conjs+3:�search(sptr,text$,num,found$)
�`�
�j
�t#� �getspn(text$,� num,� found$)
�~/sptr=specs+3:�search(sptr,text$,num,found$)
���
��
��#� �getnsn(text$,� num,� found$)
��/sptr=noise+3:�search(sptr,text$,num,found$)
���
��
��,� �search(sptr,search$,� number,� temp$)
��� temp$,found
��number=0
��HF%=work%:B%=sptr:$(work%+&128)=search$:� put search string in 'text'
��� search
��number=!(work%+&148)
��
�

�� �word(type,line$)
�1� Add words to the vocabulary or picture list
�(;� word types are - nouns = 1, verbs = 2, adjectives = 3
�2G�                  prepositions = 4, conjunctions = 5, specials = 6
�<)�                  picture names = 10
�F!� index,ptr,I%,len,len2,temp$
�P
�Z� line$="" � �
�d
�n#ȕ �"0123456789=",�line$,1))<>0
�xline$=�line$,2)
���
��
��ȕ �line$,1)=" "
��line$=�line$,2)
���
��
��� type<4 � type=10 �
��7end=�line$,"<"):� end=0 � �error(22,""):errflag=�:�
��-number$=�line$,end+1):line$=�line$,end-1)
��4� �number$,1)=">" � number$=�number$,�number$-1)
���
��number$=""
���
�
�� number$="" �
�
Ȏ type �
�"	� 1,3
�,number$=�(obn)
�6� 2
�@+number$="0":� Default verb type is zero
�J
�Tnumber$=""
�^�
�h�
�r
�|index=0
��ptr=�line$,",")
��
� ptr=0 �
��!a_list$(index)=�line$,maxlen)
���
��ȕ ptr<>0 � index<11
��temp$=�line$,ptr-1)
��len=�(line$)
��line$=�line$,len-ptr)
��!a_list$(index)=�temp$,maxlen)
��index+=1
��ptr=�line$,",")
���
��!a_list$(index)=�line$,maxlen)
��
�
�
Ȏ type �
�&
�0� 1
�:� obn=maxobn �
�D)�error(17,"at "+a_list$(0)):errflag=�
�N�
�X� I%=0 � index
�b  len2=� a_list$(I%)
�l  � len2>0 �
�v#  �getobn(a_list$(I%),num,fnd$)
��.  � num<>0 �error(5,a_list$(I%)):errflag=�
��>  � nxtobj+len2>noun_end-2 �error(13,error$(38)):errflag=�
��  � � errflag �
��C    $nxtobj=a_list$(I%):?(nxtobj+len2-1)=?(nxtobj+len2-1) � 128
��6    nxtobj+=len2:?nxtobj=obn:nxtobj+=1:?nxtobj=&FF
��  �
��  �
��� I%
��  � � errflag �
��    obn+=1
��L    ?nouns=obn:nouns?1=(nxtobj-nouns) � 256:nouns?2=(nxtobj-nouns) � 256
��>    ptr=1:memptr=nref+!nref:svmptr=memptr:refs=0:memptr+=1
��	    �
�0    �decode_parameter(number$,ptr,ptr,val,0)
�3    � � errflag � ?memptr=val:memptr+=1:refs+=1
�     � ptr>�number$ � errflag
� $    ?memptr=0:!nref=!nref+refs+1
�*    ?svmptr=refs
�4  �
�>�
�H� 2
�R� vbn=maxvbn �
�\)�error(18,"at "+a_list$(0)):errflag=�
�f�
�p� I%=0 � index
�z  len2=� a_list$(I%)
��  � len2>0 �
��#  �getvbn(a_list$(I%),num,fnd$)
��.  � num<>0 �error(8,a_list$(I%)):errflag=�
��>  � nxtvrb+len2>verb_end-2 �error(13,error$(39)):errflag=�
��  � � errflag �
��C    $nxtvrb=a_list$(I%):?(nxtvrb+len2-1)=?(nxtvrb+len2-1) � 128
��6    nxtvrb+=len2:?nxtvrb=vbn:nxtvrb+=1:?nxtvrb=&FF
��  �
��  �
��� I%
��� � errflag �
��	ptr=1
��,�decode_parameter(number$,ptr,ptr,val,0)
�� � errflag �
�verb_type?(2*vbn)=val
�#oloc$=�number$,ptr+1):olocflg=0
�$ � �oloc$,"C")<>0 � olocflg=1
�.*� �oloc$,"P")<>0 � olocflg=olocflg � 2
�8verb_type?(2*vbn+1)=olocflg
�B
vbn+=1
�LH?verbs=vbn:verbs?1=(nxtvrb-verbs) � 256:verbs?2=(nxtvrb-verbs) � 256
�V�
�`�
�j�
�t� 3
�~� adn=maxadj �
��)�error(19,"at "+a_list$(0)):errflag=�
���
��� I%=0 � index
��  len2=� a_list$(I%)
��  � len2>0 �
��#  �getadn(a_list$(I%),num,fnd$)
��.  � num<>0 �error(8,a_list$(I%)):errflag=�
��>  � nxtadj+len2>adjc_end-2 �error(13,error$(40)):errflag=�
��  � � errflag �
��C    $nxtadj=a_list$(I%):?(nxtadj+len2-1)=?(nxtadj+len2-1) � 128
��6    nxtadj+=len2:?nxtadj=adn:nxtadj+=1:?nxtadj=&FF
��  �
�  �
�
� I%
�  � � errflag �
�
adn+=1
�(R?adjects=adn:adjects?1=(nxtadj-adjects) � 256:adjects?2=(nxtadj-adjects) � 256
�2>    ptr=1:memptr=aref+!aref:svmptr=memptr:refs=0:memptr+=1
�<	    �
�F0    �decode_parameter(number$,ptr,ptr,val,0)
�P3    � � errflag � ?memptr=val:memptr+=1:refs+=1
�Z     � ptr>�number$ � errflag
�d$    ?memptr=0:!aref=!aref+refs+1
�n    ?svmptr=refs
�x  �
���
��� 4
��� prn=maxprep �
��)�error(20,"at "+a_list$(0)):errflag=�
���
��� I%=0 � index
��  len2=� a_list$(I%)
��  � len2>0 �
��#  �getprn(a_list$(I%),num,fnd$)
��.  � num<>0 �error(8,a_list$(I%)):errflag=�
��>  � nxtprp+len2>prep_end-2 �error(13,error$(41)):errflag=�
��  � � errflag �
��C    $nxtprp=a_list$(I%):?(nxtprp+len2-1)=?(nxtprp+len2-1) � 128
�6    nxtprp+=len2:?nxtprp=prn:nxtprp+=1:?nxtprp=&FF
�  �
�  �
�"� I%
�,  � � errflag �
�6    prn+=1
�@L    ?preps=prn:preps?1=(nxtprp-preps) � 256:preps?2=(nxtprp-preps) � 256
�J  �
�T�
�^� 5
�h� cjn=maxconj �
�r)�error(21,"at "+a_list$(0)):errflag=�
�|�
��� I%=0 � index
��  len2=� a_list$(I%)
��  � len2>0 �
��#  �getcjn(a_list$(I%),num,fnd$)
��.  � num<>0 �error(8,a_list$(I%)):errflag=�
��>  � nxtcjn+len2>conj_end-2 �error(13,error$(42)):errflag=�
��  � � errflag �
��C    $nxtcjn=a_list$(I%):?(nxtcjn+len2-1)=?(nxtcjn+len2-1) � 128
��6    nxtcjn+=len2:?nxtcjn=cjn:nxtcjn+=1:?nxtcjn=&FF
��  �
��  �
��� I%
��  � � errflag �
�    cjn+=1
�L    ?conjs=cjn:conjs?1=(nxtcjn-conjs) � 256:conjs?2=(nxtcjn-conjs) � 256
�  �
�&�
�0� 6
�:� spn=maxspec �
�D)�error(24,"at "+a_list$(0)):errflag=�
�N�
�X� I%=0 � index
�b  len2=� a_list$(I%)
�l  � len2>0 �
�v#  �getspn(a_list$(I%),num,fnd$)
��.  � num<>0 �error(8,a_list$(I%)):errflag=�
��>  � nxtspn+len2>spec_end-2 �error(13,error$(43)):errflag=�
��  � � errflag �
��C    $nxtspn=a_list$(I%):?(nxtspn+len2-1)=?(nxtspn+len2-1) � 128
��6    nxtspn+=len2:?nxtspn=spn:nxtspn+=1:?nxtspn=&FF
��  �
��  �
��� I%
��  � � errflag �
��    spn+=1
��L    ?specs=spn:specs?1=(nxtspn-specs) � 256:specs?2=(nxtspn-specs) � 256
��  �
���
�� 7
�� nsn=maxnoise �
�)�error(25,"at "+a_list$(0)):errflag=�
� �
�*� I%=0 � index
�4  len2=� a_list$(I%)
�>  � len2>0 �
�H#  �getnsn(a_list$(I%),num,fnd$)
�R.  � num<>0 �error(8,a_list$(I%)):errflag=�
�\?  � nxtnsn+len2>noise_end-2 �error(13,error$(44)):errflag=�
�f  � � errflag �
�pC    $nxtnsn=a_list$(I%):?(nxtnsn+len2-1)=?(nxtnsn+len2-1) � 128
�z6    nxtnsn+=len2:?nxtnsn=nsn:nxtnsn+=1:?nxtnsn=&FF
��  �
��  �
��� I%
��  � � errflag �
��    nsn+=1
��L    ?noise=nsn:noise?1=(nxtnsn-noise) � 256:noise?2=(nxtnsn-noise) � 256
��  �
���
��� 10
��� pxn=maxpix �
��)�error(26,"at "+a_list$(0)):errflag=�
���
��� I%=0 � index
�  len2=� a_list$(I%)
�  � len2>0 �
�=  � nxtpxn+len2>pix_end-2 �error(13,error$(45)):errflag=�
�$  � � errflag �
�.F    $nxtpxn=a_list$(I%):� ?(nxtpxn+len2-1)=?(nxtpxn+len2-1) OR 128
�8    nxtpxn+=len2+1
�B  �
�L  �
�V� I%
�`  � � errflag �
�j    loc$=�number$,1)
�t    � loc$<>"" �
�~:      � �"TBLR",loc$)<>0 � val=�"TBLR",loc$)-1 � val=0
��    � val=0
��	    �
��)    ?nxtpxn=val:nxtpxn+=5:?nxtpxn=&FF
��    pxn+=1
��G    ?pixs=pxn:pixs?1=(nxtpxn-pixs) � 256:pixs?2=(nxtpxn-pixs) � 256
��  �
���
���
���
��
��,� �getstr(test$,place,� place,� result$)
��chr$=�test$,place,1)
�� chr$=�13 � result$="":�
�
#ȕ chr$=" " � chr$="," place+=1
�chr$=�test$,place,1)
��
�(
�23� chr$<>� 34 �error(6," : "+line$):result$="":�
�<place+=1
�FNplace2=�line$,�34,place):� place2<place �error(6," : "+line$):result$="":�
�P
�Z&result$=�line$,place,place2-place)
�dplace=place2+1
�n�
�x
��� �listnouns
��� mptr,I%,J%,refs
��� obn=1 � �
��mptr=nref+4
��� I%=1 � obn-1
���put(�(I%)+"= ")
���pvok(I%,1,�):�put(",<")
��refs=?mptr
��� refs>0 �
��� J%=1 � refs
���put(�(J%?mptr))
��� J%<refs �put(",")
���
��
�mptr+=refs+1
��put(">"+�13)
�"�
�,�put(�0)
�6�
�@
�J� �listverbs
�T� vbn=1 � �
�^� I%=1 � vbn-1
�h�put(�(I%)+"= ")
�rvtype=verb_type?(2*I%)
�|%�pvok(I%,0,�):�put(",<"+�(vtype))
��%olflg=verb_type?(2*I%+1):oloc$=""
��� vtype>0 �
��!� (olflg � 1)<>0 � oloc$+="C"
��!� (olflg � 2)<>0 � oloc$+="P"
��
�put(",")
���
���put(oloc$+">"+�13)
���
���put(�0)
���
��
��� �listadjs
��� mptr,I%,J%,refs
�� adn=1 � �
�mptr=aref+4
�� I%=1 � adn-1
�&�put(�(I%)+"= ")
�0�pvok(I%,2,�):�put(",<")
�:refs=?mptr
�D� refs>0 �
�N� J%=1 � refs
�X�put(�(J%?mptr))
�b� J%<refs �put(",")
�l�
�v�
��mptr+=refs+1
���put(">"+�13)
���
���put(�0)
���
��
��� �listpreps
��� I%,J%
��� prn=1 � �
��� I%=1 � prn-1
���put(�(I%)+"= ")
���pvok(I%,3,�):�put(�13)
���
��put(�0)
��
�
� � �listconjs
�*� I%,J%
�4� cjn=1 � �
�>� I%=1 � cjn-1
�H�put(�(I%)+"= ")
�R�pvok(I%,4,�):�put(�13)
�\�
�f�put(�0)
�p�
�z
��� �listspecs
��� I%,J%
��� spn=1 � �
��� I%=1 � spn-1
���put(�(I%)+"= ")
���pvok(I%,5,�):�put(�13)
���
���put(�0)
���
��
��� �listnoise
��� I%,J%
��� nsn=1 � �
�� I%=1 � nsn-1
��put(�(I%)+"= ")
��pvok(I%,6,�):�put(�13)
�$�
�.�put(�0)
�8�
�B
�L� �store_pix
�Vș "Hourglass_On"
�`
errflag=�
�j	pxn=1
�tGnxtpxn=pixs:?nxtpxn=pxn:nxtpxn?1=3:nxtpxn?2=0:nxtpxn+=3:?nxtpxn=&FF
�~last%=�find_lastrow
��� I%=0 � last%
��"� � errflag �word(10,�row(I%))
���
��ș "Hourglass_Off"
��
���
��
��� �store_vocab
��ș "Hourglass_On"
��errflag=�:�remove_markers
��
��Ȏ voc_sect% �
�� 1
�
	obn=1
�Hnxtobj=nouns:?nxtobj=obn:nxtobj?1=3:nxtobj?2=0:nxtobj+=3:?nxtobj=&FF
�!nref=4
�(� 2
�2	vbn=1
�<Hnxtvrb=verbs:?nxtvrb=vbn:nxtvrb?1=3:nxtvrb?2=0:nxtvrb+=3:?nxtvrb=&FF
�F� 3
�P	adn=1
�ZJnxtadj=adjects:?nxtadj=adn:nxtadj?1=3:nxtadj?2=0:nxtadj+=3:?nxtadj=&FF
�d!aref=4
�n� 4
�x	prn=1
��Hnxtprp=preps:?nxtprp=prn:nxtprp?1=3:nxtprp?2=0:nxtprp+=3:?nxtprp=&FF
��� 5
��	cjn=1
��Hnxtcjn=conjs:?nxtcjn=cjn:nxtcjn?1=3:nxtcjn?2=0:nxtcjn+=3:?nxtcjn=&FF
��� 6
��	spn=1
��Hnxtspn=specs:?nxtspn=spn:nxtspn?1=3:nxtspn?2=0:nxtspn+=3:?nxtspn=&FF
��� 7
��	nsn=1
��Hnxtnsn=noise:?nxtnsn=nsn:nxtnsn?1=3:nxtnsn?2=0:nxtnsn+=3:?nxtnsn=&FF
���
��last%=�find_lastrow
��
�� I%=0 � last%
�* � � errflag �word(voc_sect%,�row(I%))
��
�"� � errflag text_ok=�
�,ș "Hourglass_Off"
�6�
�@
�J� �findnoun(obj,� J%)
�TB� Finds the number of the noun referring to a specified object
�^� M%,I%,N%,found
�h
M%=nref+4
�rȕ N%<last_object � � found
�|
J%=?M%
��� J%>0 �
��� I%=1 � J%
��� M%?I%=obj � found=�
���
���
��M%+=J%+1
��	N%+=1
���
��� found �=N% �=0
��
��
��� �which_obj(N%,� V$,� R%)
��C� Returns a string containing the objects referenced by noun N%
�%� R%=number of objects referenced
�� M%,found,I%,J%,K%
�
�&
M%=nref+4
�0� N%>1 �
�:� K%=1 � N%-1
�D J%=?M%
�N
 M%+=J%+1
�X�
�b�
�l
J%=?M%
�vR%=J%:V$=""
��� J%>0 �
��� I%=1 � J%
�� V$+=�(I%?M%)+","
���
���
���
��
��� �pvok(num,type,all)
��� temp$,found,ctr
��� num=0 � �
��
��
Ȏ type �
��� 0: sptr=verbs+3
�� 1: sptr=nouns+3
�� 2: sptr=adjects+3
�� 3: sptr=preps+3
� � 4: sptr=conjs+3
�*� 5: sptr=specs+3
�4� 6: sptr=noise+3
�>� 10: sptr=pixs+3
�H�
�R
�\A%=num:B%=sptr
�f
� � all �
�p/� pvok:temp$=$atext:� temp$<>"" �put(temp$)
�z�
��?pvokflag=0
���
��
� pvok
��� ?pvokflag=0 �
��� ctr>0 � �put(",")
��(temp$=$atext:� temp$<>"" �put(temp$)
��ctr+=1:B%=!address
���
��� ?pvokflag>0
���
���
��
��(� �nonspc(str$,place,� place,� chr$)
�ȕ �str$,place,1)=" "
�  place+=1
��
�$chr$=�str$,place,1)
�.�
�8
�B
� �dodefn
�L;� vbn=maxvbn �error(11,": "+�(maxvbn)+" "+error$(46)):�
�V?prgptr=def_token:prgptr+=1
�`
�j'�getstr(line$,ptr,ptr,vrb$):index=0
�t� errflag � �
�~!� WHILE vrb$<>"" AND index<11
�� a_list$(index)=vrb$:index+=1
��$� PROCgetstr(line$,ptr,ptr,vrb$)
��� ENDWHILE
��
��$� vrb$="" �error(1,error$(47)):�
��
��� errflag � �
��
��flag=�:index-=1
��� I%=0 � index
��#  �getvbn(a_list$(I%),num,fnd$)
��=  � num<>0 � � existing_verb �error(8,a_list$(I%)):flag=�
�  oldvbn=num
�
� I%
�
� � � flag � � existing_verb �
�(  � I%=0 � index
�2    len2=� a_list$(I%)
�<C    $nxtvrb=a_list$(I%):?(nxtvrb+len2-1)=?(nxtvrb+len2-1) � 128
�F*    nxtvrb+=len2:?nxtvrb=vbn:nxtvrb+=1
�P
  � I%
�Z.  ?prgptr=vbn:prgptr+=1:?nxtvrb=&FF:vbn+=1
�dJ  ?verbs=vbn:verbs?1=(nxtvrb-verbs) � 256:verbs?2=(nxtvrb-verbs) � 256
�n
�x�
��.� existing_verb � ?prgptr=oldvbn:prgptr+=1
���
��
��existing_verb=�
���
��
��
� �prtdef
��vrbnum=?listptr
��-�put(�32+�34):�pvok(vrbnum,0,�):�put(�34)
���
��
��� �fntype(parm)
��
� temp
�1� token=prep_token � token=notprep_token � =3
�6temp=parm � %01000000:� check if `object` function
�� temp<>0 �=1
�"4temp=parm � %00100000:� check if `verb` function
�,� temp<>0 �=2 � =0
�6
�@� �prntobj
�J	� num
�Tobjnum=?listptr
�^� objnum>last_object � �
�hnum=�findnoun(objnum,refs)
�r� refs=1 �
�|&�put(�34):�pvok(num,1,�):�put(�34)
��doneit=�
���
���
��
��� �prntvrb
��vrbnum=?listptr
��� vrbnum>=vbn � �
��)�put(�34):�pvok(vrbnum,0,�):�put(�34)
��doneit=�
���
��
��� �printprep
��	� num
�num=?listptr
�� num>=prn � �
�&�put(�34):�pvok(num,3,�):�put(�34)
�&doneit=�
�0�
�:
�D� �copy_from_editor
�N� ldptr,svptr,O%,I%,R%
�Xsvptr=initsave
�b� O%=last_object � 0 �-1
�lldptr=odata%+O%*o_len
�v!svptr=!ldptr:svptr+=4
��?svptr=ldptr?12:svptr+=1
��?svptr=ldptr?14:svptr+=1
��?svptr=ldptr?15:svptr+=1
���
��� R%=last_room � 0 �-1
��ldptr=rdata%+R%*r_len
��*?svptr=?ldptr:svptr?1=ldptr?1:svptr+=2
��� I%=54 � 73 �4
��!svptr=I%!ldptr:svptr+=4
���
���
���
��
�� �copy_to_editor
�� ldptr,svptr,O%,I%,R%
�ldptr=initsave
� � O%=last_object � 0 �-1
�*svptr=odata%+O%*o_len
�4!svptr=!ldptr:ldptr+=4
�>svptr?12=?ldptr:ldptr+=1
�Hsvptr?14=?ldptr:ldptr+=1
�Rsvptr?15=?ldptr:ldptr+=1
�\�
�f� R%=last_room � 0 �-1
�psvptr=rdata%+R%*r_len
�z*?svptr=?ldptr:svptr?1=ldptr?1:ldptr+=2
��� I%=54 � 73 �4
��I%!svptr=!ldptr:ldptr+=4
���
���
���
��
��� �swap_data
��� ldptr,svptr,O%,I%,R%,T%
��ldptr=initsave
��� O%=last_object � 0 �-1
��svptr=odata%+O%*o_len
��
T%=!svptr
��$!svptr=!ldptr:!ldptr=T%:ldptr+=4
�T%=svptr?12
�&svptr?12=?ldptr:?ldptr=T%:ldptr+=1
�T%=svptr?14
�$&svptr?14=?ldptr:?ldptr=T%:ldptr+=1
�.T%=svptr?15
�8&svptr?15=?ldptr:?ldptr=T%:ldptr+=1
�B�
�L� R%=last_room � 0 �-1
�Vsvptr=rdata%+R%*r_len
�`TT%=?svptr:?svptr=?ldptr:?ldptr=T%:T%=svptr?1:svptr?1=ldptr?1:ldptr?1=T%:ldptr+=2
�j� I%=54 � 73 �4
�tT%=I%!svptr
�~&I%!svptr=!ldptr:!ldptr=T%:ldptr+=4
���
���
���
��
��0� �errorbox(err$,err%,Errorflags,fromPlace%)
��ș CreateM,,-1
��ș Poll,,block
��!mistake = err%
��� � testing � err%=29 �
��C   err$="Sorry - not implemented in this version": Errorflags=1
���
��-� testing err$+=" (Error code: "+�(�)+")"
�U� (err% � &FF)=&C7 err$="Disk not formatted. Shall I format it now?":Errorflags=3
�
$(mistake+4) = err$+�(0)
�U� fromPlace%<>-99 � Errorflags=Errorflags � 16:t$="Message from ALPS" � t$="ALPS"
�<ș "Wimp_ReportError",mistake,Errorflags,t$ � ,dialogue%
�(ok = (dialogue%=1)
�2
�<� (err% � &FF)=&C7 � ok �
�F   *FORMAT 0 E Y
�PB   �create_dirs(�geticondata(setuph,2),�geticondata(setuph,5))
�Z�
�d
�nȎ fromPlace% �
�x#� -99: � *** a proper error ***
��� 0:� ok � �save_all(path$)
��?� 1:� ok � �load_all(path$):�open(ALPSmain,400,800,600,600)
��� 2:� ok � �create_dirs
��� 3:� ok �
��quit%=�
��Cș "Wimp_GetCaretPosition",,quitblk+20 :� Fill up first 5 words
��=quitblk!44=&1FC                         :� CTRL-SHIFT-f12
��D!quitblk=48                             :� Size of message block
��quitblk!12=0
��Gquitblk!16=8                            :� Send Key_Pressed message
��1ș "Wimp_SendMessage",17,quitblk,prequittask%
���
��� 4:� ok � quit%=�
��
�=dialogue%
�
�"
�,� �OS_Var(V$)
�6*ș "XOS_ReadVarVal",V$,0,-1 � ,,exists
�@=exists
�J
�T� �ReadVarVal(V$)
�^
� vblk 32
�h.ș "XOS_ReadVarVal",V$,vblk,32,,0,3 � ,,N%
�rvblk?N%=13
�|
=$vblk
�� 
��&� �iconbar(sprBlk, spname$, xx,yy)
��
!qBlk%=-1
��3qBlk%!4=0:qBlk%!8=0:qBlk%!12=xx*2:qBlk%!16=yy*4
��qBlk%!20=&2102
��/� qBlk%!24 (�spname$+1):$(qBlk%!24)=spname$
��qBlk%!28=sprBlk
��qBlk%!32=�spname$+1
��(ș "Wimp_CreateIcon",,qBlk% � theIc%
��=theIc%
�� 
�� 
��� �receive(block)
�ref%=block!8
�Ȏ block!16 �
�  � 0   :quit%=�
�&.  � 2   :� SaveAck from Filer/another app.
�0%            path$=�name(block+44)
�:             �save_all(path$)
�D5            !block=64:block!12=block!8:block!16=3
�N@            ș "Wimp_SendMessage",17,block,block!20,block!24
�X  � 3,5 :�load(block)
�b  � 8   :� PreQuit
�l    � � data_saved �
�v    prequittask%=block!4
��    bytes=!block
��    � I%=0 � bytes
��    quitblk!I%=block!I%
��	    �
��    quitblk!12=quitblk!8
��    block!12=block!8
��&    ș "Wimp_SendMessage",19,block
��a    ans = �errorbox("There is unsaved data in the memory. Do you really want to quit?",0,3,3)
��	    �
��+  � &502:�help(block!32,block!36,block)
��  � &400C1:� mode change
��   mode%=�
��   �getmodeinfo
�D   �assemble(armcode%):� Need to allow for different screen size
��   � scrnsize>oldsize � null=�errorbox("Warning! It may not be possible to display pictures in this mode due to memory restrictions. To display pictures quit ALPS and restart in this mode.",0,1,5)
��
� �
�*
�4� �load(b)
�>ourtype=�("&"+type$)
�H� b!40 = ourtype �
�R  path$=�name(b+44)
�\  � � data_saved �
�f    �LoadAck
�p\    �ensure(1,"Unsaved data in memory. Please confirm that you want to load this file.")
�z	    �
��A    � Copy 'block' to preserve 'Load' message data - 12.04.90
��    � I%=0 � &200 � 4
��    block2!I%=b!I%
��	    �
��    �load_all(path$)
��    � Restore block
��    � I%=0 � &200 � 4
��    b!I%=block2!I%
��	    �
��    �LoadAck
��'    �open(ALPSmain,400,800,600,600)
��  �
���
��
�
�� �LoadAck
�$)block!12=block!8:block!16=4:!block=64
�.*ș "Wimp_SendMessage",17,block,block!4
�8�
�B
�L� �save
�V$path$=�geticondata(savehandle,2)
�`�getpointer
�j4block!20=64:block!32=0:block!36=1:� DataSave MSG
�tEblock!40=handle%:block!44=icon%:block!48=mousex%:block!52=mousey%
�~.block!56=10000:� Estimated size of data???
��%block!60=�("&"+type$):� File type
��#$(block+64)=�leafname(path$)+�0
��3ș "Wimp_SendMessage",17,block+20,handle%,icon%
���
��
��� �name(indx)
��� f$,g$,p,i
��
��ȕ ?indx<>0
��f$+=�(?indx):indx+=1
���
��=f$
�
�
� �leafname(f$)
�p=1
��
�((i=�f$,"."):� i<>0 p=i+1:�f$,i,1)="#"
�2	� i=0
�<
f$=�f$,p)
�F=f$
�P
�Z� �tick_objected
�d'flags%=�(�geticondata(objhandle,8))
�n� fl%=7 � 0 � -1
�x  flag%=flags% � 2^fl%
��  flags%=flags% � 2^fl%
��#  ptr=(m_objflag+28+(7-fl%)*24)
��  � flag%=1 �
��    ?ptr=?ptr � 1
��  � ?ptr=?ptr � %11111110
��  �
��	� fl%
��=0
��
��� �tick_message
��  ptr=0
��  � I%=1 � maxsw%
��)    $(swdata%+ptr)=�(switch_vals(I%))
�    ptr+=12
�    � I%>switch_vals(0) �
�=      ?(m_switch%+28+24*I%)=(?(m_switch%+28+24*I%) � &FE)
�"	    �
�,;      ?(m_switch%+28+24*I%)=(?(m_switch%+28+24*I%) � 1)
�6	    �
�@  �
�JK�  $(m_text%+5)=STR$(mptr) - Not needed now msg# is in window title bar
�Tk  � switch_vals(0)<>0 � ?(m_switch%+28)=(?(m_switch%+28) � &FE) � ?(m_switch%+28)=(?(m_switch%+28) � 1)
�^  � overwrite �
�h-    ?(m_text%+28+24)=?(m_text%+28+24) � 1
�r)    ?(m_text%+28)=?(m_text%+28) � &FE
�|  �
��/    ?(m_text%+28+24)=?(m_text%+28+24) � &FE
��'    ?(m_text%+28)=?(m_text%+28) � 1
��  �
��=0
��
��� �tick_program
��  � overwrite �
��-    ?(m_prog%+28+24)=?(m_prog%+28+24) � 1
��)    ?(m_prog%+28)=?(m_prog%+28) � &FE
��  �
��/    ?(m_prog%+28+24)=?(m_prog%+28+24) � &FE
��'    ?(m_prog%+28)=?(m_prog%+28) � 1
��  �
�  � (listoption � %10)<>0 �
�3    ?(m_listopts+28+24)=?(m_listopts+28+24) � 1
�/    ?(m_listopts+28)=?(m_listopts+28) � &FE
�&  �
�05    ?(m_listopts+28+24)=?(m_listopts+28+24) � &FE
�:-    ?(m_listopts+28)=?(m_listopts+28) � 1
�D  �
�N=0
�X
�b� �tick_vocab
�l  � overwrite �
�v/    ?(m_vocab%+28+24)=?(m_vocab%+28+24) � 1
��+    ?(m_vocab%+28)=?(m_vocab%+28) � &FE
��  �
��1    ?(m_vocab%+28+24)=?(m_vocab%+28+24) � &FE
��)    ?(m_vocab%+28)=?(m_vocab%+28) � 1
��  �
��  � I%=1 � 7
��    � I%=voc_sect% �
��?      ?(m_vocab%+28+24*(I%+4))=?(m_vocab%+28+24*(I%+4)) � 1
��	    �
��A      ?(m_vocab%+28+24*(I%+4))=?(m_vocab%+28+24*(I%+4)) � &FE
��	    �
��
  � I%
��=0
�
�
�� �tick_
� =0
�*
�4
�>� �tick_roomedit
�H2� First set the 'tick' bits for each menu item
�R)flags%=�(�geticondata(roomhandle,34))
�\� fl%=7 � 0 � -1
�f  flag%=flags% � 2^fl%
�p  flags%=flags% � 2^fl%
�z"  ptr=(m_rmflag+28+(7-fl%)*24)
��  � flag%=1 �
��    ?ptr=?ptr � 1
��  � ?ptr=?ptr � %11111110
��  �
��	� fl%
��=0
��
��
��� �tick_exitedit
��2� First set the 'tick' bits for each menu item
��*flags%=?(rdata%+rptr*r_len+oldrmicon%)
��� fl%=7 � 0 � -1
��  flag%=flags% � 2^fl%
�  flags%=flags% � 2^fl%
�!  ptr=(m_exitf+28+(7-fl%)*24)
�  � flag%=1 �
�$    ?ptr=?ptr � 1
�.  � ?ptr=?ptr � %11111110
�8  �
�B	� fl%
�L=0
�V
�`
�j� �button_misc
�ticon%(THEmiscicon)=-1
�~=0
ˆ
’
œ� �tick_misc
¦   ptr=(miscmenu+28+48)
°   � datavalid �
º      ?ptr = ?ptr � 1
��   �
��!      ?ptr = ?ptr � %11111110
��   �
��=0
��
�
�� �help(w,h,b)
�
� help$
�
Ȏ w �
��� -2:help$="This is the ALPS icon.|MClick SELECT to choose an editor.|MClick MENU to quit.|MDrag an 'Alps' file icon to the ALPS icon to load it."
�(� ALPSmain
�2%help$="Click SELECT to open the "
�<
Ȏ h �
�FN� 0:help$="Click SELECT to Save files or Set up a disk for use with ALPS."
�PF� 1:help$="Click SELECT to display the ALPS variables and status."
�Zq� 2:help$+="Room Editor and enter your map details.|MClick MENU Print the room data or Import BBC room data."
�d� 3:help$+="Object Editor and enter your object details.|MClick MENU to Print the objects data or Import BBC objects data."
�nZ� 4:help$+="Message Editor.|MClick MENU to Print the messages or Import BBC messages."
�xC� 5:help$="This is the Alpine Software logo. It has no effect."
�� 6:help$+="Program Editor and enter the game's logic.|MClick MENU to Print the program, Import a BBC program or Run the game."
�� 7:help$+="Character Designer.|MDouble-click a 'BBC font' file to Load a character set.|MCurrent character set is saved with your game."
Öo� 8:help$+="Vocabulary Editor and enter nouns, verbs, adjectives etc.|MClick MENU to Print the vocabulary."
� 9:help$="Click SELECT to swap the original data in the editors with the data values obtained during a run of the game.|MA "+�128+" indicates data is original. An X indicates post-run data."
êg� 10:help$+="Picture Editor and edit the picture filenames.|MClick MENU to Print the Picture list."
ôf help$="Click SELECT to choose an editor.|MTo load an 'Alps' file, drag its icon to this window."
þ�
��� roomhandle
��help$="Click SELECT to "
��
Ȏ h �
��( � 1:help$+="edit the room's flags."
��0 � 5:help$+="display the first room's data."
�/ � 6:help$+="display the last room's data."
�/ � 7:help$+="display the next room's data."
�3 � 8:help$+="display the previous room's data."
�( � 9:help$+="move forward 10 rooms."
�"& � 10:help$+="move back 10 rooms."
�,, � 11:help$+="enter the displayed data."
�6+ � 12:help$+="make this the last room."
�@a � 54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69:help$="Click MENU to edit the exit flags."
�J  help$=""
�T�
�^� objhandle
�h help$="Click SELECT to "
�r Ȏ h �
�|+  � 0:help$+="edit the object's flags."
Ć3  � 5:help$+="display the first object's data."
Đ2  � 6:help$+="display the last object's data."
Ě3  � 27:help$+="display the next object's data."
Ĥ7  � 16:help$+="display the previous object's data."
Į,  � 20:help$+="move forward 10 objects."
ĸ)  � 21:help$+="move back 10 objects."
��-  � 17:help$+="enter the displayed data."
��.  � 22:help$+="make this the last object."
��'  � 26:help$+="create a container."
��   help$=""
�� �
��� texthandle
�1help$="Click SELECT to position the caret.|M"
�l� text_owner$<>"pix" help$+="Click MENU to pop up a menu.|MClick ADJUST or press F9 to insert a marker."
�� design
�help$="Click SELECT to "
�
Ȏ � �
�&, � h=66:help$+="display next character."
�00 � h=67:help$+="display previous character."
�:2 � h=68:help$+="choose a different character."
�D9 � h=64:help$="This shows the character actual size."
�N0 � (h>=0 � h<64):help$+="toggle this block."
�X.  help$="This is the Character Designer."
�b�
�l�
�vb!16=&503:� Send a message
ŀ
b!12=ref%
Ŋ$(b+20)=help$
Ŕ!b!0=(((20+�(help$)+1)�4)*4)+4
Ş$(b+21+�(help$))=�(0)
Ũș "Wimp_SendMessage",17,b
Ų�
ż
��� �readPalette
��� col=0 � 15
���readpal(col,16)
��-rgb(col,1)=r%:rgb(col,2)=g%:rgb(col,3)=b%
���
��readpal(16,24)
�*rgb(16,1)=r%:rgb(16,2)=g%:rgb(16,3)=b%
�� col=17 � 19
��readpal(col-16,25)
� -rgb(col,1)=r%:rgb(col,2)=g%:rgb(col,3)=b%
�*�
�4�
�>
�H� �readpal(l%,p%)
�R;� Read the rgb values for logical/physical colour l%,p%
�\%ș ReadPal,l%,p% � R0,R1,palette%
�fr%=(palette%>> 8)�&FF
�pg%=(palette%>>16)�&FF
�zb%=(palette%>>24)�&FF
Ƅ�
�
00000000  0d 00 0a 18 f4 20 3e 24  2e 21 41 4c 50 53 2e 21  |..... >$.!ALPS.!|
00000010  52 75 6e 49 6d 61 67 65  0d 00 14 32 f4 20 a9 20  |RunImage...2. . |
00000020  41 6c 70 69 6e 65 20 53  6f 66 74 77 61 72 65 2f  |Alpine Software/|
00000030  50 68 69 6c 69 70 20 48  61 77 74 68 6f 72 6e 65  |Philip Hawthorne|
00000040  20 31 39 38 39 2c 31 39  39 30 0d 00 1e 2a f4 20  | 1989,1990...*. |
00000050  57 69 74 68 20 6d 6f 64  69 66 69 63 61 74 69 6f  |With modificatio|
00000060  6e 73 20 62 79 20 4b 65  69 74 68 20 4d 63 41 6c  |ns by Keith McAl|
00000070  70 69 6e 65 0d 00 28 20  76 65 72 73 69 6f 6e 24  |pine..( version$|
00000080  3d 22 35 2e 30 39 41 2c  20 33 2d 4d 61 72 2d 31  |="5.09A, 3-Mar-1|
00000090  39 39 31 22 0d 00 32 04  0d 00 3c 34 de 20 62 6c  |991"..2...<4. bl|
000000a0  6f 63 6b 20 26 32 30 30  2c 62 6c 6f 63 6b 32 20  |ock &200,block2 |
000000b0  26 32 30 30 2c 6d 69 73  74 61 6b 65 20 33 30 30  |&200,mistake 300|
000000c0  2c 71 75 69 74 62 6c 6b  20 31 30 30 0d 00 46 04  |,quitblk 100..F.|
000000d0  0d 00 50 2d ee 20 85 20  eb 20 30 3a f1 20 f6 24  |..P-. . . 0:. .$|
000000e0  3a f1 20 22 3a 22 3b 9e  3a c8 99 22 57 69 6d 70  |:. ":";.:.."Wimp|
000000f0  5f 43 6c 6f 73 65 44 6f  77 6e 22 3a e0 0d 00 5a  |_CloseDown":...Z|
00000100  04 0d 00 64 11 40 25 3d  26 31 30 3a 63 74 72 25  |...d.@%=&10:ctr%|
00000110  3d 30 0d 00 6e 0b 6d 6f  64 65 25 3d eb 0d 00 78  |=0..n.mode%=...x|
00000120  0d 74 65 73 74 69 6e 67  3d a3 0d 00 82 41 72 65  |.testing=....Are|
00000130  73 6f 75 72 63 65 73 5f  6f 6b 3d a4 4f 53 5f 56  |sources_ok=.OS_V|
00000140  61 72 28 22 41 6c 70 73  24 52 65 73 6f 75 72 63  |ar("Alps$Resourc|
00000150  65 73 22 29 20 80 20 a4  4f 53 5f 56 61 72 28 22  |es") . .OS_Var("|
00000160  41 6c 70 73 24 44 61 74  61 22 29 0d 00 8c 04 0d  |Alps$Data").....|
00000170  00 96 19 c8 99 20 22 4f  53 5f 47 65 74 45 6e 76  |..... "OS_GetEnv|
00000180  22 20 b8 20 45 6e 76 24  0d 00 a0 1e 49 25 3d a7  |" . Env$....I%=.|
00000190  45 6e 76 24 2c bd 33 34  2c a7 45 6e 76 24 2c bd  |Env$,.34,.Env$,.|
000001a0  33 34 29 2b 31 29 0d 00  aa 13 65 66 24 3d c1 45  |34)+1)....ef$=.E|
000001b0  6e 76 24 2c 49 25 2b 31  29 0d 00 b4 12 c8 95 20  |nv$,I%+1)...... |
000001c0  c0 65 66 24 2c 31 29 3d  22 20 22 0d 00 be 0f 65  |.ef$,1)=" "....e|
000001d0  66 24 3d c1 65 66 24 2c  32 29 0d 00 c8 05 ce 0d  |f$=.ef$,2)......|
000001e0  00 d2 04 0d 00 dc 1e 74  68 65 4c 61 73 74 4d 65  |.......theLastMe|
000001f0  6e 75 20 3d 20 30 20 3a  20 74 69 63 6b 24 3d 22  |nu = 0 : tick$="|
00000200  22 0d 00 e6 04 0d 00 f0  0f 74 79 70 65 24 3d 22  |"........type$="|
00000210  43 46 38 22 0d 00 fa 04  0d 01 04 0f de 20 74 65  |CF8"......... te|
00000220  6d 70 42 6c 6b 20 34 0d  01 0e 15 24 74 65 6d 70  |mpBlk 4....$temp|
00000230  42 6c 6b 20 3d 20 22 54  41 53 4b 22 0d 01 18 35  |Blk = "TASK"...5|
00000240  c8 99 20 22 57 69 6d 70  5f 49 6e 69 74 69 61 6c  |.. "Wimp_Initial|
00000250  69 73 65 22 2c 32 30 30  2c 21 74 65 6d 70 42 6c  |ise",200,!tempBl|
00000260  6b 2c 22 41 4c 50 53 22  20 b8 20 2c 74 61 73 6b  |k,"ALPS" . ,task|
00000270  25 0d 01 22 04 0d 01 2c  96 e7 20 ac 20 72 65 73  |%.."...,.. . res|
00000280  6f 75 72 63 65 73 5f 6f  6b 20 8c 20 85 20 31 2c  |ources_ok . . 1,|
00000290  22 54 68 65 20 41 4c 50  53 20 72 65 73 6f 75 72  |"The ALPS resour|
000002a0  63 65 73 20 61 72 65 20  6e 6f 74 20 61 76 61 69  |ces are not avai|
000002b0  6c 61 62 6c 65 2e 20 4f  70 65 6e 20 75 70 20 74  |lable. Open up t|
000002c0  68 65 20 64 69 72 65 63  74 6f 72 79 20 76 69 65  |he directory vie|
000002d0  77 65 72 20 77 69 74 68  20 21 41 4c 50 53 20 69  |wer with !ALPS i|
000002e0  6e 20 69 74 2e 22 3a c8  99 20 22 57 69 6d 70 5f  |n it.":.. "Wimp_|
000002f0  43 6c 6f 73 65 44 6f 77  6e 22 2c 74 61 73 6b 25  |CloseDown",task%|
00000300  2c 21 74 65 6d 70 42 6c  6b 3a e0 0d 01 36 13 f2  |,!tempBlk:...6..|
00000310  69 6e 73 74 61 6c 6c 5f  74 65 78 74 65 64 0d 01  |install_texted..|
00000320  40 0a f2 69 6e 69 74 32  0d 01 4a 2b ee 20 85 20  |@..init2..J+. . |
00000330  64 69 61 6c 6f 67 3d a4  65 72 72 6f 72 62 6f 78  |dialog=.errorbox|
00000340  28 f6 24 2c 9f 2c 31 2c  2d 39 39 29 3a e5 20 8d  |(.$,.,1,-99):. .|
00000350  64 74 41 0d 01 54 08 f2  6e 65 77 0d 01 5e 17 f2  |dtA..T..new..^..|
00000360  61 73 73 65 6d 62 6c 65  28 61 72 6d 63 6f 64 65  |assemble(armcode|
00000370  25 29 0d 01 68 30 f2 66  69 6c 6c 28 74 65 78 74  |%)..h0.fill(text|
00000380  5f 62 6c 6f 63 6b 25 2c  74 65 78 74 5f 62 6c 6f  |_block%,text_blo|
00000390  63 6b 73 69 7a 65 25 2c  64 75 6d 6d 79 5f 73 70  |cksize%,dummy_sp|
000003a0  63 29 0d 01 72 23 f2 66  69 6c 6c 28 76 65 72 62  |c)..r#.fill(verb|
000003b0  5f 74 79 70 65 2c 32 2a  28 6d 61 78 76 62 6e 2b  |_type,2*(maxvbn+|
000003c0  31 29 2c 30 29 0d 01 7c  1f f2 66 69 6c 6c 28 6e  |1),0)..|..fill(n|
000003d0  72 65 66 2b 34 2c 6e 72  65 66 5f 73 69 7a 65 2d  |ref+4,nref_size-|
000003e0  34 2c 30 29 0d 01 86 1f  f2 66 69 6c 6c 28 61 72  |4,0).....fill(ar|
000003f0  65 66 2b 34 2c 61 72 65  66 5f 73 69 7a 65 2d 34  |ef+4,aref_size-4|
00000400  2c 30 29 0d 01 90 0a f2  63 6c 65 61 72 0d 01 9a  |,0).....clear...|
00000410  27 63 6c 61 69 6d 70 6f  6c 6c 24 3d 22 22 3a 63  |'claimpoll$="":c|
00000420  6c 61 69 6d 6d 65 6e 75  24 3d 22 22 3a 71 75 69  |laimmenu$="":qui|
00000430  74 25 3d a3 0d 01 a4 04  0d 01 ae 0d 70 61 74 68  |t%=.........path|
00000440  24 3d 65 66 24 0d 01 b8  0f e7 20 65 66 24 3c 3e  |$=ef$..... ef$<>|
00000450  22 22 20 8c 0d 01 c2 1d  24 66 69 6c 65 6e 61 6d  |"" .....$filenam|
00000460  65 25 3d a4 6c 65 61 66  6e 61 6d 65 28 65 66 24  |e%=.leafname(ef$|
00000470  29 0d 01 cc 12 f2 6c 6f  61 64 5f 61 6c 6c 28 65  |).....load_all(e|
00000480  66 24 29 0d 01 d6 23 f2  6f 70 65 6e 28 41 4c 50  |f$)...#.open(ALP|
00000490  53 6d 61 69 6e 2c 34 30  30 2c 38 30 30 2c 36 30  |Smain,400,800,60|
000004a0  30 2c 36 30 30 29 0d 01  e0 05 cd 0d 01 ea 04 0d  |0,600)..........|
000004b0  01 f4 05 f5 0d 01 fe 1b  c8 99 20 50 6f 6c 6c 2c  |.......... Poll,|
000004c0  2c 62 6c 6f 63 6b 20 b8  20 72 65 61 73 6f 6e 0d  |,block . reason.|
000004d0  02 08 0f c8 8e 20 72 65  61 73 6f 6e 20 ca 0d 02  |..... reason ...|
000004e0  12 19 20 c9 20 31 3a 20  f2 72 65 64 72 61 77 28  |.. . 1: .redraw(|
000004f0  21 62 6c 6f 63 6b 29 0d  02 1c 19 20 c9 20 32 3a  |!block).... . 2:|
00000500  20 c8 99 20 4f 70 65 6e  57 2c 2c 62 6c 6f 63 6b  | .. OpenW,,block|
00000510  0d 02 26 18 20 c9 20 33  3a 20 f2 63 6c 6f 73 65  |..&. . 3: .close|
00000520  28 21 62 6c 6f 63 6b 29  0d 02 30 48 20 c9 20 36  |(!block)..0H . 6|
00000530  3a 20 f2 63 68 65 63 6b  6d 6f 75 73 65 28 21 62  |: .checkmouse(!b|
00000540  6c 6f 63 6b 2c 62 6c 6f  63 6b 21 34 2c 62 6c 6f  |lock,block!4,blo|
00000550  63 6b 21 38 2c 62 6c 6f  63 6b 21 31 32 2c 62 6c  |ck!8,block!12,bl|
00000560  6f 63 6b 21 31 36 2c 62  6c 6f 63 6b 21 32 30 29  |ock!16,block!20)|
00000570  0d 02 3a 45 20 c9 20 37  3a 20 f2 73 61 76 65 3a  |..:E . 7: .save:|
00000580  f4 20 55 73 65 72 20 68  61 73 20 64 72 61 67 67  |. User has dragg|
00000590  65 64 20 27 41 6c 70 73  27 20 66 69 6c 65 20 69  |ed 'Alps' file i|
000005a0  63 6f 6e 20 74 6f 20 61  6e 6f 74 68 65 72 20 77  |con to another w|
000005b0  69 6e 64 6f 77 0d 02 44  32 20 c9 20 38 3a 20 f2  |indow..D2 . 8: .|
000005c0  75 73 65 72 6b 65 79 70  72 65 73 73 65 64 28 21  |userkeypressed(!|
000005d0  62 6c 6f 63 6b 2c 62 6c  6f 63 6b 21 34 2c 62 6c  |block,block!4,bl|
000005e0  6f 63 6b 21 32 34 29 0d  02 4e 25 20 c9 20 39 3a  |ock!24)..N% . 9:|
000005f0  20 f2 6d 65 6e 75 73 65  6c 65 63 74 28 21 62 6c  | .menuselect(!bl|
00000600  6f 63 6b 2c 62 6c 6f 63  6b 21 34 29 0d 02 58 1d  |ock,block!4)..X.|
00000610  20 c9 20 31 37 2c 31 38  3a 20 f2 72 65 63 65 69  | . 17,18: .recei|
00000620  76 65 28 62 6c 6f 63 6b  29 0d 02 62 06 20 cb 0d  |ve(block)..b. ..|
00000630  02 6c 0b fd 20 71 75 69  74 25 0d 02 76 4e c8 99  |.l.. quit%..vN..|
00000640  20 22 57 69 6d 70 5f 43  6c 6f 73 65 44 6f 77 6e  | "Wimp_CloseDown|
00000650  22 2c 74 61 73 6b 25 2c  21 74 65 6d 70 42 6c 6b  |",task%,!tempBlk|
00000660  3a e7 20 74 65 73 74 69  6e 67 20 8c 20 ff 28 22  |:. testing . .("|
00000670  46 58 34 22 29 3a f6 3a  f1 22 20 61 74 20 6c 69  |FX4"):.:." at li|
00000680  6e 65 20 22 3b 9e 3a e0  0d 02 80 05 e0 0d 02 8a  |ne ";.:.........|
00000690  04 0d 02 94 0c dd 20 f2  69 6e 69 74 32 0d 02 9e  |...... .init2...|
000006a0  21 f2 67 65 74 6d 6f 64  65 69 6e 66 6f 3a 6f 6c  |!.getmodeinfo:ol|
000006b0  64 73 69 7a 65 3d 73 63  72 6e 73 69 7a 65 0d 02  |dsize=scrnsize..|
000006c0  a8 1b 64 61 74 61 5f 73  61 76 65 64 3d b9 3a 6c  |..data_saved=.:l|
000006d0  6f 61 64 65 64 24 3d 22  22 0d 02 b2 11 de 20 61  |oaded$=""..... a|
000006e0  5f 6c 69 73 74 24 28 31  30 29 0d 02 bc 16 73 6d  |_list$(10)....sm|
000006f0  61 6c 6c 5f 61 72 65 61  73 69 7a 65 25 3d 33 30  |all_areasize%=30|
00000700  0d 02 c6 21 de 20 73 6d  61 6c 6c 5f 61 72 65 61  |...!. small_area|
00000710  25 20 73 6d 61 6c 6c 5f  61 72 65 61 73 69 7a 65  |% small_areasize|
00000720  25 0d 02 d0 04 0d 02 da  28 de 20 44 25 28 33 29  |%.......(. D%(3)|
00000730  2c 73 68 61 64 65 25 28  31 35 29 2c 73 63 61 6c  |,shade%(15),scal|
00000740  65 20 31 35 2c 70 69 78  74 72 20 31 35 0d 02 e4  |e 15,pixtr 15...|
00000750  27 f4 20 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |'. -------------|
00000760  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000770  2d 2d 2d 2d 0d 02 ee 27  f4 20 4d 61 6e 69 66 65  |----...'. Manife|
00000780  73 74 20 63 6f 6e 73 74  61 6e 74 73 20 66 6f 72  |st constants for|
00000790  20 74 68 65 20 73 79 73  74 65 6d 0d 02 f8 04 0d  | the system.....|
000007a0  03 02 32 6d 61 78 72 6d  73 3d 31 30 30 30 3a 6d  |..2maxrms=1000:m|
000007b0  61 78 6f 62 73 3d 32 35  35 3a 6d 61 78 73 77 25  |axobs=255:maxsw%|
000007c0  3d 31 30 3a 6d 61 78 74  6f 6b 65 6e 73 3d 31 32  |=10:maxtokens=12|
000007d0  38 0d 03 0c 04 0d 03 16  20 6c 69 73 74 6f 70 74  |8....... listopt|
000007e0  69 6f 6e 3d 32 3a f4 20  44 65 66 61 75 6c 74 20  |ion=2:. Default |
000007f0  4c 49 53 54 4f 0d 03 20  04 0d 03 2a 0d de 20 70  |LISTO.. ...*.. p|
00000800  6f 73 24 28 33 29 0d 03  34 1b e3 20 49 25 3d 30  |os$(3)..4.. I%=0|
00000810  20 b8 20 33 3a f3 20 70  6f 73 24 28 49 25 29 3a  | . 3:. pos$(I%):|
00000820  ed 0d 03 3e 0d dc 20 54  2c 42 2c 4c 2c 52 0d 03  |...>.. T,B,L,R..|
00000830  48 04 0d 03 52 10 de 20  6f 6c 64 70 61 72 73 20  |H...R.. oldpars |
00000840  37 33 0d 03 5c 0f e3 20  49 25 3d 30 20 b8 20 37  |73..\.. I%=0 . 7|
00000850  32 0d 03 66 1b f3 20 42  25 3a 6f 6c 64 70 61 72  |2..f.. B%:oldpar|
00000860  73 3f 49 25 3d 42 25 20  80 20 26 46 0d 03 70 05  |s?I%=B% . &F..p.|
00000870  ed 0d 03 7a 04 0d 03 84  19 dc 20 30 2c 30 2c 30  |...z...... 0,0,0|
00000880  2c 30 2c 30 2c 31 2c 31  36 31 2c 31 39 33 0d 03  |,0,0,1,161,193..|
00000890  8e 1d dc 20 31 36 31 2c  31 39 33 2c 32 2c 31 2c  |... 161,193,2,1,|
000008a0  30 2c 31 32 38 2c 31 32  38 2c 30 0d 03 98 19 dc  |0,128,128,0.....|
000008b0  20 31 32 38 2c 30 2c 30  2c 31 32 38 2c 30 2c 31  | 128,0,0,128,0,1|
000008c0  2c 31 2c 31 0d 03 a2 17  dc 20 31 2c 36 35 2c 31  |,1,1..... 1,65,1|
000008d0  2c 30 2c 30 2c 30 2c 36  35 2c 30 0d 03 ac 25 dc  |,0,0,0,65,0...%.|
000008e0  20 31 33 30 2c 31 39 34  2c 31 33 30 2c 31 39 34  | 130,194,130,194|
000008f0  2c 31 39 33 2c 31 39 33  2c 31 32 39 2c 31 32 39  |,193,193,129,129|
00000900  0d 03 b6 23 dc 20 31 39  33 2c 31 39 33 2c 31 33  |...#. 193,193,13|
00000910  31 2c 31 39 35 2c 31 2c  31 33 30 2c 31 32 38 2c  |1,195,1,130,128,|
00000920  31 32 38 0d 03 c0 18 dc  20 32 2c 32 2c 36 36 2c  |128..... 2,2,66,|
00000930  30 2c 31 2c 36 36 2c 33  2c 36 37 0d 03 ca 18 dc  |0,1,66,3,67.....|
00000940  20 30 2c 31 2c 31 2c 36  35 2c 36 35 2c 36 35 2c  | 0,1,1,65,65,65,|
00000950  33 2c 30 0d 03 d4 1d dc  20 31 2c 31 2c 31 33 30  |3,0..... 1,1,130|
00000960  2c 31 33 30 2c 31 33 30  2c 32 2c 31 33 30 2c 32  |,130,130,2,130,2|
00000970  0d 03 de 07 dc 20 32 0d  03 e8 04 0d 03 f2 31 6d  |..... 2.......1m|
00000980  61 78 6c 65 6e 3d 31 30  3a f4 20 4d 61 78 69 6d  |axlen=10:. Maxim|
00000990  75 6d 20 77 6f 72 64 20  6c 65 6e 67 74 68 20 69  |um word length i|
000009a0  6e 20 76 6f 63 61 62 75  6c 61 72 79 0d 03 fc 04  |n vocabulary....|
000009b0  0d 04 06 33 f4 20 52 6f  6f 6d 20 61 6e 64 20 6f  |...3. Room and o|
000009c0  62 6a 65 63 74 20 64 61  74 61 20 62 6c 6f 63 6b  |bject data block|
000009d0  20 6c 65 6e 67 74 68 73  20 28 69 6e 20 62 79 74  | lengths (in byt|
000009e0  65 73 29 0d 04 10 15 72  5f 6c 65 6e 3d 37 34 3a  |es)....r_len=74:|
000009f0  6f 5f 6c 65 6e 3d 31 36  0d 04 1a 04 0d 04 24 2a  |o_len=16......$*|
00000a00  6e 75 6d 5f 76 61 72 73  3d 36 30 3a f4 20 4e 75  |num_vars=60:. Nu|
00000a10  6d 62 65 72 20 6f 66 20  41 4c 50 53 20 76 61 72  |mber of ALPS var|
00000a20  69 61 62 6c 65 73 0d 04  2e 2e 76 61 72 5f 73 69  |iables....var_si|
00000a30  7a 65 3d 6e 75 6d 5f 76  61 72 73 2a 32 3a f4 20  |ze=num_vars*2:. |
00000a40  32 20 62 79 74 65 73 20  70 65 72 20 76 61 72 69  |2 bytes per vari|
00000a50  61 62 6c 65 0d 04 38 04  0d 04 42 35 6d 61 78 6d  |able..8...B5maxm|
00000a60  73 67 3d 36 35 35 33 35  3a 6d 61 78 6f 62 6e 3d  |sg=65535:maxobn=|
00000a70  32 35 35 3a 6d 61 78 76  62 6e 3d 32 35 35 3a 6d  |255:maxvbn=255:m|
00000a80  61 78 63 6f 6e 73 74 3d  36 35 35 33 35 0d 04 4c  |axconst=65535..L|
00000a90  45 6d 61 78 61 64 6a 3d  32 35 35 3a 6d 61 78 70  |Emaxadj=255:maxp|
00000aa0  72 65 70 3d 35 30 3a 6d  61 78 63 6f 6e 6a 3d 31  |rep=50:maxconj=1|
00000ab0  30 3a 6d 61 78 73 70 65  63 3d 33 30 3a 6d 61 78  |0:maxspec=30:max|
00000ac0  6e 6f 69 73 65 3d 35 30  3a 6d 61 78 70 69 78 3d  |noise=50:maxpix=|
00000ad0  35 30 0d 04 56 04 0d 04  60 12 6e 6f 75 6e 5f 73  |50..V...`.noun_s|
00000ae0  69 7a 65 3d 33 30 30 30  0d 04 6a 12 76 65 72 62  |ize=3000..j.verb|
00000af0  5f 73 69 7a 65 3d 33 30  30 30 0d 04 74 12 61 64  |_size=3000..t.ad|
00000b00  6a 63 5f 73 69 7a 65 3d  32 30 30 30 0d 04 7e 2d  |jc_size=2000..~-|
00000b10  70 72 65 70 5f 73 69 7a  65 3d 34 30 30 3a f4 20  |prep_size=400:. |
00000b20  53 69 7a 65 20 6f 66 20  70 72 65 70 6f 73 69 74  |Size of preposit|
00000b30  69 6f 6e 73 20 6c 69 73  74 0d 04 88 2c 63 6f 6e  |ions list...,con|
00000b40  6a 5f 73 69 7a 65 3d 35  30 3a f4 20 73 69 7a 65  |j_size=50:. size|
00000b50  20 6f 66 20 63 6f 6e 6a  75 6e 63 74 69 6f 6e 73  | of conjunctions|
00000b60  20 6c 69 73 74 0d 04 92  3b 73 70 65 63 5f 73 69  | list...;spec_si|
00000b70  7a 65 3d 31 30 30 3a f4  20 73 69 7a 65 20 6f 66  |ze=100:. size of|
00000b80  20 27 73 70 65 63 69 61  6c 73 27 20 6c 69 73 74  | 'specials' list|
00000b90  20 28 49 54 2c 20 54 48  45 4d 2c 20 41 4c 4c 29  | (IT, THEM, ALL)|
00000ba0  0d 04 9c 34 6e 6f 69 73  65 5f 73 69 7a 65 3d 32  |...4noise_size=2|
00000bb0  30 30 3a f4 20 73 69 7a  65 20 6f 66 20 27 6e 6f  |00:. size of 'no|
00000bc0  69 73 65 27 20 6c 69 73  74 20 28 54 48 45 2c 41  |ise' list (THE,A|
00000bd0  2c 41 4e 29 0d 04 a6 3d  61 72 65 66 5f 73 69 7a  |,AN)...=aref_siz|
00000be0  65 3d 32 30 30 30 3a f4  20 73 69 7a 65 20 6f 66  |e=2000:. size of|
00000bf0  20 61 64 6a 65 63 74 69  76 65 20 6f 62 6a 65 63  | adjective objec|
00000c00  74 20 72 65 66 65 72 65  6e 63 65 20 74 61 62 6c  |t reference tabl|
00000c10  65 0d 04 b0 39 6e 72 65  66 5f 73 69 7a 65 3d 32  |e...9nref_size=2|
00000c20  30 30 30 3a f4 20 73 69  7a 65 20 6f 66 20 6e 6f  |000:. size of no|
00000c30  75 6e 73 20 6f 62 6a 65  63 74 20 72 65 66 65 72  |uns object refer|
00000c40  65 6e 63 65 20 74 61 62  6c 65 0d 04 ba 2d 70 69  |ence table...-pi|
00000c50  78 5f 73 69 7a 65 3d 31  30 30 30 3a f4 20 73 69  |x_size=1000:. si|
00000c60  7a 65 20 6f 66 20 70 69  78 20 66 69 6c 65 6e 61  |ze of pix filena|
00000c70  6d 65 20 6c 69 73 74 0d  04 c4 04 0d 04 ce 86 de  |me list.........|
00000c80  20 6e 6f 75 6e 73 20 6e  6f 75 6e 5f 73 69 7a 65  | nouns noun_size|
00000c90  2c 76 65 72 62 73 20 76  65 72 62 5f 73 69 7a 65  |,verbs verb_size|
00000ca0  2c 61 64 6a 65 63 74 73  20 61 64 6a 63 5f 73 69  |,adjects adjc_si|
00000cb0  7a 65 2c 70 72 65 70 73  20 70 72 65 70 5f 73 69  |ze,preps prep_si|
00000cc0  7a 65 2c 63 6f 6e 6a 73  20 63 6f 6e 6a 5f 73 69  |ze,conjs conj_si|
00000cd0  7a 65 2c 73 70 65 63 73  20 73 70 65 63 5f 73 69  |ze,specs spec_si|
00000ce0  7a 65 2c 6e 6f 69 73 65  20 6e 6f 69 73 65 5f 73  |ze,noise noise_s|
00000cf0  69 7a 65 2c 70 69 78 73  20 70 69 78 5f 73 69 7a  |ize,pixs pix_siz|
00000d00  65 0d 04 d8 04 0d 04 e2  3a de 20 61 72 65 66 20  |e.......:. aref |
00000d10  61 72 65 66 5f 73 69 7a  65 2c 6e 72 65 66 20 6e  |aref_size,nref n|
00000d20  72 65 66 5f 73 69 7a 65  2c 76 65 72 62 5f 74 79  |ref_size,verb_ty|
00000d30  70 65 20 32 2a 28 6d 61  78 76 62 6e 2b 31 29 0d  |pe 2*(maxvbn+1).|
00000d40  04 ec 04 0d 04 f6 35 6e  6f 75 6e 5f 65 6e 64 3d  |......5noun_end=|
00000d50  6e 6f 75 6e 73 2b 6e 6f  75 6e 5f 73 69 7a 65 3a  |nouns+noun_size:|
00000d60  76 65 72 62 5f 65 6e 64  3d 76 65 72 62 73 2b 76  |verb_end=verbs+v|
00000d70  65 72 62 5f 73 69 7a 65  0d 05 00 84 61 64 6a 63  |erb_size....adjc|
00000d80  5f 65 6e 64 3d 61 64 6a  65 63 74 73 2b 61 64 6a  |_end=adjects+adj|
00000d90  63 5f 73 69 7a 65 3a 70  72 65 70 5f 65 6e 64 3d  |c_size:prep_end=|
00000da0  70 72 65 70 73 2b 70 72  65 70 5f 73 69 7a 65 3a  |preps+prep_size:|
00000db0  63 6f 6e 6a 5f 65 6e 64  3d 63 6f 6e 6a 73 2b 63  |conj_end=conjs+c|
00000dc0  6f 6e 6a 5f 73 69 7a 65  3a 73 70 65 63 5f 65 6e  |onj_size:spec_en|
00000dd0  64 3d 73 70 65 63 73 2b  73 70 65 63 5f 73 69 7a  |d=specs+spec_siz|
00000de0  65 3a 6e 6f 69 73 65 5f  65 6e 64 3d 6e 6f 69 73  |e:noise_end=nois|
00000df0  65 2b 6e 6f 69 73 65 5f  73 69 7a 65 0d 05 0a 49  |e+noise_size...I|
00000e00  61 72 65 66 5f 65 6e 64  3d 61 72 65 66 2b 61 72  |aref_end=aref+ar|
00000e10  65 66 5f 73 69 7a 65 3a  6e 72 65 66 5f 65 6e 64  |ef_size:nref_end|
00000e20  3d 6e 72 65 66 2b 6e 72  65 66 5f 73 69 7a 65 3a  |=nref+nref_size:|
00000e30  70 69 78 5f 65 6e 64 3d  70 69 78 73 2b 70 69 78  |pix_end=pixs+pix|
00000e40  5f 73 69 7a 65 0d 05 14  04 0d 05 1e 17 f4 20 50  |_size......... P|
00000e50  72 69 6e 74 65 72 20 63  6f 64 65 73 20 65 74 63  |rinter codes etc|
00000e60  0d 05 28 19 63 6f 6e 64  65 6e 73 65 64 3d 31 35  |..(.condensed=15|
00000e70  3a 72 65 73 65 74 3d 36  34 0d 05 32 14 70 6c 69  |:reset=64..2.pli|
00000e80  6e 65 24 3d c4 31 33 32  2c 22 2d 22 29 0d 05 3c  |ne$=.132,"-")..<|
00000e90  14 70 6c 69 6e 65 32 24  3d c4 37 39 2c 22 2d 22  |.pline2$=.79,"-"|
00000ea0  29 0d 05 46 04 0d 05 50  4b f4 20 2d 2d 2d 2d 2d  |)..F...PK. -----|
00000eb0  2d 2d 20 53 65 74 20 75  70 20 64 61 74 61 20 61  |-- Set up data a|
00000ec0  72 65 61 73 20 66 6f 72  20 72 6f 6f 6d 73 20 61  |reas for rooms a|
00000ed0  6e 64 20 6f 62 6a 65 63  74 73 20 61 6e 64 20 63  |nd objects and c|
00000ee0  6c 65 61 72 20 74 68 65  6d 20 2d 2d 2d 2d 2d 2d  |lear them ------|
00000ef0  0d 05 5a 42 de 20 72 64  61 74 61 25 20 28 6d 61  |..ZB. rdata% (ma|
00000f00  78 72 6d 73 2b 31 29 2a  72 5f 6c 65 6e 2c 6f 64  |xrms+1)*r_len,od|
00000f10  61 74 61 25 20 28 6d 61  78 6f 62 73 2b 31 29 2a  |ata% (maxobs+1)*|
00000f20  6f 5f 6c 65 6e 2c 63 6f  6e 74 72 6f 6f 6d 25 20  |o_len,controom% |
00000f30  31 32 0d 05 64 04 0d 05  6e 1d f4 20 53 65 74 20  |12..d...n.. Set |
00000f40  75 70 20 74 68 65 20 73  61 76 65 20 62 75 66 66  |up the save buff|
00000f50  65 72 73 0d 05 78 2b 69  6e 69 74 61 72 65 61 73  |ers..x+initareas|
00000f60  69 7a 65 3d 37 2a 28 6d  61 78 6f 62 73 2b 31 29  |ize=7*(maxobs+1)|
00000f70  2b 32 32 2a 28 6d 61 78  72 6d 73 2b 31 29 0d 05  |+22*(maxrms+1)..|
00000f80  82 3d de 20 69 6e 69 74  73 61 76 65 20 69 6e 69  |.=. initsave ini|
00000f90  74 61 72 65 61 73 69 7a  65 2c 72 61 6d 73 61 76  |tareasize,ramsav|
00000fa0  65 20 69 6e 69 74 61 72  65 61 73 69 7a 65 2b 76  |e initareasize+v|
00000fb0  61 72 5f 73 69 7a 65 2b  31 32 38 0d 05 8c 2a 24  |ar_size+128...*$|
00000fc0  63 6f 6e 74 72 6f 6f 6d  25 3d 22 30 22 3a 63 6f  |controom%="0":co|
00000fd0  6e 74 5f 72 6f 6f 6d 3d  30 3a 63 6f 6e 74 61 69  |nt_room=0:contai|
00000fe0  6e 65 72 3d a3 0d 05 96  04 0d 05 a0 2b 72 70 74  |ner=........+rpt|
00000ff0  72 3d 31 3a 6f 70 74 72  3d 31 3a 6c 61 73 74 5f  |r=1:optr=1:last_|
00001000  72 6f 6f 6d 3d 31 3a 6c  61 73 74 5f 6f 62 6a 65  |room=1:last_obje|
00001010  63 74 3d 31 0d 05 aa 04  0d 05 b4 26 f4 20 61 72  |ct=1.......&. ar|
00001020  65 61 73 20 74 6f 20 73  74 6f 72 65 20 66 6c 61  |eas to store fla|
00001030  67 20 64 65 73 63 72 69  70 74 69 6f 6e 73 0d 05  |g descriptions..|
00001040  be 0c 6d 61 78 64 25 3d  31 33 0d 05 c8 27 de 20  |..maxd%=13...'. |
00001050  6f 5f 66 6c 61 67 73 25  20 6d 61 78 64 25 2a 38  |o_flags% maxd%*8|
00001060  2c 72 5f 66 6c 61 67 73  25 20 6d 61 78 64 25 2a  |,r_flags% maxd%*|
00001070  38 0d 05 d2 04 0d 05 dc  1f f4 20 53 65 74 20 74  |8......... Set t|
00001080  68 65 20 66 6c 61 67 20  64 65 73 63 72 69 70 74  |he flag descript|
00001090  69 6f 6e 73 0d 05 e6 12  e3 20 49 25 3d 37 20 b8  |ions..... I%=7 .|
000010a0  20 30 20 88 2d 31 0d 05  f0 0b f3 20 66 6c 61 67  | 0 .-1..... flag|
000010b0  24 0d 05 fa 28 24 28 6f  5f 66 6c 61 67 73 25 2b  |$...($(o_flags%+|
000010c0  49 25 2a 6d 61 78 64 25  29 3d c0 66 6c 61 67 24  |I%*maxd%)=.flag$|
000010d0  2c 6d 61 78 64 25 2d 31  29 0d 06 04 05 ed 0d 06  |,maxd%-1).......|
000010e0  0e 04 0d 06 18 12 e3 20  49 25 3d 37 20 b8 20 30  |....... I%=7 . 0|
000010f0  20 88 2d 31 0d 06 22 0b  f3 20 66 6c 61 67 24 0d  | .-1..".. flag$.|
00001100  06 2c 28 24 28 72 5f 66  6c 61 67 73 25 2b 49 25  |.,($(r_flags%+I%|
00001110  2a 6d 61 78 64 25 29 3d  c0 66 6c 61 67 24 2c 6d  |*maxd%)=.flag$,m|
00001120  61 78 64 25 2d 31 29 0d  06 36 05 ed 0d 06 40 04  |axd%-1)..6....@.|
00001130  0d 06 4a 1e f4 20 4f 62  6a 65 63 74 20 46 6c 61  |..J.. Object Fla|
00001140  67 20 64 65 73 63 72 69  70 74 69 6f 6e 73 0d 06  |g descriptions..|
00001150  54 47 dc 20 22 22 2c 22  22 2c 42 65 69 6e 67 20  |TG. "","",Being |
00001160  77 6f 72 6e 2c 57 65 61  72 61 62 6c 65 2c 53 63  |worn,Wearable,Sc|
00001170  65 6e 65 72 79 2c 49 6e  76 69 73 69 62 6c 65 2c  |enery,Invisible,|
00001180  54 61 6b 65 61 62 6c 65  2c 4c 69 67 68 74 20 73  |Takeable,Light s|
00001190  6f 75 72 63 65 0d 06 5e  04 0d 06 68 1c f4 20 52  |ource..^...h.. R|
000011a0  6f 6f 6d 20 66 6c 61 67  20 64 65 73 63 72 69 70  |oom flag descrip|
000011b0  74 69 6f 6e 73 0d 06 72  25 dc 20 22 22 2c 22 22  |tions..r%. "",""|
000011c0  2c 22 22 2c 22 22 2c 22  22 2c 22 22 2c 56 69 73  |,"","","","",Vis|
000011d0  69 74 65 64 2c 4c 69 67  68 74 0d 06 7c 04 0d 06  |ited,Light..|...|
000011e0  86 21 f4 20 52 6f 6f 6d  20 45 78 69 74 20 66 6c  |.!. Room Exit fl|
000011f0  61 67 20 64 65 73 63 72  69 70 74 69 6f 6e 73 0d  |ag descriptions.|
00001200  06 90 58 dc 20 49 6e 76  69 73 69 62 6c 65 2c 43  |..X. Invisible,C|
00001210  6c 6f 73 65 64 20 64 6f  6f 72 2c 4f 70 65 6e 20  |losed door,Open |
00001220  64 6f 6f 72 2c 4c 6f 63  6b 65 64 20 64 6f 6f 72  |door,Locked door|
00001230  2c 55 6e 6c 27 6b 65 64  20 64 6f 6f 72 2c 42 6c  |,Unl'ked door,Bl|
00001240  6f 63 6b 65 64 2c 52 65  73 65 72 76 65 64 2c 52  |ocked,Reserved,R|
00001250  65 73 65 72 76 65 64 0d  06 9a 04 0d 06 a4 13 de  |eserved.........|
00001260  20 65 78 69 74 5f 66 6c  61 67 24 28 37 29 0d 06  | exit_flag$(7)..|
00001270  ae 29 e3 20 66 6c 61 67  3d 37 20 b8 20 30 20 88  |.). flag=7 . 0 .|
00001280  2d 31 3a f3 20 65 78 69  74 5f 66 6c 61 67 24 28  |-1:. exit_flag$(|
00001290  66 6c 61 67 29 3a ed 0d  06 b8 04 0d 06 c2 1f de  |flag):..........|
000012a0  20 70 72 6f 63 25 20 31  32 2c 65 78 69 74 25 20  | proc% 12,exit% |
000012b0  31 32 2c 64 65 66 25 20  31 32 0d 06 cc 20 24 70  |12,def% 12... $p|
000012c0  72 6f 63 25 3d 22 22 3a  24 64 65 66 25 3d 22 22  |roc%="":$def%=""|
000012d0  3a 24 65 78 69 74 25 3d  22 22 0d 06 d6 04 0d 06  |:$exit%=""......|
000012e0  e0 38 f4 20 70 72 67 5f  73 65 6c 25 20 3d 20 53  |.8. prg_sel% = S|
000012f0  65 63 74 69 6f 6e 20 6f  66 20 70 72 6f 67 72 61  |ection of progra|
00001300  6d 20 73 65 6c 65 63 74  65 64 20 66 6f 72 20 65  |m selected for e|
00001310  64 69 74 69 6e 67 0d 06  ea 31 f4 20 20 20 20 20  |diting...1.     |
00001320  20 20 20 20 20 20 20 32  3d 4d 61 69 6e 2c 20 33  |       2=Main, 3|
00001330  3d 50 72 6f 63 2c 20 34  3d 44 65 66 69 6e 65 2c  |=Proc, 4=Define,|
00001340  20 35 3d 45 78 69 74 0d  06 f4 4b f4 20 70 72 6f  | 5=Exit...K. pro|
00001350  67 76 61 6c 24 20 3d 20  53 54 52 24 20 76 61 6c  |gval$ = STR$ val|
00001360  75 65 20 6f 66 20 70 72  6f 63 20 6f 72 20 65 78  |ue of proc or ex|
00001370  69 74 20 6e 75 6d 62 65  72 20 6f 72 20 6e 61 6d  |it number or nam|
00001380  65 20 6f 66 20 73 65 6c  65 63 74 65 64 20 76 65  |e of selected ve|
00001390  72 62 0d 06 fe 04 0d 07  08 1a 70 72 67 5f 73 65  |rb........prg_se|
000013a0  6c 25 3d 32 3a 70 72 6f  67 76 61 6c 24 3d 22 22  |l%=2:progval$=""|
000013b0  0d 07 12 04 0d 07 1c 3c  f4 20 76 6f 63 5f 73 65  |.......<. voc_se|
000013c0  63 74 25 20 3d 20 53 65  63 74 69 6f 6e 20 6f 66  |ct% = Section of|
000013d0  20 76 6f 63 61 62 75 6c  61 72 79 20 73 65 6c 65  | vocabulary sele|
000013e0  63 74 65 64 20 66 6f 72  20 65 64 69 74 69 6e 67  |cted for editing|
000013f0  0d 07 26 22 f4 20 20 20  20 20 20 20 20 20 20 20  |..&".           |
00001400  20 20 31 3d 4e 6f 75 6e  73 2c 20 32 3d 56 65 72  |  1=Nouns, 2=Ver|
00001410  62 73 0d 07 30 0f 76 6f  63 5f 73 65 63 74 25 3d  |bs..0.voc_sect%=|
00001420  31 0d 07 3a 04 0d 07 44  16 de 20 76 6f 63 24 28  |1..:...D.. voc$(|
00001430  38 29 2c 70 72 6f 67 24  28 36 29 0d 07 4e 5b 76  |8),prog$(6)..N[v|
00001440  6f 63 24 28 29 3d 22 22  2c 22 4e 6f 75 6e 73 22  |oc$()="","Nouns"|
00001450  2c 22 56 65 72 62 73 22  2c 22 41 64 6a 65 63 74  |,"Verbs","Adject|
00001460  69 76 65 73 22 2c 22 50  72 65 70 6f 73 69 74 69  |ives","Prepositi|
00001470  6f 6e 73 22 2c 22 43 6f  6e 6a 75 6e 63 74 69 6f  |ons","Conjunctio|
00001480  6e 73 22 2c 22 53 70 65  63 69 61 6c 73 22 2c 22  |ns","Specials","|
00001490  4e 6f 69 73 65 22 0d 07  58 34 70 72 6f 67 24 28  |Noise"..X4prog$(|
000014a0  29 3d 22 22 2c 22 22 2c  22 4d 61 69 6e 22 2c 22  |)="","","Main","|
000014b0  50 72 6f 63 65 64 75 72  65 22 2c 22 44 65 66 69  |Procedure","Defi|
000014c0  6e 65 22 2c 22 45 78 69  74 22 0d 07 62 04 0d 07  |ne","Exit"..b...|
000014d0  6c 36 70 62 73 69 7a 65  3d 28 73 63 72 6e 73 69  |l6pbsize=(scrnsi|
000014e0  7a 65 20 81 20 32 29 2b  34 30 30 3a f4 20 73 69  |ze . 2)+400:. si|
000014f0  7a 65 20 6f 66 20 70 69  63 74 75 72 65 20 62 75  |ze of picture bu|
00001500  66 66 65 72 0d 07 76 46  e7 20 70 62 73 69 7a 65  |ffer..vF. pbsize|
00001510  3c 32 35 2a 31 30 32 34  20 8c 20 70 62 73 69 7a  |<25*1024 . pbsiz|
00001520  65 3d 32 35 2a 31 30 32  34 3a f4 20 45 6e 73 75  |e=25*1024:. Ensu|
00001530  72 65 20 61 74 20 6c 65  61 73 74 20 32 35 6b 20  |re at least 25k |
00001540  2d 20 31 32 2e 30 34 2e  39 30 0d 07 80 04 0d 07  |- 12.04.90......|
00001550  8a 13 de 20 70 69 63 62  75 66 20 70 62 73 69 7a  |... picbuf pbsiz|
00001560  65 0d 07 94 04 0d 07 9e  12 70 72 67 62 73 69 7a  |e........prgbsiz|
00001570  65 3d 26 31 30 30 30 0d  07 a8 16 de 20 70 72 67  |e=&1000..... prg|
00001580  62 75 66 25 20 70 72 67  62 73 69 7a 65 0d 07 b2  |buf% prgbsize...|
00001590  04 0d 07 bc 3f f4 20 2d  2d 2d 2d 2d 2d 2d 20 53  |....?. ------- S|
000015a0  6f 6d 65 20 63 6f 6e 73  74 61 6e 74 73 20 66 6f  |ome constants fo|
000015b0  72 20 74 68 65 20 63 68  61 72 61 63 74 65 72 20  |r the character |
000015c0  64 65 73 69 67 6e 65 72  20 2d 2d 2d 2d 2d 2d 2d  |designer -------|
000015d0  0d 07 c6 04 0d 07 d0 1e  63 75 72 5f 63 68 72 25  |........cur_chr%|
000015e0  3d 97 22 41 22 3a 6d 61  78 5f 63 68 72 25 3d 31  |=."A":max_chr%=1|
000015f0  32 35 0d 07 da 10 de 20  63 68 61 72 6e 75 6d 20  |25..... charnum |
00001600  31 32 0d 07 e4 0f 24 63  68 61 72 6e 75 6d 3d 22  |12....$charnum="|
00001610  22 0d 07 ee 04 0d 07 f8  37 f4 20 2d 2d 2d 2d 2d  |".......7. -----|
00001620  2d 2d 20 44 69 6d 65 6e  73 69 6f 6e 20 74 68 65  |-- Dimension the|
00001630  20 6f 74 68 65 72 20 61  72 72 61 79 73 20 6e 65  | other arrays ne|
00001640  65 64 65 64 20 2d 2d 2d  2d 2d 2d 2d 0d 08 02 0e  |eded -------....|
00001650  75 63 73 69 7a 65 3d 35  30 30 0d 08 0c 44 c8 99  |ucsize=500...D..|
00001660  20 22 4f 53 5f 46 69 6c  65 22 2c 35 2c 22 3c 41  | "OS_File",5,"<A|
00001670  4c 50 53 24 52 65 73 6f  75 72 63 65 73 3e 2e 41  |LPS$Resources>.A|
00001680  53 49 6f 62 6a 63 6f 64  65 22 20 b8 20 66 74 79  |SIobjcode" . fty|
00001690  70 65 2c 2c 2c 2c 63 6f  64 65 73 69 7a 65 0d 08  |pe,,,,codesize..|
000016a0  16 12 70 62 79 74 65 5f  73 69 7a 65 3d 31 34 38  |..pbyte_size=148|
000016b0  0d 08 20 46 de 20 61 72  6d 63 6f 64 65 25 20 31  |.. F. armcode% 1|
000016c0  30 30 30 2c 70 62 79 74  65 73 20 70 62 79 74 65  |000,pbytes pbyte|
000016d0  5f 73 69 7a 65 2c 77 6f  72 6b 25 20 26 31 31 30  |_size,work% &110|
000016e0  30 2c 61 73 69 63 6f 64  65 25 20 63 6f 64 65 73  |0,asicode% codes|
000016f0  69 7a 65 2b 31 30 0d 08  2a 16 de 20 75 73 65 72  |ize+10..*.. user|
00001700  63 6f 64 65 25 20 75 63  73 69 7a 65 0d 08 34 4c  |code% ucsize..4L|
00001710  72 75 6e 3d 61 73 69 63  6f 64 65 25 3a 70 72 69  |run=asicode%:pri|
00001720  6e 74 6d 73 67 3d 61 73  69 63 6f 64 65 25 2b 34  |ntmsg=asicode%+4|
00001730  3a 73 65 61 72 63 68 3d  61 73 69 63 6f 64 65 25  |:search=asicode%|
00001740  2b 31 32 3a 66 69 6e 64  63 6f 64 65 3d 61 73 69  |+12:findcode=asi|
00001750  63 6f 64 65 25 2b 31 36  0d 08 3e 15 73 65 74 75  |code%+16..>.setu|
00001760  70 3d 61 73 69 63 6f 64  65 25 2b 32 30 0d 08 48  |p=asicode%+20..H|
00001770  35 ff 28 22 4c 4f 41 44  20 3c 41 4c 50 53 24 52  |5.("LOAD <ALPS$R|
00001780  65 73 6f 75 72 63 65 73  3e 2e 41 53 49 6f 62 6a  |esources>.ASIobj|
00001790  63 6f 64 65 20 22 2b c3  7e 61 73 69 63 6f 64 65  |code "+.~asicode|
000017a0  25 29 0d 08 52 0d de 20  70 61 6c 25 28 32 29 0d  |%)..R.. pal%(2).|
000017b0  08 5c 1c de 20 71 25 20  26 32 30 30 30 2c 65 72  |.\.. q% &2000,er|
000017c0  72 6f 72 61 64 64 72 25  28 34 29 0d 08 66 19 de  |roraddr%(4)..f..|
000017d0  20 69 6e 64 65 78 64 61  74 61 25 20 33 32 2a 32  | indexdata% 32*2|
000017e0  34 2b 32 30 0d 08 70 11  6d 61 78 62 75 66 25 3d  |4+20..p.maxbuf%=|
000017f0  26 33 30 30 30 0d 08 7a  26 de 20 62 75 66 66 65  |&3000..z&. buffe|
00001800  72 25 20 6d 61 78 62 75  66 25 3a 63 75 72 62 75  |r% maxbuf%:curbu|
00001810  66 66 25 3d 62 75 66 66  65 72 25 0d 08 84 11 6e  |ff%=buffer%....n|
00001820  68 25 3d 33 32 3a 6e 69  25 3d 31 31 0d 08 8e 2c  |h%=32:ni%=11...,|
00001830  de 20 68 61 6e 64 6c 65  25 28 6e 68 25 2b 31 29  |. handle%(nh%+1)|
00001840  2c 77 69 64 65 6e 74 24  28 6e 68 25 29 2c 77 70  |,wident$(nh%),wp|
00001850  74 72 25 28 6e 68 25 29  0d 08 98 3e e3 20 49 25  |tr%(nh%)...>. I%|
00001860  3d 30 b8 6e 68 25 3a 68  61 6e 64 6c 65 25 28 49  |=0.nh%:handle%(I|
00001870  25 29 3d 49 25 2d 31 3a  77 69 64 65 6e 74 24 28  |%)=I%-1:wident$(|
00001880  49 25 29 3d 22 22 3a ed  3a 68 61 6e 64 6c 65 53  |I%)="":.:handleS|
00001890  50 25 3d 6e 68 25 0d 08  a2 20 de 20 69 63 6f 6e  |P%=nh%... . icon|
000018a0  25 28 6e 69 25 2b 31 29  2c 69 63 6f 6e 62 61 72  |%(ni%+1),iconbar|
000018b0  24 28 6e 69 25 29 0d 08  ac 2e e3 20 49 25 3d 30  |$(ni%)..... I%=0|
000018c0  20 b8 20 6e 69 25 3a 69  63 6f 6e 25 28 49 25 29  | . ni%:icon%(I%)|
000018d0  3d 2d 31 3a f3 20 69 63  6f 6e 62 61 72 24 28 49  |=-1:. iconbar$(I|
000018e0  25 29 3a ed 0d 08 b6 13  69 63 6f 6e 25 28 6e 69  |%):.....icon%(ni|
000018f0  25 2b 31 29 3d 2d 31 0d  08 c0 1b 6f 6c 64 69 63  |%+1)=-1....oldic|
00001900  6f 6e 25 3d 30 3a 6f 6c  64 72 6d 69 63 6f 6e 25  |on%=0:oldrmicon%|
00001910  3d 30 0d 08 ca 04 0d 08  d4 38 f4 20 2d 2d 2d 2d  |=0.......8. ----|
00001920  2d 2d 20 4e 61 6d 65 73  20 6f 66 20 69 63 6f 6e  |-- Names of icon|
00001930  73 20 28 73 70 72 69 74  65 73 29 20 6f 6e 20 69  |s (sprites) on i|
00001940  63 6f 6e 20 62 61 72 20  2d 2d 2d 2d 2d 2d 0d 08  |con bar ------..|
00001950  de 4c dc 20 64 69 73 6b  33 35 2c 61 72 63 6c 6f  |.L. disk35,arclo|
00001960  67 6f 2c 64 6f 6f 72 2c  6b 65 79 2c 71 75 69 6c  |go,door,key,quil|
00001970  6c 2c 69 6e 66 6f 2c 6c  69 73 74 69 6e 67 2c 63  |l,info,listing,c|
00001980  68 61 72 64 65 73 2c 76  6f 63 61 62 2c 73 77 61  |hardes,vocab,swa|
00001990  70 2c 65 79 65 2c 66 61  63 65 0d 08 e8 04 0d 08  |p,eye,face......|
000019a0  f2 30 64 69 73 6b 69 63  6f 6e 3d 30 3a 74 65 78  |.0diskicon=0:tex|
000019b0  74 69 63 6f 6e 3d 34 3a  70 72 6f 67 69 63 6f 6e  |ticon=4:progicon|
000019c0  3d 36 3a 73 74 61 72 69  63 6f 6e 3d 39 39 0d 08  |=6:staricon=99..|
000019d0  fc 30 76 6f 63 61 62 69  63 6f 6e 3d 38 3a 66 61  |.0vocabicon=8:fa|
000019e0  63 65 69 63 6f 6e 3d 39  39 3a 61 72 63 69 63 6f  |ceicon=99:arcico|
000019f0  6e 3d 31 3a 73 77 61 70  69 63 6f 6e 3d 39 0d 09  |n=1:swapicon=9..|
00001a00  06 25 61 6c 70 73 69 63  6f 6e 3d 35 3a 68 65 6c  |.%alpsicon=5:hel|
00001a10  70 69 63 6f 6e 3d 31 33  3a 65 79 65 69 63 6f 6e  |picon=13:eyeicon|
00001a20  3d 31 30 0d 09 10 37 54  48 45 6b 65 79 69 63 6f  |=10...7THEkeyico|
00001a30  6e 3d 33 3a 54 48 45 64  6f 6f 72 69 63 6f 6e 3d  |n=3:THEdooricon=|
00001a40  32 3a 74 65 78 74 69 63  6f 6e 3d 34 3a 54 48 45  |2:texticon=4:THE|
00001a50  63 68 61 72 69 63 6f 6e  3d 37 0d 09 1a 04 0d 09  |charicon=7......|
00001a60  24 2e de 20 6d 65 6e 75  66 72 65 65 25 20 26 31  |$.. menufree% &1|
00001a70  38 30 30 3a 6d 65 6e 75  65 6e 64 25 3d 6d 65 6e  |800:menuend%=men|
00001a80  75 66 72 65 65 25 2b 26  31 38 30 30 0d 09 2e 14  |ufree%+&1800....|
00001a90  de 20 6d 65 6e 75 6c 69  73 74 25 20 26 31 30 30  |. menulist% &100|
00001aa0  0d 09 38 0f de 20 71 42  6c 6b 25 20 32 35 36 0d  |..8.. qBlk% 256.|
00001ab0  09 42 2b 64 78 25 3d 32  3a 6c 73 59 25 3d 34 30  |.B+dx%=2:lsY%=40|
00001ac0  3a 79 70 69 78 65 6c 25  3d 34 3a 63 68 58 25 3d  |:ypixel%=4:chX%=|
00001ad0  31 36 3a 63 68 59 25 3d  33 32 0d 09 4c 25 63 75  |16:chY%=32..L%cu|
00001ae0  72 72 65 6e 74 77 69 6e  64 6f 77 25 3d 2d 31 3a  |rrentwindow%=-1:|
00001af0  63 75 72 72 65 6e 74 69  63 6f 6e 25 3d 2d 31 0d  |currenticon%=-1.|
00001b00  09 56 0f 73 70 72 69 74  65 66 24 3d 22 22 0d 09  |.V.spritef$=""..|
00001b10  60 39 de 20 6d 62 5f 77  69 64 65 6e 74 25 20 31  |`9. mb_wident% 1|
00001b20  32 2c 66 69 6c 65 6e 61  6d 65 25 20 36 34 2c 66  |2,filename% 64,f|
00001b30  69 6c 65 6e 61 6d 65 32  25 20 36 34 2c 69 6d 70  |ilename2% 64,imp|
00001b40  6f 72 74 25 20 36 34 0d  09 6a 36 e7 20 74 65 73  |ort% 64..j6. tes|
00001b50  74 69 6e 67 20 24 66 69  6c 65 6e 61 6d 65 25 3d  |ting $filename%=|
00001b60  22 64 65 6d 6f 22 20 8b  20 24 66 69 6c 65 6e 61  |"demo" . $filena|
00001b70  6d 65 25 3d 22 73 74 61  72 74 65 72 22 0d 09 74  |me%="starter"..t|
00001b80  25 24 66 69 6c 65 6e 61  6d 65 32 25 3d 22 63 68  |%$filename2%="ch|
00001b90  61 72 73 65 74 22 3a 24  69 6d 70 6f 72 74 25 3d  |arset":$import%=|
00001ba0  22 22 0d 09 7e 28 de 20  73 74 61 72 74 28 32 30  |""..~(. start(20|
00001bb0  29 2c 73 79 73 5f 62 32  25 20 26 33 30 30 2c 6f  |),sys_b2% &300,o|
00001bc0  73 5f 62 6c 6f 63 6b 20  35 30 0d 09 88 04 0d 09  |s_block 50......|
00001bd0  92 10 f2 4b 65 79 57 6f  72 64 52 65 61 64 0d 09  |...KeyWordRead..|
00001be0  9c 11 f2 45 72 72 6f 72  4d 73 67 52 65 61 64 0d  |...ErrorMsgRead.|
00001bf0  09 a6 04 0d 09 b0 39 f4  20 2d 2d 2d 2d 2d 20 44  |......9. ----- D|
00001c00  65 66 69 6e 65 20 74 68  65 20 22 57 69 6d 70 22  |efine the "Wimp"|
00001c10  20 61 6e 64 20 22 4f 53  22 20 53 59 53 20 6e 75  | and "OS" SYS nu|
00001c20  6d 62 65 72 73 20 2d 2d  2d 2d 2d 2d 0d 09 ba 0f  |mbers ------....|
00001c30  57 69 6d 70 3d 26 34 30  30 43 30 0d 09 c4 12 43  |Wimp=&400C0....C|
00001c40  72 65 61 74 65 57 3d 57  69 6d 70 2b 31 0d 09 ce  |reateW=Wimp+1...|
00001c50  12 43 72 65 61 74 65 49  3d 57 69 6d 70 2b 32 0d  |.CreateI=Wimp+2.|
00001c60  09 d8 12 44 65 6c 65 74  65 57 3d 57 69 6d 70 2b  |...DeleteW=Wimp+|
00001c70  33 0d 09 e2 12 44 65 6c  65 74 65 49 3d 57 69 6d  |3....DeleteI=Wim|
00001c80  70 2b 34 0d 09 ec 10 4f  70 65 6e 57 3d 57 69 6d  |p+4....OpenW=Wim|
00001c90  70 2b 35 0d 09 f6 11 43  6c 6f 73 65 57 3d 57 69  |p+5....CloseW=Wi|
00001ca0  6d 70 2b 36 0d 0a 00 0f  50 6f 6c 6c 3d 57 69 6d  |mp+6....Poll=Wim|
00001cb0  70 2b 37 0d 0a 0a 12 52  65 64 72 61 77 57 3d 57  |p+7....RedrawW=W|
00001cc0  69 6d 70 2b 38 0d 0a 14  12 55 70 64 61 74 65 57  |imp+8....UpdateW|
00001cd0  3d 57 69 6d 70 2b 39 0d  0a 1e 10 47 65 74 57 3d  |=Wimp+9....GetW=|
00001ce0  57 69 6d 70 2b 31 31 0d  0a 28 11 47 65 74 57 49  |Wimp+11..(.GetWI|
00001cf0  3d 57 69 6d 70 2b 26 43  0d 0a 32 15 53 65 74 43  |=Wimp+&C..2.SetC|
00001d00  61 72 65 74 3d 57 69 6d  70 2b 26 31 32 0d 0a 3c  |aret=Wimp+&12..<|
00001d10  15 47 65 74 43 61 72 65  74 3d 57 69 6d 70 2b 26  |.GetCaret=Wimp+&|
00001d20  31 33 0d 0a 46 10 47 65  74 52 3d 57 69 6d 70 2b  |13..F.GetR=Wimp+|
00001d30  26 41 0d 0a 50 10 53 65  74 49 3d 57 69 6d 70 2b  |&A..P.SetI=Wimp+|
00001d40  26 44 0d 0a 5a 10 47 65  74 49 3d 57 69 6d 70 2b  |&D..Z.GetI=Wimp+|
00001d50  26 45 0d 0a 64 10 47 65  74 50 3d 57 69 6d 70 2b  |&E..d.GetP=Wimp+|
00001d60  26 46 0d 0a 6e 11 44 72  61 67 3d 57 69 6d 70 2b  |&F..n.Drag=Wimp+|
00001d70  26 31 30 0d 0a 78 13 46  6f 72 63 65 52 3d 57 69  |&10..x.ForceR=Wi|
00001d80  6d 70 2b 26 31 31 0d 0a  82 14 43 72 65 61 74 65  |mp+&11....Create|
00001d90  4d 3d 57 69 6d 70 2b 26  31 34 0d 0a 8c 11 53 65  |M=Wimp+&14....Se|
00001da0  74 50 3d 57 69 6d 70 2b  26 31 38 0d 0a 96 17 47  |tP=Wimp+&18....G|
00001db0  65 74 4f 75 74 6c 69 6e  65 3d 57 69 6d 70 2b 26  |etOutline=Wimp+&|
00001dc0  45 30 0d 0a a0 0f 52 65  61 64 50 61 6c 3d 26 32  |E0....ReadPal=&2|
00001dd0  46 0d 0a aa 04 0d 0a b4  46 f4 20 2d 2d 2d 2d 2d  |F.......F. -----|
00001de0  2d 20 53 65 74 20 75 70  20 6f 75 72 20 6f 77 6e  |- Set up our own|
00001df0  20 73 70 72 69 74 65 20  61 72 65 61 20 61 6e 64  | sprite area and|
00001e00  20 72 65 61 64 20 74 68  65 20 73 70 72 69 74 65  | read the sprite|
00001e10  73 20 69 6e 20 2d 2d 2d  2d 2d 2d 0d 0a be 41 c8  |s in ------...A.|
00001e20  99 20 22 4f 53 5f 46 69  6c 65 22 2c 35 2c 22 3c  |. "OS_File",5,"<|
00001e30  41 4c 50 53 24 52 65 73  6f 75 72 63 65 73 3e 2e  |ALPS$Resources>.|
00001e40  41 6c 70 73 53 70 72 69  74 65 22 20 b8 20 2c 2c  |AlpsSprite" . ,,|
00001e50  2c 2c 73 70 72 69 74 65  73 69 7a 65 0d 0a c8 11  |,,spritesize....|
00001e60  73 70 72 69 74 65 73 69  7a 65 2b 3d 34 0d 0a d2  |spritesize+=4...|
00001e70  1c de 20 73 70 72 69 74  65 61 72 65 61 25 20 73  |.. spritearea% s|
00001e80  70 72 69 74 65 73 69 7a  65 0d 0a dc 1b 21 73 70  |pritesize....!sp|
00001e90  72 69 74 65 61 72 65 61  25 3d 73 70 72 69 74 65  |ritearea%=sprite|
00001ea0  73 69 7a 65 0d 0a e6 42  c8 99 20 22 4f 53 5f 53  |size...B.. "OS_S|
00001eb0  70 72 69 74 65 4f 70 22  2c 32 36 36 2c 73 70 72  |priteOp",266,spr|
00001ec0  69 74 65 61 72 65 61 25  2c 22 3c 41 6c 70 73 24  |itearea%,"<Alps$|
00001ed0  52 65 73 6f 75 72 63 65  73 3e 2e 41 6c 70 73 53  |Resources>.AlpsS|
00001ee0  70 72 69 74 65 22 0d 0a  f0 23 de 20 66 6f 6e 74  |prite"...#. font|
00001ef0  63 6f 75 6e 74 73 25 20  32 35 35 2c 6d 62 5f 77  |counts% 255,mb_w|
00001f00  69 64 65 6e 74 25 20 32  34 0d 0a fa 04 0d 0b 04  |ident% 24.......|
00001f10  36 f4 20 2d 2d 2d 2d 2d  2d 20 53 65 74 20 75 70  |6. ------ Set up|
00001f20  20 74 68 65 20 77 69 6d  70 73 20 61 6e 64 20 74  | the wimps and t|
00001f30  68 65 69 72 20 68 61 6e  64 6c 65 73 20 2d 2d 2d  |heir handles ---|
00001f40  2d 2d 2d 0d 0b 0e 04 0d  0b 18 0e de 72 67 62 28  |---.........rgb(|
00001f50  31 39 2c 33 29 0d 0b 22  2b f2 6c 6f 61 64 74 65  |19,3).."+.loadte|
00001f60  6d 70 6c 61 74 65 73 28  22 3c 41 6c 70 73 24 52  |mplates("<Alps$R|
00001f70  65 73 6f 75 72 63 65 73  3e 2e 41 4c 50 53 22 29  |esources>.ALPS")|
00001f80  0d 0b 2c 04 0d 0b 36 2b  f4 20 2d 2d 2d 2d 2d 2d  |..,...6+. ------|
00001f90  20 4e 61 6d 65 20 74 68  65 20 77 69 6e 64 6f 77  | Name the window|
00001fa0  20 68 61 6e 64 6c 65 73  20 2d 2d 2d 2d 2d 2d 0d  | handles ------.|
00001fb0  0b 40 2e 6f 62 6a 68 61  6e 64 6c 65 3d 68 61 6e  |.@.objhandle=han|
00001fc0  64 6c 65 25 28 a4 6d 61  74 63 68 69 64 65 6e 74  |dle%(.matchident|
00001fd0  28 22 6f 62 6a 65 63 74  65 64 22 29 29 0d 0b 4a  |("objected"))..J|
00001fe0  2f 72 6f 6f 6d 68 61 6e  64 6c 65 3d 68 61 6e 64  |/roomhandle=hand|
00001ff0  6c 65 25 28 a4 6d 61 74  63 68 69 64 65 6e 74 28  |le%(.matchident(|
00002000  22 72 6f 6f 6d 65 64 69  74 22 29 29 0d 0b 54 2d  |"roomedit"))..T-|
00002010  74 65 78 74 68 61 6e 64  6c 65 3d 68 61 6e 64 6c  |texthandle=handl|
00002020  65 25 28 a4 6d 61 74 63  68 69 64 65 6e 74 28 22  |e%(.matchident("|
00002030  74 65 78 74 65 64 22 29  29 0d 0b 5e 2c 64 65 73  |texted"))..^,des|
00002040  69 67 6e 3d 68 61 6e 64  6c 65 25 28 a4 6d 61 74  |ign=handle%(.mat|
00002050  63 68 69 64 65 6e 74 28  22 63 68 72 64 65 73 69  |chident("chrdesi|
00002060  67 6e 22 29 29 0d 0b 68  2b 69 6e 66 6f 68 61 6e  |gn"))..h+infohan|
00002070  64 6c 65 3d 68 61 6e 64  6c 65 25 28 a4 6d 61 74  |dle=handle%(.mat|
00002080  63 68 69 64 65 6e 74 28  22 69 6e 66 6f 22 29 29  |chident("info"))|
00002090  0d 0b 72 2d 73 61 76 65  68 61 6e 64 6c 65 3d 68  |..r-savehandle=h|
000020a0  61 6e 64 6c 65 25 28 a4  6d 61 74 63 68 69 64 65  |andle%(.matchide|
000020b0  6e 74 28 22 73 61 76 65  61 73 22 29 29 0d 0b 7c  |nt("saveas"))..||
000020c0  38 41 4c 50 53 6d 61 69  6e 3d 68 61 6e 64 6c 65  |8ALPSmain=handle|
000020d0  25 28 a4 6d 61 74 63 68  69 64 65 6e 74 28 22 69  |%(.matchident("i|
000020e0  63 6f 6e 62 61 72 22 29  29 3a 64 69 61 6c 6f 67  |conbar")):dialog|
000020f0  75 65 25 3d 30 0d 0b 86  28 73 65 74 75 70 68 3d  |ue%=0...(setuph=|
00002100  68 61 6e 64 6c 65 25 28  a4 6d 61 74 63 68 69 64  |handle%(.matchid|
00002110  65 6e 74 28 22 53 65 74  75 70 22 29 29 0d 0b 90  |ent("Setup"))...|
00002120  1f 64 65 73 74 69 63 6f  6e 3d 34 37 3a 65 78 69  |.desticon=47:exi|
00002130  74 70 72 6f 67 69 63 6f  6e 3d 34 38 0d 0b 9a 04  |tprogicon=48....|
00002140  0d 0b a4 11 69 63 6f 6e  62 61 72 25 20 3d 20 2d  |....iconbar% = -|
00002150  32 0d 0b ae 16 77 69 6e  64 6f 77 69 6e 64 65 78  |2....windowindex|
00002160  25 3d 6e 68 25 2b 31 0d  0b b8 04 0d 0b c2 2c f2  |%=nh%+1.......,.|
00002170  63 68 61 6e 67 65 69 63  6f 6e 28 69 6e 66 6f 68  |changeicon(infoh|
00002180  61 6e 64 6c 65 2c 37 2c  76 65 72 73 69 6f 6e 24  |andle,7,version$|
00002190  2c 64 75 6d 6d 79 29 0d  0b cc 04 0d 0b d6 3b 66  |,dummy).......;f|
000021a0  69 72 73 74 49 63 6f 6e  42 61 72 49 63 6f 6e 25  |irstIconBarIcon%|
000021b0  20 3d 20 a4 69 63 6f 6e  62 61 72 28 73 70 72 69  | = .iconbar(spri|
000021c0  74 65 61 72 65 61 25 2c  20 22 66 61 63 65 22 2c  |tearea%, "face",|
000021d0  33 31 2c 31 39 29 0d 0b  e0 21 54 48 45 6d 69 73  |31,19)...!THEmis|
000021e0  63 69 63 6f 6e 3d 66 69  72 73 74 49 63 6f 6e 42  |cicon=firstIconB|
000021f0  61 72 49 63 6f 6e 25 0d  0b ea 04 0d 0b f4 04 0d  |arIcon%.........|
00002200  0b fe 26 f4 20 2d 2d 2d  2d 2d 2d 20 44 65 66 69  |..&. ------ Defi|
00002210  6e 65 20 74 68 65 20 63  6f 6c 6f 75 72 73 20 2d  |ne the colours -|
00002220  2d 2d 2d 2d 2d 0d 0c 08  1a 62 61 72 66 67 63 6f  |-----....barfgco|
00002230  6c 3d 31 31 3a 62 61 72  62 67 63 6f 6c 3d 33 0d  |l=11:barbgcol=3.|
00002240  0c 12 27 60 77 62 63 6f  6c 3d 30 3a 60 74 62 63  |..'`wbcol=0:`tbc|
00002250  6f 6c 3d 32 3a 60 73 63  6f 3d 26 33 3a 60 6d 62  |ol=2:`sco=&3:`mb|
00002260  63 6f 6c 3d 26 42 0d 0c  1c 28 60 77 66 63 6f 6c  |col=&B...(`wfcol|
00002270  3d 37 3a 60 74 66 63 6f  6c 3d 37 3a 60 73 63 69  |=7:`tfcol=7:`sci|
00002280  3d 26 44 3a 60 74 62 63  6f 6c 32 3d 26 43 0d 0c  |=&D:`tbcol2=&C..|
00002290  26 04 0d 0c 30 1b 63 75  72 5f 70 61 6c 25 3d 37  |&...0.cur_pal%=7|
000022a0  3a 70 68 79 73 5f 63 6f  6c 25 3d 31 36 0d 0c 3a  |:phys_col%=16..:|
000022b0  04 0d 0c 44 30 66 69 72  73 74 5f 74 6f 6b 65 6e  |...D0first_token|
000022c0  3d 26 33 30 3a f4 20 4c  6f 77 65 73 74 20 6b 65  |=&30:. Lowest ke|
000022d0  79 77 6f 72 64 20 74 6f  6b 65 6e 20 76 61 6c 75  |yword token valu|
000022e0  65 0d 0c 4e 57 f2 66 69  6e 64 5f 74 6f 6b 65 6e  |e..NW.find_token|
000022f0  28 6b 65 79 77 6f 72 64  24 28 29 2c 22 49 4e 43  |(keyword$(),"INC|
00002300  22 2c 76 61 72 5f 74 6f  6b 65 6e 2c 64 75 6d 6d  |",var_token,dumm|
00002310  79 29 3a f4 20 54 6f 6b  65 6e 73 20 66 72 6f 6d  |y):. Tokens from|
00002320  20 68 65 72 65 20 75 70  20 61 6c 6c 6f 77 20 76  | here up allow v|
00002330  61 72 69 61 62 6c 65 73  0d 0c 58 34 f2 66 69 6e  |ariables..X4.fin|
00002340  64 5f 74 6f 6b 65 6e 28  6b 65 79 77 6f 72 64 24  |d_token(keyword$|
00002350  28 29 2c 22 44 45 46 49  4e 45 22 2c 64 65 66 5f  |(),"DEFINE",def_|
00002360  74 6f 6b 65 6e 2c 64 75  6d 6d 79 29 0d 0c 62 33  |token,dummy)..b3|
00002370  f2 66 69 6e 64 5f 74 6f  6b 65 6e 28 6b 65 79 77  |.find_token(keyw|
00002380  6f 72 64 24 28 29 2c 22  53 54 4f 50 22 2c 73 74  |ord$(),"STOP",st|
00002390  6f 70 5f 74 6f 6b 65 6e  2c 64 75 6d 6d 79 29 0d  |op_token,dummy).|
000023a0  0c 6c 31 f2 66 69 6e 64  5f 74 6f 6b 65 6e 28 6b  |.l1.find_token(k|
000023b0  65 79 77 6f 72 64 24 28  29 2c 22 45 4e 44 22 2c  |eyword$(),"END",|
000023c0  65 6e 64 5f 74 6f 6b 65  6e 2c 64 75 6d 6d 79 29  |end_token,dummy)|
000023d0  0d 0c 76 33 f2 66 69 6e  64 5f 74 6f 6b 65 6e 28  |..v3.find_token(|
000023e0  6b 65 79 77 6f 72 64 24  28 29 2c 22 45 58 49 54  |keyword$(),"EXIT|
000023f0  22 2c 65 78 69 74 5f 74  6f 6b 65 6e 2c 64 75 6d  |",exit_token,dum|
00002400  6d 79 29 0d 0c 80 36 f2  66 69 6e 64 5f 74 6f 6b  |my)...6.find_tok|
00002410  65 6e 28 6b 65 79 77 6f  72 64 24 28 29 2c 22 44  |en(keyword$(),"D|
00002420  45 46 50 52 4f 43 22 2c  70 72 6f 63 5f 74 6f 6b  |EFPROC",proc_tok|
00002430  65 6e 2c 64 75 6d 6d 79  29 0d 0c 8a 33 f2 66 69  |en,dummy)...3.fi|
00002440  6e 64 5f 74 6f 6b 65 6e  28 6b 65 79 77 6f 72 64  |nd_token(keyword|
00002450  24 28 29 2c 22 50 52 45  50 22 2c 70 72 65 70 5f  |$(),"PREP",prep_|
00002460  74 6f 6b 65 6e 2c 64 75  6d 6d 79 29 0d 0c 94 39  |token,dummy)...9|
00002470  f2 66 69 6e 64 5f 74 6f  6b 65 6e 28 6b 65 79 77  |.find_token(keyw|
00002480  6f 72 64 24 28 29 2c 22  4e 4f 54 50 52 45 50 22  |ord$(),"NOTPREP"|
00002490  2c 6e 6f 74 70 72 65 70  5f 74 6f 6b 65 6e 2c 64  |,notprep_token,d|
000024a0  75 6d 6d 79 29 0d 0c 9e  04 0d 0c a8 29 f4 20 2d  |ummy).......). -|
000024b0  2d 2d 2d 2d 2d 20 53 65  74 20 75 70 20 74 68 65  |----- Set up the|
000024c0  20 64 69 63 74 69 6f 6e  61 72 79 20 2d 2d 2d 2d  | dictionary ----|
000024d0  2d 2d 0d 0c b2 12 64 69  63 74 5f 73 69 7a 65 3d  |--....dict_size=|
000024e0  31 30 30 30 0d 0c bc 25  de 20 64 69 63 74 25 20  |1000...%. dict% |
000024f0  64 69 63 74 5f 73 69 7a  65 2c 74 6f 6b 24 28 6d  |dict_size,tok$(m|
00002500  61 78 74 6f 6b 65 6e 73  29 0d 0c c6 18 21 64 69  |axtokens)....!di|
00002510  63 74 25 3d 33 3a 64 69  63 74 25 3f 32 3d 26 38  |ct%=3:dict%?2=&8|
00002520  30 0d 0c d0 04 0d 0c da  2d f4 20 2d 2d 2d 2d 2d  |0.......-. -----|
00002530  2d 20 46 69 6e 64 20 74  68 65 20 61 76 61 69 6c  |- Find the avail|
00002540  61 62 6c 65 20 6d 65 6d  6f 72 79 20 2d 2d 2d 2d  |able memory ----|
00002550  2d 2d 0d 0c e4 17 6d 65  6d 66 72 65 65 3d 28 93  |--....memfree=(.|
00002560  2d e0 29 2d 35 30 30 30  30 0d 0c ee 6c e7 20 6d  |-.)-50000...l. m|
00002570  65 6d 66 72 65 65 3c 30  20 8c 20 6e 75 6c 6c 3d  |emfree<0 . null=|
00002580  a4 65 72 72 6f 72 62 6f  78 28 22 4e 6f 74 20 65  |.errorbox("Not e|
00002590  6e 6f 75 67 68 20 6d 65  6d 6f 72 79 20 61 76 61  |nough memory ava|
000025a0  69 6c 61 62 6c 65 20 69  6e 20 27 4e 65 78 74 27  |ilable in 'Next'|
000025b0  20 73 6c 6f 74 22 2c 30  2c 31 2c 2d 39 39 29 3a  | slot",0,1,-99):|
000025c0  c8 99 20 22 57 69 6d 70  5f 43 6c 6f 73 65 44 6f  |.. "Wimp_CloseDo|
000025d0  77 6e 22 3a e0 0d 0c f8  19 6d 61 78 74 65 78 74  |wn":.....maxtext|
000025e0  25 3d 30 2e 38 33 2a 6d  65 6d 66 72 65 65 0d 0d  |%=0.83*memfree..|
000025f0  02 1b 63 6f 64 65 5f 73  69 7a 65 25 3d 30 2e 31  |..code_size%=0.1|
00002600  37 2a 6d 65 6d 66 72 65  65 0d 0d 0c 04 0d 0d 16  |7*memfree.......|
00002610  40 f4 20 2d 2d 2d 2d 2d  2d 20 41 72 65 61 73 20  |@. ------ Areas |
00002620  66 6f 72 20 73 74 6f 72  69 6e 67 20 6d 65 73 73  |for storing mess|
00002630  61 67 65 73 2c 20 73 77  69 74 63 68 20 69 6e 66  |ages, switch inf|
00002640  6f 20 65 74 63 3b 20 2d  2d 2d 2d 2d 2d 0d 0d 20  |o etc; ------.. |
00002650  44 de 20 74 65 78 74 25  20 6d 61 78 74 65 78 74  |D. text% maxtext|
00002660  25 2c 73 77 64 61 74 61  25 20 31 32 2a 6d 61 78  |%,swdata% 12*max|
00002670  73 77 25 2c 73 77 69 74  63 68 5f 76 61 6c 73 28  |sw%,switch_vals(|
00002680  6d 61 78 73 77 25 29 2c  6d 5f 6d 73 67 25 20 31  |maxsw%),m_msg% 1|
00002690  32 0d 0d 2a 1c de 20 73  77 69 74 63 68 5f 62 75  |2..*.. switch_bu|
000026a0  66 25 20 32 2a 6d 61 78  73 77 25 2b 31 0d 0d 34  |f% 2*maxsw%+1..4|
000026b0  27 24 73 77 64 61 74 61  25 3d c4 31 32 2a 6d 61  |'$swdata%=.12*ma|
000026c0  78 73 77 25 2c bd 31 33  29 3a 24 6d 5f 6d 73 67  |xsw%,.13):$m_msg|
000026d0  25 3d 22 22 0d 0d 3e 04  0d 0d 48 2c f4 20 2d 2d  |%=""..>...H,. --|
000026e0  2d 2d 2d 2d 20 49 6e 69  74 69 61 6c 69 73 65 20  |---- Initialise |
000026f0  74 68 65 20 74 65 78 74  20 61 72 65 61 20 2d 2d  |the text area --|
00002700  2d 2d 2d 2d 0d 0d 52 2c  21 74 65 78 74 25 3d 31  |----..R,!text%=1|
00002710  3a 74 65 78 74 25 21 32  3d 26 42 3a 74 65 78 74  |:text%!2=&B:text|
00002720  25 21 36 3d 30 3a 74 65  78 74 25 21 31 30 3d 30  |%!6=0:text%!10=0|
00002730  0d 0d 5c 1c de 20 73 74  5f 6d 73 67 25 20 31 32  |..\.. st_msg% 12|
00002740  2c 65 6e 64 5f 6d 73 67  25 20 31 32 0d 0d 66 1e  |,end_msg% 12..f.|
00002750  24 73 74 5f 6d 73 67 25  3d 22 31 22 3a 24 65 6e  |$st_msg%="1":$en|
00002760  64 5f 6d 73 67 25 3d 22  31 22 0d 0d 70 27 6d 70  |d_msg%="1"..p'mp|
00002770  74 72 3d 31 3a f4 20 54  68 65 20 63 75 72 72 65  |tr=1:. The curre|
00002780  6e 74 20 6d 65 73 73 61  67 65 20 6e 75 6d 62 65  |nt message numbe|
00002790  72 0d 0d 7a 45 74 65 78  74 5f 6f 77 6e 65 72 24  |r..zEtext_owner$|
000027a0  3d 22 22 3a f4 20 54 68  65 20 63 75 72 72 65 6e  |="":. The curren|
000027b0  74 20 6f 77 6e 65 72 20  6f 66 20 61 6e 79 20 74  |t owner of any t|
000027c0  65 78 74 20 69 6e 20 74  68 65 20 74 65 78 74 20  |ext in the text |
000027d0  65 64 69 74 6f 72 0d 0d  84 04 0d 0d 8e 0f 64 61  |editor........da|
000027e0  74 61 76 61 6c 69 64 3d  b9 0d 0d 98 04 0d 0d a2  |tavalid=........|
000027f0  2b f4 20 2d 2d 2d 2d 2d  2d 20 53 65 74 20 75 70  |+. ------ Set up|
00002800  20 74 68 65 20 70 72 6f  67 72 61 6d 20 61 72 65  | the program are|
00002810  61 20 2d 2d 2d 2d 2d 2d  0d 0d ac 19 de 20 70 72  |a ------..... pr|
00002820  6f 67 72 61 6d 25 20 63  6f 64 65 5f 73 69 7a 65  |ogram% code_size|
00002830  25 0d 0d b6 0f 21 70 72  6f 67 72 61 6d 25 3d 30  |%....!program%=0|
00002840  0d 0d c0 10 70 72 6f 67  72 61 6d 25 21 34 3d 30  |....program%!4=0|
00002850  0d 0d ca 0d 65 72 72 66  6c 61 67 3d a3 0d 0d d4  |....errflag=....|
00002860  04 0d 0d de 2d f4 20 2d  2d 2d 2d 2d 2d 20 53 65  |....-. ------ Se|
00002870  74 20 75 70 20 74 68 65  20 6d 65 6e 75 20 73 74  |t up the menu st|
00002880  72 75 63 74 75 72 65 20  2d 2d 2d 2d 2d 2d 0d 0d  |ructure ------..|
00002890  e8 17 6d 5f 63 6f 6e 74  72 6f 6f 6d 25 3d a4 63  |..m_controom%=.c|
000028a0  72 6d 65 6e 75 0d 0d f2  1d dc 20 22 23 4e 75 6d  |rmenu..... "#Num|
000028b0  62 65 72 2c 24 63 6f 6e  74 72 6f 6f 6d 25 28 35  |ber,$controom%(5|
000028c0  29 22 0d 0d fc 15 6d 5f  63 6f 6e 74 61 69 6e 3d  |)"....m_contain=|
000028d0  a4 63 72 6d 65 6e 75 0d  0e 06 26 dc 20 22 43 6f  |.crmenu...&. "Co|
000028e0  6e 74 61 69 6e 65 72 2c  55 73 65 20 72 6f 6f 6d  |ntainer,Use room|
000028f0  3e 6d 5f 63 6f 6e 74 72  6f 6f 6d 25 22 0d 0e 10  |>m_controom%"...|
00002900  16 6d 5f 63 68 61 72 64  65 73 25 3d a4 63 72 6d  |.m_chardes%=.crm|
00002910  65 6e 75 0d 0e 1a 1f dc  20 22 23 43 48 41 4e 47  |enu..... "#CHANG|
00002920  45 20 54 4f 3f 2c 24 63  68 61 72 6e 75 6d 28 32  |E TO?,$charnum(2|
00002930  29 22 0d 0e 24 17 63 68  61 72 5f 66 6e 61 6d 65  |)"..$.char_fname|
00002940  25 3d a4 63 72 6d 65 6e  75 0d 0e 2e 22 dc 20 22  |%=.crmenu...". "|
00002950  23 46 69 6c 65 6e 61 6d  65 3a 2c 24 66 69 6c 65  |#Filename:,$file|
00002960  6e 61 6d 65 32 25 28 31  31 29 22 0d 0e 38 17 6d  |name2%(11)"..8.m|
00002970  65 6e 75 5f 66 6e 61 6d  65 25 3d a4 63 72 6d 65  |enu_fname%=.crme|
00002980  6e 75 0d 0e 42 21 dc 20  22 23 46 69 6c 65 6e 61  |nu..B!. "#Filena|
00002990  6d 65 3a 2c 24 66 69 6c  65 6e 61 6d 65 25 28 31  |me:,$filename%(1|
000029a0  31 29 22 0d 0e 4c 16 6d  5f 67 6f 74 6f 6d 73 67  |1)"..L.m_gotomsg|
000029b0  25 3d a4 63 72 6d 65 6e  75 0d 0e 56 13 dc 20 22  |%=.crmenu..V.. "|
000029c0  24 6d 5f 6d 73 67 25 28  31 32 29 22 0d 0e 60 13  |$m_msg%(12)"..`.|
000029d0  6d 5f 70 72 6f 63 25 3d  a4 63 72 6d 65 6e 75 0d  |m_proc%=.crmenu.|
000029e0  0e 6a 1a dc 20 22 23 4e  75 6d 62 65 72 3a 2c 24  |.j.. "#Number:,$|
000029f0  70 72 6f 63 25 28 34 29  22 0d 0e 74 12 6d 5f 64  |proc%(4)"..t.m_d|
00002a00  65 66 25 3d a4 63 72 6d  65 6e 75 0d 0e 7e 18 dc  |ef%=.crmenu..~..|
00002a10  20 22 23 56 65 72 62 3a  2c 24 64 65 66 25 28 31  | "#Verb:,$def%(1|
00002a20  32 29 22 0d 0e 88 13 6d  5f 65 78 69 74 25 3d a4  |2)"....m_exit%=.|
00002a30  63 72 6d 65 6e 75 0d 0e  92 1a dc 20 22 23 4e 75  |crmenu..... "#Nu|
00002a40  6d 62 65 72 3a 2c 24 65  78 69 74 25 28 34 29 22  |mber:,$exit%(4)"|
00002a50  0d 0e 9c 16 6d 5f 6c 69  73 74 6f 70 74 73 3d a4  |....m_listopts=.|
00002a60  63 72 6d 65 6e 75 0d 0e  a6 3d dc 20 22 23 44 69  |crmenu...=. "#Di|
00002a70  73 70 6c 61 79 3a 2c 56  6f 63 61 62 75 6c 61 72  |splay:,Vocabular|
00002a80  79 20 61 73 20 6e 75 6d  62 65 72 73 2c 56 6f 63  |y as numbers,Voc|
00002a90  61 62 75 6c 61 72 79 20  61 73 20 73 74 72 69 6e  |abulary as strin|
00002aa0  67 73 22 0d 0e b0 15 6d  5f 69 6d 70 6f 72 74 25  |gs"....m_import%|
00002ab0  3d a4 63 72 6d 65 6e 75  0d 0e ba 1f dc 20 22 23  |=.crmenu..... "#|
00002ac0  46 69 6c 65 6e 61 6d 65  3a 2c 24 69 6d 70 6f 72  |Filename:,$impor|
00002ad0  74 25 28 31 31 29 22 0d  0e c4 20 73 77 31 3d a4  |t%(11)"... sw1=.|
00002ae0  63 72 6d 65 6e 75 3a 6e  78 74 73 77 3d 73 77 64  |crmenu:nxtsw=swd|
00002af0  61 74 61 25 2b 31 32 0d  0e ce 1c dc 20 22 23 56  |ata%+12..... "#V|
00002b00  61 6c 75 65 3a 2c 24 73  77 64 61 74 61 25 28 31  |alue:,$swdata%(1|
00002b10  32 29 22 0d 0e d8 1e 73  77 32 3d a4 63 72 6d 65  |2)"....sw2=.crme|
00002b20  6e 75 3a 6e 78 74 73 77  3d 6e 78 74 73 77 2b 31  |nu:nxtsw=nxtsw+1|
00002b30  32 0d 0e e2 16 dc 20 22  23 56 61 6c 75 65 3a 2c  |2..... "#Value:,|
00002b40  24 6e 78 74 73 77 22 0d  0e ec 1e 73 77 33 3d a4  |$nxtsw"....sw3=.|
00002b50  63 72 6d 65 6e 75 3a 6e  78 74 73 77 3d 6e 78 74  |crmenu:nxtsw=nxt|
00002b60  73 77 2b 31 32 0d 0e f6  16 dc 20 22 23 56 61 6c  |sw+12..... "#Val|
00002b70  75 65 3a 2c 24 6e 78 74  73 77 22 0d 0f 00 1e 73  |ue:,$nxtsw"....s|
00002b80  77 34 3d a4 63 72 6d 65  6e 75 3a 6e 78 74 73 77  |w4=.crmenu:nxtsw|
00002b90  3d 6e 78 74 73 77 2b 31  32 0d 0f 0a 16 dc 20 22  |=nxtsw+12..... "|
00002ba0  23 56 61 6c 75 65 3a 2c  24 6e 78 74 73 77 22 0d  |#Value:,$nxtsw".|
00002bb0  0f 14 1e 73 77 35 3d a4  63 72 6d 65 6e 75 3a 6e  |...sw5=.crmenu:n|
00002bc0  78 74 73 77 3d 6e 78 74  73 77 2b 31 32 0d 0f 1e  |xtsw=nxtsw+12...|
00002bd0  16 dc 20 22 23 56 61 6c  75 65 3a 2c 24 6e 78 74  |.. "#Value:,$nxt|
00002be0  73 77 22 0d 0f 28 1e 73  77 36 3d a4 63 72 6d 65  |sw"..(.sw6=.crme|
00002bf0  6e 75 3a 6e 78 74 73 77  3d 6e 78 74 73 77 2b 31  |nu:nxtsw=nxtsw+1|
00002c00  32 0d 0f 32 16 dc 20 22  23 56 61 6c 75 65 3a 2c  |2..2.. "#Value:,|
00002c10  24 6e 78 74 73 77 22 0d  0f 3c 1e 73 77 37 3d a4  |$nxtsw"..<.sw7=.|
00002c20  63 72 6d 65 6e 75 3a 6e  78 74 73 77 3d 6e 78 74  |crmenu:nxtsw=nxt|
00002c30  73 77 2b 31 32 0d 0f 46  16 dc 20 22 23 56 61 6c  |sw+12..F.. "#Val|
00002c40  75 65 3a 2c 24 6e 78 74  73 77 22 0d 0f 50 1e 73  |ue:,$nxtsw"..P.s|
00002c50  77 38 3d a4 63 72 6d 65  6e 75 3a 6e 78 74 73 77  |w8=.crmenu:nxtsw|
00002c60  3d 6e 78 74 73 77 2b 31  32 0d 0f 5a 16 dc 20 22  |=nxtsw+12..Z.. "|
00002c70  23 56 61 6c 75 65 3a 2c  24 6e 78 74 73 77 22 0d  |#Value:,$nxtsw".|
00002c80  0f 64 1e 73 77 39 3d a4  63 72 6d 65 6e 75 3a 6e  |.d.sw9=.crmenu:n|
00002c90  78 74 73 77 3d 6e 78 74  73 77 2b 31 32 0d 0f 6e  |xtsw=nxtsw+12..n|
00002ca0  16 dc 20 22 23 56 61 6c  75 65 3a 2c 24 6e 78 74  |.. "#Value:,$nxt|
00002cb0  73 77 22 0d 0f 78 1f 73  77 31 30 3d a4 63 72 6d  |sw"..x.sw10=.crm|
00002cc0  65 6e 75 3a 6e 78 74 73  77 3d 6e 78 74 73 77 2b  |enu:nxtsw=nxtsw+|
00002cd0  31 32 0d 0f 82 16 dc 20  22 23 56 61 6c 75 65 3a  |12..... "#Value:|
00002ce0  2c 24 6e 78 74 73 77 22  0d 0f 8c 15 6d 5f 73 77  |,$nxtsw"....m_sw|
00002cf0  69 74 63 68 25 3d a4 63  72 6d 65 6e 75 0d 0f 96  |itch%=.crmenu...|
00002d00  59 dc 20 22 23 53 77 69  74 63 68 2c 4e 6f 20 73  |Y. "#Switch,No s|
00002d10  77 69 74 63 68 65 73 2c  31 3e 73 77 31 2c 32 3e  |witches,1>sw1,2>|
00002d20  73 77 32 2c 33 3e 73 77  33 2c 34 3e 73 77 34 2c  |sw2,3>sw3,4>sw4,|
00002d30  35 3e 73 77 35 2c 36 3e  73 77 36 2c 37 3e 73 77  |5>sw5,6>sw6,7>sw|
00002d40  37 2c 38 3e 73 77 38 2c  39 3e 73 77 39 2c 31 30  |7,8>sw8,9>sw9,10|
00002d50  3e 73 77 31 30 22 0d 0f  a0 13 6d 5f 74 65 78 74  |>sw10"....m_text|
00002d60  25 3d a4 63 72 6d 65 6e  75 0d 0f aa c2 dc 20 22  |%=.crmenu..... "|
00002d70  23 4d 45 53 53 41 47 45  2c 49 6e 73 65 72 74 2c  |#MESSAGE,Insert,|
00002d80  4f 76 65 72 74 79 70 65  23 2c 43 75 74 20 20 20  |Overtype#,Cut   |
00002d90  28 43 74 72 6c 2d 58 29  2c 43 6f 70 79 20 20 28  |(Ctrl-X),Copy  (|
00002da0  43 74 72 6c 2d 43 29 2c  50 61 73 74 65 20 28 43  |Ctrl-C),Paste (C|
00002db0  74 72 6c 2d 56 29 23 2c  50 72 65 76 69 6f 75 73  |trl-V)#,Previous|
00002dc0  20 20 28 66 35 29 2c 4e  65 78 74 20 20 20 20 20  |  (f5),Next     |
00002dd0  20 28 66 36 29 2c 46 69  72 73 74 20 20 20 20 20  | (f6),First     |
00002de0  28 66 37 29 2c 4c 61 73  74 20 20 20 20 20 20 28  |(f7),Last      (|
00002df0  66 38 29 2c 47 6f 74 6f  20 6d 73 67 23 3e 6d 5f  |f8),Goto msg#>m_|
00002e00  67 6f 74 6f 6d 73 67 25  2c 45 64 69 74 20 73 77  |gotomsg%,Edit sw|
00002e10  69 74 63 68 23 3e 6d 5f  73 77 69 74 63 68 25 2c  |itch#>m_switch%,|
00002e20  50 72 69 6e 74 20 74 68  69 73 22 0d 0f b4 13 6d  |Print this"....m|
00002e30  5f 70 72 6f 67 25 3d a4  63 72 6d 65 6e 75 0d 0f  |_prog%=.crmenu..|
00002e40  be b4 dc 20 22 23 50 72  6f 67 72 61 6d 20 45 64  |... "#Program Ed|
00002e50  69 74 6f 72 2c 49 6e 73  65 72 74 2c 4f 76 65 72  |itor,Insert,Over|
00002e60  74 79 70 65 23 2c 43 75  74 20 20 20 28 43 74 72  |type#,Cut   (Ctr|
00002e70  6c 2d 58 29 2c 43 6f 70  79 20 20 28 43 74 72 6c  |l-X),Copy  (Ctrl|
00002e80  2d 43 29 2c 50 61 73 74  65 20 28 43 74 72 6c 2d  |-C),Paste (Ctrl-|
00002e90  56 29 23 2c 4d 61 69 6e  2c 50 72 6f 63 65 64 75  |V)#,Main,Procedu|
00002ea0  72 65 3e 6d 5f 70 72 6f  63 25 2c 44 65 66 69 6e  |re>m_proc%,Defin|
00002eb0  65 3e 6d 5f 64 65 66 25  2c 45 78 69 74 20 72 6f  |e>m_def%,Exit ro|
00002ec0  75 74 69 6e 65 23 3e 6d  5f 65 78 69 74 25 2c 50  |utine#>m_exit%,P|
00002ed0  72 69 6e 74 20 74 68 69  73 2c 4c 69 73 74 20 6f  |rint this,List o|
00002ee0  70 74 69 6f 6e 73 3e 6d  5f 6c 69 73 74 6f 70 74  |ptions>m_listopt|
00002ef0  73 22 0d 0f c8 14 6d 5f  76 6f 63 61 62 25 3d a4  |s"....m_vocab%=.|
00002f00  63 72 6d 65 6e 75 0d 0f  d2 9e dc 20 22 23 56 6f  |crmenu..... "#Vo|
00002f10  63 61 62 75 6c 61 72 79  2c 49 6e 73 65 72 74 2c  |cabulary,Insert,|
00002f20  4f 76 65 72 74 79 70 65  23 2c 43 75 74 20 20 20  |Overtype#,Cut   |
00002f30  28 43 74 72 6c 2d 58 29  2c 43 6f 70 79 20 20 28  |(Ctrl-X),Copy  (|
00002f40  43 74 72 6c 2d 43 29 2c  50 61 73 74 65 20 28 43  |Ctrl-C),Paste (C|
00002f50  74 72 6c 2d 56 29 23 2c  4e 6f 75 6e 73 2c 56 65  |trl-V)#,Nouns,Ve|
00002f60  72 62 73 2c 41 64 6a 65  63 74 69 76 65 73 2c 50  |rbs,Adjectives,P|
00002f70  72 65 70 6f 73 69 74 69  6f 6e 73 2c 43 6f 6e 6a  |repositions,Conj|
00002f80  75 6e 63 74 69 6f 6e 73  2c 53 70 65 63 69 61 6c  |unctions,Special|
00002f90  73 2c 4e 6f 69 73 65 23  2c 50 72 69 6e 74 20 74  |s,Noise#,Print t|
00002fa0  68 69 73 22 0d 0f dc 13  70 69 78 6d 65 6e 75 3d  |his"....pixmenu=|
00002fb0  a4 63 72 6d 65 6e 75 0d  0f e6 17 dc 20 22 23 50  |.crmenu..... "#P|
00002fc0  69 63 74 75 72 65 73 2c  50 72 69 6e 74 22 0d 0f  |ictures,Print"..|
00002fd0  f0 14 70 72 6f 67 6d 65  6e 75 3d a4 63 72 6d 65  |..progmenu=.crme|
00002fe0  6e 75 0d 0f fa 2c dc 20  22 23 50 72 6f 67 72 61  |nu...,. "#Progra|
00002ff0  6d 2c 50 72 69 6e 74 2c  49 6d 70 6f 72 74 23 3e  |m,Print,Import#>|
00003000  6d 5f 69 6d 70 6f 72 74  25 2c 52 75 6e 22 0d 10  |m_import%,Run"..|
00003010  04 14 63 68 61 72 6d 65  6e 75 3d a4 63 72 6d 65  |..charmenu=.crme|
00003020  6e 75 0d 10 0e 32 dc 20  22 23 43 68 61 72 53 65  |nu...2. "#CharSe|
00003030  74 2c 53 61 76 65 3e 63  68 61 72 5f 66 6e 61 6d  |t,Save>char_fnam|
00003040  65 25 2c 4c 6f 61 64 3e  63 68 61 72 5f 66 6e 61  |e%,Load>char_fna|
00003050  6d 65 25 22 0d 10 18 15  76 6f 63 61 62 6d 65 6e  |me%"....vocabmen|
00003060  75 3d a4 63 72 6d 65 6e  75 0d 10 22 19 dc 20 22  |u=.crmenu..".. "|
00003070  23 56 6f 63 61 62 75 6c  61 72 79 2c 50 72 69 6e  |#Vocabulary,Prin|
00003080  74 22 0d 10 2c 14 64 69  73 6b 6d 65 6e 75 3d a4  |t"..,.diskmenu=.|
00003090  63 72 6d 65 6e 75 0d 10  36 2d dc 20 22 23 46 69  |crmenu..6-. "#Fi|
000030a0  6c 65 73 2c 53 61 76 65  20 61 6c 6c 3e 73 61 76  |les,Save all>sav|
000030b0  65 68 61 6e 64 6c 65 2c  53 65 74 75 70 20 64 69  |ehandle,Setup di|
000030c0  73 6b 22 0d 10 40 14 66  61 63 65 6d 65 6e 75 3d  |sk"..@.facemenu=|
000030d0  a4 63 72 6d 65 6e 75 0d  10 4a 15 dc 20 22 23 41  |.crmenu..J.. "#A|
000030e0  63 74 6f 72 73 2c 50 72  69 6e 74 22 0d 10 54 14  |ctors,Print"..T.|
000030f0  6d 69 73 63 6d 65 6e 75  3d a4 63 72 6d 65 6e 75  |miscmenu=.crmenu|
00003100  0d 10 5e 22 dc 20 22 23  41 4c 50 53 2c 49 6e 66  |..^". "#ALPS,Inf|
00003110  6f 3e 69 6e 66 6f 68 61  6e 64 6c 65 2c 51 75 69  |o>infohandle,Qui|
00003120  74 22 0d 10 68 11 6d 73  67 32 25 3d a4 63 72 6d  |t"..h.msg2%=.crm|
00003130  65 6e 75 0d 10 72 13 dc  20 22 24 73 74 5f 6d 73  |enu..r.. "$st_ms|
00003140  67 25 28 36 29 22 0d 10  7c 11 6d 73 67 33 25 3d  |g%(6)"..|.msg3%=|
00003150  a4 63 72 6d 65 6e 75 0d  10 86 14 dc 20 22 24 65  |.crmenu..... "$e|
00003160  6e 64 5f 6d 73 67 25 28  36 29 22 0d 10 90 11 6d  |nd_msg%(6)"....m|
00003170  73 67 31 25 3d a4 63 72  6d 65 6e 75 0d 10 9a 2f  |sg1%=.crmenu.../|
00003180  dc 20 22 23 46 72 6f 6d  2f 54 6f 3f 2c 53 74 61  |. "#From/To?,Sta|
00003190  72 74 20 6d 73 67 3e 6d  73 67 32 25 2c 45 6e 64  |rt msg>msg2%,End|
000031a0  20 6d 73 67 3e 6d 73 67  33 25 22 0d 10 a4 14 74  | msg>msg3%"....t|
000031b0  65 78 74 6d 65 6e 75 3d  a4 63 72 6d 65 6e 75 0d  |extmenu=.crmenu.|
000031c0  10 ae 2a dc 20 22 23 54  65 78 74 2c 50 72 69 6e  |..*. "#Text,Prin|
000031d0  74 3e 6d 73 67 31 25 2c  49 6d 70 6f 72 74 3e 6d  |t>msg1%,Import>m|
000031e0  5f 69 6d 70 6f 72 74 25  22 0d 10 b8 13 6f 62 6a  |_import%"....obj|
000031f0  6d 65 6e 75 3d a4 63 72  6d 65 6e 75 0d 10 c2 27  |menu=.crmenu...'|
00003200  dc 20 22 23 4f 62 6a 65  63 74 73 2c 50 72 69 6e  |. "#Objects,Prin|
00003210  74 2c 49 6d 70 6f 72 74  3e 6d 5f 69 6d 70 6f 72  |t,Import>m_impor|
00003220  74 25 22 0d 10 cc 2a 6d  6f 5f 75 73 65 72 35 3d  |t%"...*mo_user5=|
00003230  a4 63 72 6d 65 6e 75 3a  6f 66 6c 25 3d 6f 5f 66  |.crmenu:ofl%=o_f|
00003240  6c 61 67 73 25 2b 6d 61  78 64 25 2a 33 0d 10 d6  |lags%+maxd%*3...|
00003250  23 dc 20 22 23 44 65 73  63 72 69 70 74 69 6f 6e  |#. "#Description|
00003260  3a 2c 24 6f 5f 66 6c 61  67 73 25 28 31 33 29 22  |:,$o_flags%(13)"|
00003270  0d 10 e0 24 6d 6f 5f 75  73 65 72 34 3d a4 63 72  |...$mo_user4=.cr|
00003280  6d 65 6e 75 3a 6f 66 6c  25 3d 6f 66 6c 25 2b 6d  |menu:ofl%=ofl%+m|
00003290  61 78 64 25 0d 10 ea 1f  dc 20 22 23 44 65 73 63  |axd%..... "#Desc|
000032a0  72 69 70 74 69 6f 6e 3a  2c 24 6f 66 6c 25 28 31  |ription:,$ofl%(1|
000032b0  33 29 22 0d 10 f4 24 6d  6f 5f 75 73 65 72 33 3d  |3)"...$mo_user3=|
000032c0  a4 63 72 6d 65 6e 75 3a  6f 66 6c 25 3d 6f 66 6c  |.crmenu:ofl%=ofl|
000032d0  25 2b 6d 61 78 64 25 0d  10 fe 1f dc 20 22 23 44  |%+maxd%..... "#D|
000032e0  65 73 63 72 69 70 74 69  6f 6e 3a 2c 24 6f 66 6c  |escription:,$ofl|
000032f0  25 28 31 33 29 22 0d 11  08 24 6d 6f 5f 75 73 65  |%(13)"...$mo_use|
00003300  72 32 3d a4 63 72 6d 65  6e 75 3a 6f 66 6c 25 3d  |r2=.crmenu:ofl%=|
00003310  6f 66 6c 25 2b 6d 61 78  64 25 0d 11 12 1f dc 20  |ofl%+maxd%..... |
00003320  22 23 44 65 73 63 72 69  70 74 69 6f 6e 3a 2c 24  |"#Description:,$|
00003330  6f 66 6c 25 28 31 33 29  22 0d 11 1c 24 6d 6f 5f  |ofl%(13)"...$mo_|
00003340  75 73 65 72 31 3d a4 63  72 6d 65 6e 75 3a 6f 66  |user1=.crmenu:of|
00003350  6c 25 3d 6f 66 6c 25 2b  6d 61 78 64 25 0d 11 26  |l%=ofl%+maxd%..&|
00003360  1f dc 20 22 23 44 65 73  63 72 69 70 74 69 6f 6e  |.. "#Description|
00003370  3a 2c 24 6f 66 6c 25 28  31 33 29 22 0d 11 30 24  |:,$ofl%(13)"..0$|
00003380  6d 6f 5f 75 73 65 72 30  3d a4 63 72 6d 65 6e 75  |mo_user0=.crmenu|
00003390  3a 6f 66 6c 25 3d 6f 66  6c 25 2b 6d 61 78 64 25  |:ofl%=ofl%+maxd%|
000033a0  0d 11 3a 1f dc 20 22 23  44 65 73 63 72 69 70 74  |..:.. "#Descript|
000033b0  69 6f 6e 3a 2c 24 6f 66  6c 25 28 31 33 29 22 0d  |ion:,$ofl%(13)".|
000033c0  11 44 15 6d 5f 6f 62 6a  66 6c 61 67 3d a4 63 72  |.D.m_objflag=.cr|
000033d0  6d 65 6e 75 0d 11 4e 80  dc 20 22 23 46 6c 61 67  |menu..N.. "#Flag|
000033e0  73 2c 37 20 4c 69 67 68  74 20 73 6f 75 72 63 65  |s,7 Light source|
000033f0  2c 36 20 54 61 6b 65 61  62 6c 65 2c 35 20 49 6e  |,6 Takeable,5 In|
00003400  76 69 73 69 62 6c 65 2c  34 20 53 63 65 6e 65 72  |visible,4 Scener|
00003410  79 2c 33 20 57 65 61 72  61 62 6c 65 2c 32 20 42  |y,3 Wearable,2 B|
00003420  65 69 6e 67 20 77 6f 72  6e 2c 31 20 55 73 65 72  |eing worn,1 User|
00003430  20 66 6c 61 67 3e 6d 6f  5f 75 73 65 72 31 2c 30  | flag>mo_user1,0|
00003440  20 55 73 65 72 20 66 6c  61 67 3e 6d 6f 5f 75 73  | User flag>mo_us|
00003450  65 72 30 22 0d 11 58 14  72 6f 6f 6d 6d 65 6e 75  |er0"..X.roommenu|
00003460  3d a4 63 72 6d 65 6e 75  0d 11 62 25 dc 20 22 23  |=.crmenu..b%. "#|
00003470  52 6f 6f 6d 73 2c 50 72  69 6e 74 2c 49 6d 70 6f  |Rooms,Print,Impo|
00003480  72 74 3e 6d 5f 69 6d 70  6f 72 74 25 22 0d 11 6c  |rt>m_import%"..l|
00003490  2a 6d 72 5f 75 73 65 72  36 3d a4 63 72 6d 65 6e  |*mr_user6=.crmen|
000034a0  75 3a 72 66 6c 25 3d 72  5f 66 6c 61 67 73 25 2b  |u:rfl%=r_flags%+|
000034b0  6d 61 78 64 25 2a 32 0d  11 76 23 dc 20 22 23 44  |maxd%*2..v#. "#D|
000034c0  65 73 63 72 69 70 74 69  6f 6e 3a 2c 24 72 5f 66  |escription:,$r_f|
000034d0  6c 61 67 73 25 28 31 33  29 22 0d 11 80 24 6d 72  |lags%(13)"...$mr|
000034e0  5f 75 73 65 72 35 3d a4  63 72 6d 65 6e 75 3a 72  |_user5=.crmenu:r|
000034f0  66 6c 25 3d 72 66 6c 25  2b 6d 61 78 64 25 0d 11  |fl%=rfl%+maxd%..|
00003500  8a 1f dc 20 22 23 44 65  73 63 72 69 70 74 69 6f  |... "#Descriptio|
00003510  6e 3a 2c 24 72 66 6c 25  28 31 33 29 22 0d 11 94  |n:,$rfl%(13)"...|
00003520  24 6d 72 5f 75 73 65 72  34 3d a4 63 72 6d 65 6e  |$mr_user4=.crmen|
00003530  75 3a 72 66 6c 25 3d 72  66 6c 25 2b 6d 61 78 64  |u:rfl%=rfl%+maxd|
00003540  25 0d 11 9e 1f dc 20 22  23 44 65 73 63 72 69 70  |%..... "#Descrip|
00003550  74 69 6f 6e 3a 2c 24 72  66 6c 25 28 31 33 29 22  |tion:,$rfl%(13)"|
00003560  0d 11 a8 24 6d 72 5f 75  73 65 72 33 3d a4 63 72  |...$mr_user3=.cr|
00003570  6d 65 6e 75 3a 72 66 6c  25 3d 72 66 6c 25 2b 6d  |menu:rfl%=rfl%+m|
00003580  61 78 64 25 0d 11 b2 1f  dc 20 22 23 44 65 73 63  |axd%..... "#Desc|
00003590  72 69 70 74 69 6f 6e 3a  2c 24 72 66 6c 25 28 31  |ription:,$rfl%(1|
000035a0  33 29 22 0d 11 bc 24 6d  72 5f 75 73 65 72 32 3d  |3)"...$mr_user2=|
000035b0  a4 63 72 6d 65 6e 75 3a  72 66 6c 25 3d 72 66 6c  |.crmenu:rfl%=rfl|
000035c0  25 2b 6d 61 78 64 25 0d  11 c6 1f dc 20 22 23 44  |%+maxd%..... "#D|
000035d0  65 73 63 72 69 70 74 69  6f 6e 3a 2c 24 72 66 6c  |escription:,$rfl|
000035e0  25 28 31 33 29 22 0d 11  d0 24 6d 72 5f 75 73 65  |%(13)"...$mr_use|
000035f0  72 31 3d a4 63 72 6d 65  6e 75 3a 72 66 6c 25 3d  |r1=.crmenu:rfl%=|
00003600  72 66 6c 25 2b 6d 61 78  64 25 0d 11 da 1f dc 20  |rfl%+maxd%..... |
00003610  22 23 44 65 73 63 72 69  70 74 69 6f 6e 3a 2c 24  |"#Description:,$|
00003620  72 66 6c 25 28 31 33 29  22 0d 11 e4 24 6d 72 5f  |rfl%(13)"...$mr_|
00003630  75 73 65 72 30 3d a4 63  72 6d 65 6e 75 3a 72 66  |user0=.crmenu:rf|
00003640  6c 25 3d 72 66 6c 25 2b  6d 61 78 64 25 0d 11 ee  |l%=rfl%+maxd%...|
00003650  1f dc 20 22 23 44 65 73  63 72 69 70 74 69 6f 6e  |.. "#Description|
00003660  3a 2c 24 72 66 6c 25 28  31 33 29 22 0d 11 f8 14  |:,$rfl%(13)"....|
00003670  6d 5f 72 6d 66 6c 61 67  3d a4 63 72 6d 65 6e 75  |m_rmflag=.crmenu|
00003680  0d 12 02 a3 dc 20 22 23  46 6c 61 67 73 2c 37 20  |..... "#Flags,7 |
00003690  4c 69 67 68 74 2c 36 20  56 69 73 69 74 65 64 2c  |Light,6 Visited,|
000036a0  35 20 55 73 65 72 20 28  54 72 61 6e 73 29 3e 6d  |5 User (Trans)>m|
000036b0  72 5f 75 73 65 72 35 2c  34 20 55 73 65 72 20 28  |r_user5,4 User (|
000036c0  4f 70 65 6e 29 3e 6d 72  5f 75 73 65 72 34 2c 33  |Open)>mr_user4,3|
000036d0  20 55 73 65 72 20 66 6c  61 67 3e 6d 72 5f 75 73  | User flag>mr_us|
000036e0  65 72 33 2c 32 20 55 73  65 72 20 66 6c 61 67 3e  |er3,2 User flag>|
000036f0  6d 72 5f 75 73 65 72 32  2c 31 20 55 73 65 72 20  |mr_user2,1 User |
00003700  66 6c 61 67 3e 6d 72 5f  75 73 65 72 31 2c 30 20  |flag>mr_user1,0 |
00003710  55 73 65 72 20 66 6c 61  67 3e 6d 72 5f 75 73 65  |User flag>mr_use|
00003720  72 30 22 0d 12 0c 13 6d  5f 65 78 69 74 66 3d a4  |r0"....m_exitf=.|
00003730  63 72 6d 65 6e 75 0d 12  16 7c dc 20 22 23 46 6c  |crmenu...|. "#Fl|
00003740  61 67 73 2c 37 20 49 6e  76 69 73 69 62 6c 65 20  |ags,7 Invisible |
00003750  65 78 69 74 2c 36 20 43  6c 6f 73 65 64 20 64 6f  |exit,6 Closed do|
00003760  6f 72 2c 35 20 4f 70 65  6e 20 64 6f 6f 72 2c 34  |or,5 Open door,4|
00003770  20 4c 6f 63 6b 65 64 20  64 6f 6f 72 2c 33 20 55  | Locked door,3 U|
00003780  6e 6c 6f 63 6b 65 64 20  64 6f 6f 72 2c 32 20 42  |nlocked door,2 B|
00003790  6c 6f 63 6b 65 64 20 65  78 69 74 2c 31 20 52 65  |locked exit,1 Re|
000037a0  73 65 72 76 65 64 2c 30  20 52 65 73 65 72 76 65  |served,0 Reserve|
000037b0  64 22 0d 12 20 04 0d 12  2a 05 e1 0d 12 34 04 0d  |d".. ...*....4..|
000037c0  12 3e 3e f4 20 2d 2d 2d  2d 2d 2d 20 4e 6f 77 20  |.>>. ------ Now |
000037d0  77 65 20 68 61 76 65 20  74 68 65 20 50 72 6f 63  |we have the Proc|
000037e0  65 64 75 72 65 73 20 61  6e 64 20 46 75 6e 63 74  |edures and Funct|
000037f0  69 6f 6e 73 21 21 20 2d  2d 2d 2d 2d 2d 0d 12 48  |ions!! ------..H|
00003800  04 0d 12 52 12 dd 20 f2  67 65 74 6d 6f 64 65 69  |...R.. .getmodei|
00003810  6e 66 6f 0d 12 5c 18 ea  20 78 2c 79 2c 78 65 69  |nfo..\.. x,y,xei|
00003820  67 2c 79 65 69 67 2c 63  6f 6c 73 0d 12 66 0a 6d  |g,yeig,cols..f.m|
00003830  6f 64 65 3d eb 0d 12 70  04 0d 12 7a 31 c8 99 20  |ode=...p...z1.. |
00003840  22 4f 53 5f 52 65 61 64  4d 6f 64 65 56 61 72 69  |"OS_ReadModeVari|
00003850  61 62 6c 65 22 2c 6d 6f  64 65 2c 31 20 b8 20 2c  |able",mode,1 . ,|
00003860  2c 74 65 78 74 63 6f 6c  73 25 0d 12 84 31 c8 99  |,textcols%...1..|
00003870  20 22 4f 53 5f 52 65 61  64 4d 6f 64 65 56 61 72  | "OS_ReadModeVar|
00003880  69 61 62 6c 65 22 2c 6d  6f 64 65 2c 32 20 b8 20  |iable",mode,2 . |
00003890  2c 2c 74 65 78 74 72 6f  77 73 25 0d 12 8e 1d 74  |,,textrows%....t|
000038a0  65 78 74 5f 6d 61 78 6c  6c 65 6e 25 3d 74 65 78  |ext_maxllen%=tex|
000038b0  74 63 6f 6c 73 25 2d 32  0d 12 98 2c c8 99 20 22  |tcols%-2...,.. "|
000038c0  4f 53 5f 52 65 61 64 4d  6f 64 65 56 61 72 69 61  |OS_ReadModeVaria|
000038d0  62 6c 65 22 2c 6d 6f 64  65 2c 33 20 b8 20 2c 2c  |ble",mode,3 . ,,|
000038e0  63 6f 6c 73 0d 12 a2 2c  c8 99 20 22 4f 53 5f 52  |cols...,.. "OS_R|
000038f0  65 61 64 4d 6f 64 65 56  61 72 69 61 62 6c 65 22  |eadModeVariable"|
00003900  2c 6d 6f 64 65 2c 34 20  b8 20 2c 2c 78 65 69 67  |,mode,4 . ,,xeig|
00003910  0d 12 ac 2c c8 99 20 22  4f 53 5f 52 65 61 64 4d  |...,.. "OS_ReadM|
00003920  6f 64 65 56 61 72 69 61  62 6c 65 22 2c 6d 6f 64  |odeVariable",mod|
00003930  65 2c 35 20 b8 20 2c 2c  79 65 69 67 0d 12 b6 30  |e,5 . ,,yeig...0|
00003940  c8 99 20 22 4f 53 5f 52  65 61 64 4d 6f 64 65 56  |.. "OS_ReadModeV|
00003950  61 72 69 61 62 6c 65 22  2c 6d 6f 64 65 2c 37 20  |ariable",mode,7 |
00003960  b8 20 2c 2c 73 63 72 6e  73 69 7a 65 0d 12 c0 2a  |. ,,scrnsize...*|
00003970  c8 99 20 22 4f 53 5f 52  65 61 64 4d 6f 64 65 56  |.. "OS_ReadModeV|
00003980  61 72 69 61 62 6c 65 22  2c 6d 6f 64 65 2c 31 31  |ariable",mode,11|
00003990  20 b8 20 2c 2c 78 0d 12  ca 2a c8 99 20 22 4f 53  | . ,,x...*.. "OS|
000039a0  5f 52 65 61 64 4d 6f 64  65 56 61 72 69 61 62 6c  |_ReadModeVariabl|
000039b0  65 22 2c 6d 6f 64 65 2c  31 32 20 b8 20 2c 2c 79  |e",mode,12 . ,,y|
000039c0  0d 12 d4 2d 73 63 72 77  3d 28 28 78 2b 31 29 3c  |...-scrw=((x+1)<|
000039d0  3c 78 65 69 67 29 2d 31  3a 73 63 72 68 3d 28 28  |<xeig)-1:scrh=((|
000039e0  79 2b 31 29 3c 3c 79 65  69 67 29 2d 31 0d 12 de  |y+1)<<yeig)-1...|
000039f0  05 e1 0d 12 e8 04 0d 12  f2 0c dd 20 f2 63 6c 65  |........... .cle|
00003a00  61 72 0d 12 fc 24 f2 66  69 6c 6c 28 6f 64 61 74  |ar...$.fill(odat|
00003a10  61 25 2c 28 6d 61 78 6f  62 73 2b 31 29 2a 6f 5f  |a%,(maxobs+1)*o_|
00003a20  6c 65 6e 2c 30 29 0d 13  06 24 f2 66 69 6c 6c 28  |len,0)...$.fill(|
00003a30  72 64 61 74 61 25 2c 28  6d 61 78 72 6d 73 2b 31  |rdata%,(maxrms+1|
00003a40  29 2a 72 5f 6c 65 6e 2c  30 29 0d 13 10 25 f2 66  |)*r_len,0)...%.f|
00003a50  69 6c 6c 28 70 72 6f 67  72 61 6d 25 2b 34 2c 63  |ill(program%+4,c|
00003a60  6f 64 65 5f 73 69 7a 65  25 2d 32 30 2c 30 29 0d  |ode_size%-20,0).|
00003a70  13 1a 27 f4 20 50 52 4f  43 66 69 6c 6c 28 69 6e  |..'. PROCfill(in|
00003a80  69 74 73 61 76 65 2c 69  6e 69 74 61 72 65 61 73  |itsave,initareas|
00003a90  69 7a 65 2c 30 29 0d 13  24 05 e1 0d 13 2e 04 0d  |ize,0)..$.......|
00003aa0  13 38 04 0d 13 42 14 dd  20 f2 72 65 74 75 72 6e  |.8...B.. .return|
00003ab0  28 78 25 2c 79 25 29 0d  13 4c 18 f2 63 6f 6c 28  |(x%,y%)..L..col(|
00003ac0  31 32 38 2b 31 32 29 3a  f2 63 6f 6c 28 37 29 0d  |128+12):.col(7).|
00003ad0  13 56 3e f2 63 65 6e 74  72 65 28 22 20 48 69 74  |.V>.centre(" Hit|
00003ae0  20 61 6e 79 20 6b 65 79  2f 62 75 74 74 6f 6e 20  | any key/button |
00003af0  74 6f 20 72 65 74 75 72  6e 20 74 6f 20 74 68 65  |to return to the|
00003b00  20 65 64 69 74 6f 72 20  22 2c 79 25 29 0d 13 60  | editor ",y%)..`|
00003b10  05 f5 0d 13 6a 0f c8 97  20 58 25 2c 59 25 2c 42  |....j... X%,Y%,B|
00003b20  25 0d 13 74 0a fd 20 42  25 3d 30 0d 13 7e 04 0d  |%..t.. B%=0..~..|
00003b30  13 88 05 f5 0d 13 92 0c  61 6e 79 3d a6 28 30 29  |........any=.(0)|
00003b40  0d 13 9c 0f c8 97 20 58  25 2c 59 25 2c 42 25 0d  |...... X%,Y%,B%.|
00003b50  13 a6 12 fd 20 61 6e 79  3e 30 20 84 20 42 25 3e  |.... any>0 . B%>|
00003b60  30 0d 13 b0 05 e1 0d 13  ba 04 0d 13 c4 13 dd 20  |0.............. |
00003b70  f2 63 65 6e 74 72 65 28  74 24 2c 72 29 0d 13 ce  |.centre(t$,r)...|
00003b80  23 f1 8a 28 74 65 78 74  63 6f 6c 73 25 2d a9 20  |#..(textcols%-. |
00003b90  74 24 2b 31 29 20 81 20  32 2c 72 29 3b 74 24 3b  |t$+1) . 2,r);t$;|
00003ba0  0d 13 d8 05 e1 0d 13 d9  04 0d 13 da 15 dd 20 a4  |.............. .|
00003bb0  74 6f 55 70 70 65 72 28  74 65 78 74 24 29 0d 13  |toUpper(text$)..|
00003bc0  db 0b ea 20 49 25 2c 41  24 0d 13 dc 14 e3 20 49  |... I%,A$..... I|
00003bd0  25 3d 31 20 b8 20 a9 20  74 65 78 74 24 0d 13 dd  |%=1 . . text$...|
00003be0  20 41 24 2b 3d bd 28 97  28 c1 74 65 78 74 24 2c  | A$+=.(.(.text$,|
00003bf0  49 25 2c 31 29 29 20 80  20 26 44 46 29 0d 13 de  |I%,1)) . &DF)...|
00003c00  05 ed 0d 13 df 07 3d 41  24 0d 13 e2 04 0d 13 ec  |......=A$.......|
00003c10  34 f4 20 2d 2d 2d 2d 2d  2d 20 47 65 6e 65 72 61  |4. ------ Genera|
00003c20  6c 20 77 69 6e 64 6f 77  20 68 61 6e 64 6c 69 6e  |l window handlin|
00003c30  67 20 72 6f 75 74 69 6e  65 73 20 2d 2d 2d 2d 2d  |g routines -----|
00003c40  2d 0d 13 f6 04 0d 14 00  17 dd 20 f2 64 65 6c 65  |-......... .dele|
00003c50  74 65 77 69 6e 64 6f 77  28 49 25 29 0d 14 0a 13  |tewindow(I%)....|
00003c60  21 71 25 3d 68 61 6e 64  6c 65 25 28 49 25 29 0d  |!q%=handle%(I%).|
00003c70  14 14 26 68 61 6e 64 6c  65 25 28 49 25 29 3d 68  |..&handle%(I%)=h|
00003c80  61 6e 64 6c 65 53 50 25  3a 68 61 6e 64 6c 65 53  |andleSP%:handleS|
00003c90  50 25 3d 49 25 0d 14 1e  12 c8 99 20 44 65 6c 65  |P%=I%...... Dele|
00003ca0  74 65 57 2c 2c 71 25 0d  14 28 12 77 69 64 65 6e  |teW,,q%..(.widen|
00003cb0  74 24 28 49 25 29 3d 22  22 0d 14 32 05 e1 0d 14  |t$(I%)=""..2....|
00003cc0  3c 04 0d 14 46 1c dd 20  f2 6c 6f 61 64 74 65 6d  |<...F.. .loadtem|
00003cd0  70 6c 61 74 65 73 28 74  66 69 6c 65 24 29 0d 14  |plates(tfile$)..|
00003ce0  50 0a 74 6d 70 25 3d 30  0d 14 5a 22 c8 99 20 22  |P.tmp%=0..Z".. "|
00003cf0  57 69 6d 70 5f 4f 70 65  6e 54 65 6d 70 6c 61 74  |Wimp_OpenTemplat|
00003d00  65 22 2c 2c 74 66 69 6c  65 24 0d 14 64 11 74 66  |e",,tfile$..d.tf|
00003d10  5f 69 6e 64 65 78 25 3d  30 3a f5 0d 14 6e 13 24  |_index%=0:...n.$|
00003d20  6d 62 5f 77 69 64 65 6e  74 25 3d 22 2a 22 0d 14  |mb_wident%="*"..|
00003d30  78 74 c8 99 20 22 57 69  6d 70 5f 4c 6f 61 64 54  |xt.. "Wimp_LoadT|
00003d40  65 6d 70 6c 61 74 65 22  2c 2c 71 25 2b 34 2c 63  |emplate",,q%+4,c|
00003d50  75 72 62 75 66 66 25 2c  62 75 66 66 65 72 25 2b  |urbuff%,buffer%+|
00003d60  6d 61 78 62 75 66 25 2c  66 6f 6e 74 63 6f 75 6e  |maxbuf%,fontcoun|
00003d70  74 73 25 2c 6d 62 5f 77  69 64 65 6e 74 25 2c 74  |ts%,mb_wident%,t|
00003d80  66 5f 69 6e 64 65 78 25  20 b8 20 2c 2c 63 75 72  |f_index% . ,,cur|
00003d90  62 75 66 66 25 2c 2c 2c  2c 74 66 5f 69 6e 64 65  |buff%,,,,tf_inde|
00003da0  78 25 0d 14 82 2b e7 20  74 66 5f 69 6e 64 65 78  |x%...+. tf_index|
00003db0  25 3c 3e 30 20 8c 20 f2  6c 6f 61 64 74 65 6d 70  |%<>0 . .loadtemp|
00003dc0  28 24 6d 62 5f 77 69 64  65 6e 74 25 29 0d 14 8c  |($mb_wident%)...|
00003dd0  11 fd 20 74 66 5f 69 6e  64 65 78 25 3d 30 0d 14  |.. tf_index%=0..|
00003de0  96 1b c8 99 20 22 57 69  6d 70 5f 43 6c 6f 73 65  |.... "Wimp_Close|
00003df0  54 65 6d 70 6c 61 74 65  22 0d 14 a0 05 e1 0d 14  |Template".......|
00003e00  aa 04 0d 14 b4 18 dd 20  f2 6c 6f 61 64 74 65 6d  |....... .loadtem|
00003e10  70 28 77 69 64 65 6e 74  24 29 0d 14 be 38 49 25  |p(wident$)...8I%|
00003e20  3d a4 6d 61 74 63 68 69  64 65 6e 74 28 77 69 64  |=.matchident(wid|
00003e30  65 6e 74 24 29 3a e7 20  49 25 3c 3e 2d 31 20 8c  |ent$):. I%<>-1 .|
00003e40  20 f2 64 65 6c 65 74 65  77 69 6e 64 6f 77 28 49  | .deletewindow(I|
00003e50  25 29 0d 14 c8 2d 71 25  21 36 38 3d 73 70 72 69  |%)...-q%!68=spri|
00003e60  74 65 61 72 65 61 25 20  20 20 20 3a 20 f4 20 75  |tearea%    : . u|
00003e70  73 65 72 20 73 70 72 69  74 65 20 61 72 65 61 0d  |ser sprite area.|
00003e80  14 d2 1b f2 63 72 77 69  6e 64 6f 77 28 71 25 2b  |....crwindow(q%+|
00003e90  34 2c 77 69 64 65 6e 74  24 29 0d 14 dc 05 e1 0d  |4,wident$)......|
00003ea0  14 e6 04 0d 14 f0 14 dd  20 f2 68 69 67 68 6c 69  |........ .highli|
00003eb0  67 68 74 28 49 25 29 0d  14 fa 05 e1 0d 15 04 2d  |ght(I%)........-|
00003ec0  c8 99 20 53 65 74 43 61  72 65 74 2c 68 61 6e 64  |.. SetCaret,hand|
00003ed0  6c 65 25 28 49 25 29 2c  2d 31 2c 30 2c 30 2c 26  |le%(I%),-1,0,0,&|
00003ee0  32 30 30 30 30 30 30 2c  30 0d 15 0e 05 e1 0d 15  |2000000,0.......|
00003ef0  18 04 0d 15 22 2b dd 20  f2 72 65 74 69 74 6c 65  |...."+. .retitle|
00003f00  28 68 61 6e 64 6c 65 25  2c 6e 65 77 74 69 74 6c  |(handle%,newtitl|
00003f10  65 24 2c f8 20 68 61 6e  64 6c 65 25 29 0d 15 2c  |e$,. handle%)..,|
00003f20  17 69 6e 64 65 78 25 3d  77 69 6e 64 6f 77 69 6e  |.index%=windowin|
00003f30  64 65 78 25 0d 15 36 05  f5 0d 15 40 31 20 20 69  |dex%..6....@1  i|
00003f40  6e 64 65 78 25 2d 3d 31  3a 20 e7 69 6e 64 65 78  |ndex%-=1: .index|
00003f50  25 3c 30 20 85 20 32 35  35 2c 22 49 6e 76 61 6c  |%<0 . 255,"Inval|
00003f60  69 64 20 77 69 6e 64 6f  77 22 0d 15 4a 1d fd 20  |id window"..J.. |
00003f70  68 61 6e 64 6c 65 25 28  69 6e 64 65 78 25 29 3d  |handle%(index%)=|
00003f80  68 61 6e 64 6c 65 25 0d  15 54 0f 21 71 25 3d 68  |handle%..T.!q%=h|
00003f90  61 6e 64 6c 65 25 0d 15  5e 10 c8 99 20 47 65 74  |andle%..^... Get|
00003fa0  57 49 2c 2c 71 25 0d 15  68 12 c8 99 20 44 65 6c  |WI,,q%..h... Del|
00003fb0  65 74 65 57 2c 2c 71 25  0d 15 72 10 66 6c 61 67  |eteW,,q%..r.flag|
00003fc0  73 25 3d 71 25 21 36 30  0d 15 7c 4d e7 20 28 66  |s%=q%!60..|M. (f|
00003fd0  6c 61 67 73 25 20 80 20  32 35 36 29 3d 30 20 8c  |lags% . 256)=0 .|
00003fe0  20 24 28 71 25 2b 37 36  29 3d c0 6e 65 77 74 69  | $(q%+76)=.newti|
00003ff0  74 6c 65 24 2c 31 31 29  20 8b 20 24 28 21 28 71  |tle$,11) . $(!(q|
00004000  25 2b 37 36 29 29 3d c0  6e 65 77 74 69 74 6c 65  |%+76))=.newtitle|
00004010  24 2c 33 39 29 0d 15 86  1e c8 99 20 43 72 65 61  |$,39)...... Crea|
00004020  74 65 57 2c 2c 71 25 2b  34 20 b8 20 68 61 6e 64  |teW,,q%+4 . hand|
00004030  6c 65 25 0d 15 90 1b 68  61 6e 64 6c 65 25 28 69  |le%....handle%(i|
00004040  6e 64 65 78 25 29 3d 68  61 6e 64 6c 65 25 0d 15  |ndex%)=handle%..|
00004050  9a 05 e1 0d 15 a4 04 0d  15 ae 1b dd 20 f2 72 65  |............ .re|
00004060  74 69 74 6c 65 5f 74 65  78 74 28 74 69 74 6c 65  |title_text(title|
00004070  24 29 0d 15 b8 15 21 62  6c 6f 63 6b 3d 74 65 78  |$)....!block=tex|
00004080  74 68 61 6e 64 6c 65 0d  15 c2 13 c8 99 20 47 65  |thandle...... Ge|
00004090  74 57 49 2c 2c 62 6c 6f  63 6b 0d 15 cc 1e 24 28  |tWI,,block....$(|
000040a0  21 28 62 6c 6f 63 6b 2b  37 36 29 29 3d c0 74 69  |!(block+76))=.ti|
000040b0  74 6c 65 24 2c 33 39 29  0d 15 d6 10 62 6c 6f 63  |tle$,39)....bloc|
000040c0  6b 21 31 36 2b 3d 33 36  0d 15 e0 19 62 6c 6f 63  |k!16+=36....bloc|
000040d0  6b 21 38 3d 62 6c 6f 63  6b 21 31 36 20 2d 20 33  |k!8=block!16 - 3|
000040e0  36 0d 15 ea 32 c8 99 20  46 6f 72 63 65 52 2c 2d  |6...2.. ForceR,-|
000040f0  31 2c 62 6c 6f 63 6b 21  34 2c 62 6c 6f 63 6b 21  |1,block!4,block!|
00004100  38 2c 62 6c 6f 63 6b 21  31 32 2c 62 6c 6f 63 6b  |8,block!12,block|
00004110  21 31 36 0d 15 f4 05 e1  0d 15 fe 04 0d 16 08 1b  |!16.............|
00004120  dd 20 f2 63 72 77 69 6e  64 6f 77 28 71 25 2c 77  |. .crwindow(q%,w|
00004130  69 64 65 6e 74 24 29 0d  16 12 1c c8 99 20 43 72  |ident$)...... Cr|
00004140  65 61 74 65 57 2c 2c 71  25 20 b8 20 68 61 6e 64  |eateW,,q% . hand|
00004150  6c 65 25 0d 16 1c 41 6d  25 3d 68 61 6e 64 6c 65  |le%...Am%=handle|
00004160  53 50 25 3a 68 61 6e 64  6c 65 53 50 25 3d 68 61  |SP%:handleSP%=ha|
00004170  6e 64 6c 65 25 28 68 61  6e 64 6c 65 53 50 25 29  |ndle%(handleSP%)|
00004180  3a 68 61 6e 64 6c 65 25  28 6d 25 29 3d 68 61 6e  |:handle%(m%)=han|
00004190  64 6c 65 25 0d 16 26 0f  21 71 25 3d 68 61 6e 64  |dle%..&.!q%=hand|
000041a0  6c 65 25 0d 16 30 0f c8  99 20 47 65 74 57 2c 2c  |le%..0... GetW,,|
000041b0  71 25 0d 16 3a 29 63 75  72 72 65 6e 74 77 69 6e  |q%..:)currentwin|
000041c0  64 6f 77 25 3d 6d 25 3a  77 69 64 65 6e 74 24 28  |dow%=m%:wident$(|
000041d0  6d 25 29 3d 77 69 64 65  6e 74 24 0d 16 44 13 63  |m%)=wident$..D.c|
000041e0  75 72 72 65 6e 74 69 63  6f 6e 25 3d 2d 31 0d 16  |urrenticon%=-1..|
000041f0  4e 12 f2 68 69 67 68 6c  69 67 68 74 28 6d 25 29  |N..highlight(m%)|
00004200  0d 16 58 05 e1 0d 16 62  04 0d 16 6c 12 dd 20 f2  |..X....b...l.. .|
00004210  63 6c 6f 73 65 28 77 69  6e 64 29 0d 16 76 0c 69  |close(wind)..v.i|
00004220  25 3d 6e 69 25 2b 31 0d  16 80 0d c8 8e 20 77 69  |%=ni%+1...... wi|
00004230  6e 64 20 ca 0d 16 8a 3f  20 c9 20 6f 62 6a 68 61  |nd ....? . objha|
00004240  6e 64 6c 65 3a 69 25 3d  54 48 45 6b 65 79 69 63  |ndle:i%=THEkeyic|
00004250  6f 6e 3a e7 20 69 63 6f  6e 25 28 69 25 29 3c 3e  |on:. icon%(i%)<>|
00004260  2d 31 20 f2 73 74 6f 72  65 5f 6f 62 6a 28 6f 70  |-1 .store_obj(op|
00004270  74 72 29 0d 16 94 43 20  c9 20 72 6f 6f 6d 68 61  |tr)...C . roomha|
00004280  6e 64 6c 65 3a 20 69 25  3d 54 48 45 64 6f 6f 72  |ndle: i%=THEdoor|
00004290  69 63 6f 6e 3a e7 20 69  63 6f 6e 25 28 69 25 29  |icon:. icon%(i%)|
000042a0  3c 3e 2d 31 20 f2 73 74  6f 72 65 5f 72 6f 6f 6d  |<>-1 .store_room|
000042b0  28 72 70 74 72 29 0d 16  9e 11 20 c9 20 74 65 78  |(rptr).... . tex|
000042c0  74 68 61 6e 64 6c 65 0d  16 a8 12 20 20 20 69 25  |thandle....   i%|
000042d0  3d 74 65 78 74 69 63 6f  6e 0d 16 b2 16 20 20 20  |=texticon....   |
000042e0  f2 72 65 6d 6f 76 65 5f  6d 61 72 6b 65 72 73 0d  |.remove_markers.|
000042f0  16 bc 17 20 20 20 c8 8e  20 74 65 78 74 5f 6f 77  |...   .. text_ow|
00004300  6e 65 72 24 20 ca 0d 16  c6 20 20 20 20 20 20 c9  |ner$ ....      .|
00004310  20 22 74 65 78 74 65 64  22 20 3a 20 f2 73 74 6f  | "texted" : .sto|
00004320  72 65 5f 6d 73 67 0d 16  d0 30 20 20 20 20 20 c9  |re_msg...0     .|
00004330  20 22 70 72 6f 67 72 61  6d 22 20 3a 20 e7 20 ac  | "program" : . .|
00004340  20 74 65 78 74 5f 6f 6b  20 8c 20 f2 73 74 6f 72  | text_ok . .stor|
00004350  65 5f 70 72 6f 67 0d 16  da 2f 20 20 20 20 20 c9  |e_prog.../     .|
00004360  20 22 76 6f 63 61 62 22  20 3a 20 e7 20 ac 20 74  | "vocab" : . . t|
00004370  65 78 74 5f 6f 6b 20 8c  20 f2 73 74 6f 72 65 5f  |ext_ok . .store_|
00004380  76 6f 63 61 62 0d 16 e4  1d 20 20 20 20 20 c9 20  |vocab....     . |
00004390  22 70 69 78 22 20 3a 20  f2 73 74 6f 72 65 5f 70  |"pix" : .store_p|
000043a0  69 78 0d 16 ee 08 20 20  20 cb 0d 16 f8 14 20 20  |ix....   .....  |
000043b0  20 e7 20 ac 20 65 72 72  66 6c 61 67 20 8c 0d 17  | . . errflag ...|
000043c0  02 34 20 20 20 20 20 74  65 78 74 5f 6f 77 6e 65  |.4     text_owne|
000043d0  72 24 3d 22 22 3a f4 20  72 65 6c 65 61 73 65 20  |r$="":. release |
000043e0  54 65 78 74 20 45 64 69  74 6f 72 20 77 69 6e 64  |Text Editor wind|
000043f0  6f 77 0d 17 0c 35 20 20  20 20 20 f2 66 69 6c 6c  |ow...5     .fill|
00004400  28 74 65 78 74 5f 62 6c  6f 63 6b 25 2c 74 65 78  |(text_block%,tex|
00004410  74 5f 62 6c 6f 63 6b 73  69 7a 65 25 2c 64 75 6d  |t_blocksize%,dum|
00004420  6d 79 5f 73 70 63 29 0d  17 16 08 20 20 20 cd 0d  |my_spc)....   ..|
00004430  17 20 3c 20 c9 20 64 65  73 69 67 6e 3a 20 69 25  |. < . design: i%|
00004440  3d 54 48 45 63 68 61 72  69 63 6f 6e 3a c8 99 20  |=THEcharicon:.. |
00004450  46 6f 72 63 65 52 2c 2d  31 2c 30 2c 30 2c 73 63  |ForceR,-1,0,0,sc|
00004460  72 77 2b 31 2c 73 63 72  68 2b 31 0d 17 34 05 cb  |rw+1,scrh+1..4..|
00004470  0d 17 3e d6 e7 20 28 74  65 78 74 5f 6f 77 6e 65  |..>.. (text_owne|
00004480  72 24 3d 22 70 72 6f 67  72 61 6d 22 20 80 20 65  |r$="program" . e|
00004490  72 72 66 6c 61 67 20 80  20 77 69 6e 64 3d 74 65  |rrflag . wind=te|
000044a0  78 74 68 61 6e 64 6c 65  29 20 84 20 28 74 65 78  |xthandle) . (tex|
000044b0  74 5f 6f 77 6e 65 72 24  3d 22 76 6f 63 61 62 22  |t_owner$="vocab"|
000044c0  20 80 20 65 72 72 66 6c  61 67 20 80 20 77 69 6e  | . errflag . win|
000044d0  64 3d 74 65 78 74 68 61  6e 64 6c 65 29 20 84 20  |d=texthandle) . |
000044e0  28 74 65 78 74 5f 6f 77  6e 65 72 24 3d 22 70 69  |(text_owner$="pi|
000044f0  78 22 20 80 20 65 72 72  66 6c 61 67 20 80 20 77  |x" . errflag . w|
00004500  69 6e 64 3d 74 65 78 74  68 61 6e 64 6c 65 29 20  |ind=texthandle) |
00004510  84 20 28 74 65 78 74 5f  6f 77 6e 65 72 24 3d 22  |. (text_owner$="|
00004520  74 65 78 74 65 64 22 20  80 20 65 72 72 66 6c 61  |texted" . errfla|
00004530  67 20 80 20 77 69 6e 64  3d 74 65 78 74 68 61 6e  |g . wind=texthan|
00004540  64 6c 65 29 20 8c 0d 17  48 05 cc 0d 17 52 12 20  |dle) ...H....R. |
00004550  20 69 63 6f 6e 25 28 69  25 29 3d 2d 31 0d 17 5c  | icon%(i%)=-1..\|
00004560  11 20 20 21 62 6c 6f 63  6b 3d 77 69 6e 64 0d 17  |.  !block=wind..|
00004570  66 16 20 20 c8 99 20 43  6c 6f 73 65 57 2c 2c 62  |f.  .. CloseW,,b|
00004580  6c 6f 63 6b 0d 17 70 05  cd 0d 17 7a 05 e1 0d 17  |lock..p....z....|
00004590  84 04 0d 17 8e 1b dd 20  f2 6f 70 65 6e 28 68 61  |....... .open(ha|
000045a0  6e 64 6c 65 2c 78 2c 79  2c 77 2c 64 29 0d 17 98  |ndle,x,y,w,d)...|
000045b0  11 21 62 6c 6f 63 6b 3d  68 61 6e 64 6c 65 0d 17  |.!block=handle..|
000045c0  a2 19 62 6c 6f 63 6b 21  34 3d 78 3a 62 6c 6f 63  |..block!4=x:bloc|
000045d0  6b 21 38 3d 79 2d 64 0d  17 ac 1b 62 6c 6f 63 6b  |k!8=y-d....block|
000045e0  21 31 32 3d 78 2b 77 3a  62 6c 6f 63 6b 21 31 36  |!12=x+w:block!16|
000045f0  3d 79 0d 17 b6 19 62 6c  6f 63 6b 21 32 30 3d 30  |=y....block!20=0|
00004600  3a 62 6c 6f 63 6b 21 32  34 3d 30 0d 17 c0 0f 62  |:block!24=0....b|
00004610  6c 6f 63 6b 21 32 38 3d  2d 31 0d 17 ca 13 c8 99  |lock!28=-1......|
00004620  20 4f 70 65 6e 57 2c 2c  62 6c 6f 63 6b 0d 17 d4  | OpenW,,block...|
00004630  05 e1 0d 17 de 04 0d 17  e8 15 dd 20 f2 72 65 64  |........... .red|
00004640  72 61 77 28 68 61 6e 64  6c 65 29 0d 17 f2 12 62  |raw(handle)....b|
00004650  6c 6f 63 6b 21 30 3d 68  61 6e 64 6c 65 0d 17 fc  |lock!0=handle...|
00004660  1e c8 99 20 52 65 64 72  61 77 57 2c 30 2c 62 6c  |... RedrawW,0,bl|
00004670  6f 63 6b 20 b8 20 6d 6f  72 65 25 0d 18 06 12 f2  |ock . more%.....|
00004680  69 6e 66 6f 28 62 6c 6f  63 6b 2b 34 29 0d 18 10  |info(block+4)...|
00004690  2f e7 20 68 61 6e 64 6c  65 3d 74 65 78 74 68 61  |/. handle=textha|
000046a0  6e 64 6c 65 20 8c 20 64  75 6d 6d 79 3d a4 72 65  |ndle . dummy=.re|
000046b0  64 72 61 77 5f 74 65 78  74 28 b9 29 0d 18 1a 05  |draw_text(.)....|
000046c0  e1 0d 18 24 04 0d 18 2e  15 dd 20 f2 66 6f 72 63  |...$...... .forc|
000046d0  65 52 28 68 61 6e 64 6c  65 29 0d 18 38 2f f4 20  |eR(handle)..8/. |
000046e0  46 6f 72 63 65 20 74 68  65 20 67 69 76 65 6e 20  |Force the given |
000046f0  77 69 6e 64 6f 77 20 4f  4e 4c 59 20 74 6f 20 62  |window ONLY to b|
00004700  65 20 72 65 64 72 61 77  6e 0d 18 42 11 f2 67 65  |e redrawn..B..ge|
00004710  74 77 28 68 61 6e 64 6c  65 29 0d 18 4c 3c c8 99  |tw(handle)..L<..|
00004720  20 46 6f 72 63 65 52 2c  68 61 6e 64 6c 65 2c 73  | ForceR,handle,s|
00004730  63 78 25 2c 73 63 79 25  2d 28 79 31 25 2d 79 30  |cx%,scy%-(y1%-y0|
00004740  25 29 2c 73 63 78 25 2b  28 78 31 25 2d 78 30 25  |%),scx%+(x1%-x0%|
00004750  29 2c 73 63 79 25 0d 18  56 05 e1 0d 18 60 04 0d  |),scy%..V....`..|
00004760  18 6a 15 dd 20 a4 6d 61  74 63 68 69 64 65 6e 74  |.j.. .matchident|
00004770  28 41 24 29 0d 18 74 11  e7 20 41 24 3d 22 22 20  |(A$)..t.. A$="" |
00004780  8c 20 3d 2d 31 0d 18 7e  08 ea 20 49 25 0d 18 88  |. =-1..~.. I%...|
00004790  2a 49 25 3d 6e 68 25 2b  31 3a f5 49 25 3d 49 25  |*I%=nh%+1:.I%=I%|
000047a0  2d 31 3a fd 41 24 3d 77  69 64 65 6e 74 24 28 49  |-1:.A$=wident$(I|
000047b0  25 29 84 49 25 3d 30 0d  18 92 1b e7 41 24 3d 77  |%).I%=0.....A$=w|
000047c0  69 64 65 6e 74 24 28 49  25 29 8c 3d 49 25 8b 3d  |ident$(I%).=I%.=|
000047d0  2d 31 0d 18 9c 04 0d 18  a6 14 dd 20 f2 67 65 74  |-1......... .get|
000047e0  77 28 68 61 6e 64 6c 65  25 29 0d 18 b0 19 e7 20  |w(handle%)..... |
000047f0  68 61 6e 64 6c 65 25 3d  69 63 6f 6e 62 61 72 25  |handle%=iconbar%|
00004800  20 20 e1 0d 18 ba 21 21  62 6c 6f 63 6b 3d 68 61  |  ....!!block=ha|
00004810  6e 64 6c 65 25 3a c8 99  47 65 74 57 2c 30 2c 62  |ndle%:..GetW,0,b|
00004820  6c 6f 63 6b 0d 18 c4 34  f2 69 6e 66 6f 28 62 6c  |lock...4.info(bl|
00004830  6f 63 6b 2b 34 29 3a 62  68 61 6e 64 6c 65 25 3d  |ock+4):bhandle%=|
00004840  62 6c 6f 63 6b 21 32 38  3a 66 6c 61 67 73 25 3d  |block!28:flags%=|
00004850  62 6c 6f 63 6b 21 33 32  0d 18 ce 19 6f 6e 74 6f  |block!32....onto|
00004860  70 3d 66 6c 61 67 73 25  20 80 20 26 32 30 30 30  |p=flags% . &2000|
00004870  30 0d 18 d8 05 e1 0d 18  e2 04 0d 18 ec 0e dd 20  |0.............. |
00004880  f2 69 6e 66 6f 28 62 29  0d 18 f6 37 78 30 25 3d  |.info(b)...7x0%=|
00004890  21 62 3a 79 30 25 3d 62  21 34 3a 78 31 25 3d 62  |!b:y0%=b!4:x1%=b|
000048a0  21 38 3a 79 31 25 3d 62  21 31 32 3a 73 63 78 25  |!8:y1%=b!12:scx%|
000048b0  3d 62 21 31 36 3a 73 63  79 25 3d 62 21 32 30 0d  |=b!16:scy%=b!20.|
000048c0  19 00 1d 62 78 25 3d 78  30 25 2d 73 63 78 25 3a  |...bx%=x0%-scx%:|
000048d0  62 79 25 3d 79 31 25 2d  73 63 79 25 0d 19 0a 2f  |by%=y1%-scy%.../|
000048e0  67 77 78 6c 25 3d 62 21  32 34 3a 67 77 79 62 25  |gwxl%=b!24:gwyb%|
000048f0  3d 62 21 32 38 3a 67 77  78 72 25 3d 62 21 33 32  |=b!28:gwxr%=b!32|
00004900  3a 67 77 79 74 25 3d 62  21 33 36 0d 19 14 05 e1  |:gwyt%=b!36.....|
00004910  0d 19 1e 04 0d 19 28 11  dd 20 f2 67 65 74 70 6f  |......(.. .getpo|
00004920  69 6e 74 65 72 0d 19 32  12 c8 99 47 65 74 50 2c  |inter..2...GetP,|
00004930  30 2c 62 6c 6f 63 6b 0d  19 3c 5a 6d 6f 75 73 65  |0,block..<Zmouse|
00004940  78 25 3d 21 62 6c 6f 63  6b 3a 6d 6f 75 73 65 79  |x%=!block:mousey|
00004950  25 3d 62 6c 6f 63 6b 21  34 3a 62 25 3d 62 6c 6f  |%=block!4:b%=blo|
00004960  63 6b 21 38 3a 68 61 6e  64 6c 65 25 3d 62 6c 6f  |ck!8:handle%=blo|
00004970  63 6b 21 31 32 3a 69 63  6f 6e 25 3d 62 6c 6f 63  |ck!12:icon%=bloc|
00004980  6b 21 31 36 3a 6f 62 25  3d 62 6c 6f 63 6b 21 32  |k!16:ob%=block!2|
00004990  30 0d 19 46 05 e1 0d 19  50 04 0d 19 5a 46 dd 20  |0..F....P...ZF. |
000049a0  f2 73 79 73 5f 63 6c 61  69 6d 69 6e 70 75 74 66  |.sys_claiminputf|
000049b0  6f 63 75 73 28 77 69 6e  64 6f 77 25 2c 69 63 6f  |ocus(window%,ico|
000049c0  6e 25 2c 78 6f 66 73 74  25 2c 79 6f 66 73 74 25  |n%,xofst%,yofst%|
000049d0  2c 68 65 69 67 68 74 25  2c 69 6e 64 65 78 25 29  |,height%,index%)|
000049e0  0d 19 64 3a c8 99 53 65  74 43 61 72 65 74 2c 20  |..d:..SetCaret, |
000049f0  77 69 6e 64 6f 77 25 2c  69 63 6f 6e 25 2c 78 6f  |window%,icon%,xo|
00004a00  66 73 74 25 2c 79 6f 66  73 74 25 2c 68 65 69 67  |fst%,yofst%,heig|
00004a10  68 74 25 2c 69 6e 64 65  78 25 0d 19 6e 05 e1 0d  |ht%,index%..n...|
00004a20  19 78 04 0d 19 82 52 dd  20 f2 73 79 73 5f 67 65  |.x....R. .sys_ge|
00004a30  74 63 61 72 65 74 70 6f  73 69 74 69 6f 6e 28 f8  |tcaretposition(.|
00004a40  20 77 69 6e 64 6f 77 25  2c f8 20 69 63 6f 6e 25  | window%,. icon%|
00004a50  2c f8 20 78 6f 66 73 74  25 2c f8 20 79 6f 66 73  |,. xofst%,. yofs|
00004a60  74 25 2c f8 20 68 65 69  67 68 74 25 2c f8 20 69  |t%,. height%,. i|
00004a70  6e 64 78 25 29 0d 19 8c  12 c8 99 47 65 74 43 61  |ndx%)......GetCa|
00004a80  72 65 74 2c 30 2c 62 0d  19 96 64 77 69 6e 64 6f  |ret,0,b...dwindo|
00004a90  77 25 3d 21 62 6c 6f 63  6b 3a 20 69 63 6f 6e 25  |w%=!block: icon%|
00004aa0  3d 62 6c 6f 63 6b 21 34  3a 20 78 6f 66 73 74 25  |=block!4: xofst%|
00004ab0  3d 62 6c 6f 63 6b 21 38  3a 20 79 6f 66 73 74 25  |=block!8: yofst%|
00004ac0  3d 62 6c 6f 63 6b 21 31  32 3a 20 68 65 69 67 68  |=block!12: heigh|
00004ad0  74 25 3d 62 6c 6f 63 6b  21 31 36 3a 20 69 6e 64  |t%=block!16: ind|
00004ae0  78 25 3d 62 6c 6f 63 6b  21 32 30 0d 19 a0 05 e1  |x%=block!20.....|
00004af0  0d 19 aa 04 0d 19 b4 14  dd 20 f2 63 75 72 73 6f  |......... .curso|
00004b00  72 28 78 25 2c 79 25 29  0d 19 be 5e f2 73 79 73  |r(x%,y%)...^.sys|
00004b10  5f 63 6c 61 69 6d 69 6e  70 75 74 66 6f 63 75 73  |_claiminputfocus|
00004b20  28 74 65 78 74 68 61 6e  64 6c 65 2c 2d 31 2c 28  |(texthandle,-1,(|
00004b30  78 25 2d 31 29 2a 63 68  58 25 2c 2d 79 25 2a 6c  |x%-1)*chX%,-y%*l|
00004b40  73 59 25 2d 39 2a 79 70  69 78 65 6c 25 2c 26 31  |sY%-9*ypixel%,&1|
00004b50  30 30 30 30 30 30 20 84  31 30 2a 79 70 69 78 65  |000000 .10*ypixe|
00004b60  6c 25 2c 2d 31 29 0d 19  c8 05 e1 0d 19 d2 04 0d  |l%,-1)..........|
00004b70  19 dc 13 dd 20 f2 74 65  78 74 5f 6d 65 6e 75 62  |.... .text_menub|
00004b80  6f 78 0d 19 e6 14 c8 8e  20 74 65 78 74 5f 6f 77  |ox...... text_ow|
00004b90  6e 65 72 24 20 ca 0d 19  f0 0e c9 20 22 74 65 78  |ner$ ...... "tex|
00004ba0  74 65 64 22 0d 19 fa 15  20 20 74 69 63 6b 24 3d  |ted"....  tick$=|
00004bb0  22 6d 65 73 73 61 67 65  22 0d 1a 04 1a 20 20 6e  |"message"....  n|
00004bc0  75 6c 6c 20 3d 20 a4 74  69 63 6b 5f 6d 65 73 73  |ull = .tick_mess|
00004bd0  61 67 65 0d 1a 0e 42 20  20 c8 99 20 43 72 65 61  |age...B  .. Crea|
00004be0  74 65 4d 2c 30 2c 6d 5f  74 65 78 74 25 2c 6d 6f  |teM,0,m_text%,mo|
00004bf0  75 73 65 78 25 2d 36 34  2c 6d 6f 75 73 65 79 25  |usex%-64,mousey%|
00004c00  3a 63 6c 61 69 6d 6d 65  6e 75 24 3d 22 6d 65 73  |:claimmenu$="mes|
00004c10  73 61 67 65 22 0d 1a 18  1b 20 20 74 68 65 4c 61  |sage"....  theLa|
00004c20  73 74 4d 65 6e 75 20 3d  20 6d 5f 74 65 78 74 25  |stMenu = m_text%|
00004c30  0d 1a 22 04 0d 1a 2c 0f  c9 20 22 70 72 6f 67 72  |.."...,.. "progr|
00004c40  61 6d 22 0d 1a 36 15 20  20 74 69 63 6b 24 3d 22  |am"..6.  tick$="|
00004c50  70 72 6f 67 72 61 6d 22  0d 1a 40 1a 20 20 6e 75  |program"..@.  nu|
00004c60  6c 6c 20 3d 20 a4 74 69  63 6b 5f 70 72 6f 67 72  |ll = .tick_progr|
00004c70  61 6d 0d 1a 4a 42 20 20  c8 99 20 43 72 65 61 74  |am..JB  .. Creat|
00004c80  65 4d 2c 30 2c 6d 5f 70  72 6f 67 25 2c 6d 6f 75  |eM,0,m_prog%,mou|
00004c90  73 65 78 25 2d 36 34 2c  6d 6f 75 73 65 79 25 3a  |sex%-64,mousey%:|
00004ca0  63 6c 61 69 6d 6d 65 6e  75 24 3d 22 70 72 6f 67  |claimmenu$="prog|
00004cb0  72 61 6d 22 0d 1a 54 1b  20 20 74 68 65 4c 61 73  |ram"..T.  theLas|
00004cc0  74 4d 65 6e 75 20 3d 20  6d 5f 70 72 6f 67 25 0d  |tMenu = m_prog%.|
00004cd0  1a 5e 04 0d 1a 68 0d c9  20 22 76 6f 63 61 62 22  |.^...h.. "vocab"|
00004ce0  0d 1a 72 13 20 20 74 69  63 6b 24 3d 22 76 6f 63  |..r.  tick$="voc|
00004cf0  61 62 22 0d 1a 7c 18 20  20 6e 75 6c 6c 20 3d 20  |ab"..|.  null = |
00004d00  a4 74 69 63 6b 5f 76 6f  63 61 62 0d 1a 86 41 20  |.tick_vocab...A |
00004d10  20 c8 99 20 43 72 65 61  74 65 4d 2c 30 2c 6d 5f  | .. CreateM,0,m_|
00004d20  76 6f 63 61 62 25 2c 6d  6f 75 73 65 78 25 2d 36  |vocab%,mousex%-6|
00004d30  34 2c 6d 6f 75 73 65 79  25 3a 63 6c 61 69 6d 6d  |4,mousey%:claimm|
00004d40  65 6e 75 24 3d 22 76 6f  63 61 62 22 0d 1a 90 1c  |enu$="vocab"....|
00004d50  20 20 74 68 65 4c 61 73  74 4d 65 6e 75 20 3d 20  |  theLastMenu = |
00004d60  6d 5f 76 6f 63 61 62 25  0d 1a 9a 04 0d 1a a4 05  |m_vocab%........|
00004d70  cb 0d 1a ae 04 0d 1a b8  05 e1 0d 1a c2 04 0d 1a  |................|
00004d80  cc 3c dd 20 f2 63 68 65  63 6b 6d 6f 75 73 65 28  |.<. .checkmouse(|
00004d90  6d 6f 75 73 65 78 25 2c  6d 6f 75 73 65 79 25 2c  |mousex%,mousey%,|
00004da0  62 75 74 74 6f 6e 25 2c  68 61 6e 64 6c 65 25 2c  |button%,handle%,|
00004db0  69 63 6f 6e 25 2c 6f 62  25 29 0d 1a d6 13 e7 68  |icon%,ob%).....h|
00004dc0  61 6e 64 6c 65 25 3d 2d  31 20 8c 20 e1 0d 1a e0  |andle%=-1 . ....|
00004dd0  12 f2 67 65 74 77 28 68  61 6e 64 6c 65 25 29 0d  |..getw(handle%).|
00004de0  1a ea 17 e7 68 61 6e 64  6c 65 25 3d 41 4c 50 53  |....handle%=ALPS|
00004df0  6d 61 69 6e 20 8c 0d 1a  f4 12 20 20 e7 69 63 6f  |main .....  .ico|
00004e00  6e 25 3c 3e 2d 31 20 8c  0d 1a fe 23 f4 20 20 20  |n%<>-1 ....#.   |
00004e10  20 69 63 6f 6e 25 20 2d  3d 20 66 69 72 73 74 49  | icon% -= firstI|
00004e20  63 6f 6e 42 61 72 49 63  6f 6e 25 0d 1b 08 0d 20  |conBarIcon%.... |
00004e30  20 20 20 c8 8e b9 20 ca  0d 1b 12 30 20 20 20 20  |   ... ....0    |
00004e40  20 20 c9 28 62 75 74 74  6f 6e 25 80 31 29 3d 31  |  .(button%.1)=1|
00004e50  20 3a 20 f4 20 61 64 6a  75 73 74 20 64 6f 65 73  | : . adjust does|
00004e60  20 6e 6f 74 68 69 6e 67  0d 1b 1c 3c 20 20 20 20  | nothing...<    |
00004e70  20 20 c9 28 62 75 74 74  6f 6e 25 80 32 29 3d 32  |  .(button%.2)=2|
00004e80  20 3a 20 76 6f 69 64 3d  a0 28 22 46 4e 6d 65 6e  | : void=.("FNmen|
00004e90  75 5f 22 2b 69 63 6f 6e  62 61 72 24 28 69 63 6f  |u_"+iconbar$(ico|
00004ea0  6e 25 29 29 0d 1b 26 29  20 20 20 20 20 20 c9 28  |n%))..&)      .(|
00004eb0  62 75 74 74 6f 6e 25 80  34 29 3d 34 20 3a 20 f2  |button%.4)=4 : .|
00004ec0  6f 70 65 6e 75 70 28 69  63 6f 6e 25 29 0d 1b 30  |openup(icon%)..0|
00004ed0  09 20 20 20 20 cb 0d 1b  3a 07 20 20 cd 0d 1b 44  |.    ...:.  ...D|
00004ee0  05 cc 0d 1b 4e 1a 20 20  e7 20 68 61 6e 64 6c 65  |....N.  . handle|
00004ef0  25 3d 69 63 6f 6e 62 61  72 25 20 8c 0d 1b 58 1c  |%=iconbar% ...X.|
00004f00  20 20 f4 20 54 68 65 20  52 49 53 43 20 4f 53 20  |  . The RISC OS |
00004f10  69 63 6f 6e 20 62 61 72  0d 1b 62 0c 20 20 c8 8e  |icon bar..b.  ..|
00004f20  20 b9 20 ca 0d 1b 6c 29  20 20 20 20 c9 20 28 62  | . ...l)    . (b|
00004f30  75 74 74 6f 6e 25 80 32  29 3d 32 20 3a 20 76 6f  |utton%.2)=2 : vo|
00004f40  69 64 3d a4 6d 65 6e 75  5f 6d 69 73 63 0d 1b 76  |id=.menu_misc..v|
00004f50  17 20 20 20 20 c9 20 28  62 75 74 74 6f 6e 25 80  |.    . (button%.|
00004f60  34 29 3d 34 0d 1b 80 43  20 20 20 20 e7 20 69 63  |4)=4...C    . ic|
00004f70  6f 6e 25 3d 66 69 72 73  74 49 63 6f 6e 42 61 72  |on%=firstIconBar|
00004f80  49 63 6f 6e 25 20 8c 20  f2 6f 70 65 6e 28 41 4c  |Icon% . .open(AL|
00004f90  50 53 6d 61 69 6e 2c 34  30 30 2c 38 30 30 2c 36  |PSmain,400,800,6|
00004fa0  30 30 2c 36 30 30 29 0d  1b 8a 07 20 20 cb 0d 1b  |00,600)....  ...|
00004fb0  94 08 20 20 20 cc 0d 1b  9e 1b 20 20 20 20 69 6e  |..   .....    in|
00004fc0  64 65 78 25 3d 77 69 6e  64 6f 77 69 6e 64 65 78  |dex%=windowindex|
00004fd0  25 0d 1b a8 0a 20 20 20  20 20 f5 0d 1b b2 35 20  |%....     ....5 |
00004fe0  20 20 20 20 20 69 6e 64  65 78 25 2d 3d 31 3a 20  |     index%-=1: |
00004ff0  e7 69 6e 64 65 78 25 3c  30 20 85 20 32 35 35 2c  |.index%<0 . 255,|
00005000  22 49 6e 76 61 6c 69 64  20 77 69 6e 64 6f 77 22  |"Invalid window"|
00005010  0d 1b bc 22 20 20 20 20  20 fd 20 68 61 6e 64 6c  |..."     . handl|
00005020  65 25 28 69 6e 64 65 78  25 29 3d 68 61 6e 64 6c  |e%(index%)=handl|
00005030  65 25 0d 1b c6 2b 20 20  20 20 76 6f 69 64 3d a0  |e%...+    void=.|
00005040  28 22 46 4e 62 75 74 74  6f 6e 5f 22 2b 77 69 64  |("FNbutton_"+wid|
00005050  65 6e 74 24 28 69 6e 64  65 78 25 29 29 0d 1b d0  |ent$(index%))...|
00005060  07 20 20 cd 0d 1b da 05  cd 0d 1b e4 05 e1 0d 1b  |.  .............|
00005070  ee 04 0d 1b f8 29 dd 20  f2 75 73 65 72 6b 65 79  |.....). .userkey|
00005080  70 72 65 73 73 65 64 28  68 61 6e 64 6c 65 25 2c  |pressed(handle%,|
00005090  69 63 6f 6e 25 2c 6b 65  79 25 29 0d 1c 02 12 f2  |icon%,key%).....|
000050a0  67 65 74 77 28 68 61 6e  64 6c 65 25 29 0d 1c 0c  |getw(handle%)...|
000050b0  0b ea 69 6e 64 65 78 25  0d 1c 16 17 69 6e 64 65  |..index%....inde|
000050c0  78 25 3d 77 69 6e 64 6f  77 69 6e 64 65 78 25 0d  |x%=windowindex%.|
000050d0  1c 20 05 f5 0d 1c 2a 1c  69 6e 64 65 78 25 2d 3d  |. ....*.index%-=|
000050e0  31 3a 20 e7 69 6e 64 65  78 25 3c 30 20 8c 20 e1  |1: .index%<0 . .|
000050f0  0d 1c 34 1c fd 68 61 6e  64 6c 65 25 28 69 6e 64  |..4..handle%(ind|
00005100  65 78 25 29 3d 68 61 6e  64 6c 65 25 0d 1c 3e 29  |ex%)=handle%..>)|
00005110  76 6f 69 64 3d a0 28 22  46 4e 6b 65 79 70 72 65  |void=.("FNkeypre|
00005120  73 73 5f 22 2b 77 69 64  65 6e 74 24 28 69 6e 64  |ss_"+wident$(ind|
00005130  65 78 25 29 29 0d 1c 48  05 e1 0d 1c 52 04 0d 1c  |ex%))..H....R...|
00005140  5c 20 dd 20 f2 6d 65 6e  75 73 65 6c 65 63 74 28  |\ . .menuselect(|
00005150  69 74 65 6d 30 25 2c 69  74 65 6d 31 25 29 0d 1c  |item0%,item1%)..|
00005160  66 23 c8 99 20 22 57 69  6d 70 5f 47 65 74 50 6f  |f#.. "Wimp_GetPo|
00005170  69 6e 74 65 72 49 6e 66  6f 22 2c 2c 62 6c 6f 63  |interInfo",,bloc|
00005180  6b 0d 1c 70 14 62 75 54  54 6f 6e 20 3d 20 62 6c  |k..p.buTTon = bl|
00005190  6f 63 6b 21 38 0d 1c 7a  26 76 6f 69 64 3d a0 28  |ock!8..z&void=.(|
000051a0  22 46 4e 6d 65 6e 75 73  65 6c 65 63 74 5f 22 2b  |"FNmenuselect_"+|
000051b0  63 6c 61 69 6d 6d 65 6e  75 24 29 0d 1c 84 10 e7  |claimmenu$).....|
000051c0  20 62 75 54 54 6f 6e 3d  31 20 8c 0d 1c 8e 3a 20  | buTTon=1 ....: |
000051d0  20 20 f4 20 2a 2a 2a 20  41 44 4a 55 53 54 20 70  |  . *** ADJUST p|
000051e0  72 65 73 73 65 64 20 73  6f 20 6b 65 65 70 20 74  |ressed so keep t|
000051f0  68 65 20 6d 65 6e 75 20  73 74 72 75 63 74 75 72  |he menu structur|
00005200  65 20 2a 2a 2a 0d 1c 98  20 20 20 20 6e 75 6c 6c  |e ***...    null|
00005210  20 3d 20 a0 28 22 46 4e  74 69 63 6b 5f 22 2b 74  | = .("FNtick_"+t|
00005220  69 63 6b 24 29 0d 1c a2  23 20 20 20 c8 99 20 43  |ick$)...#   .. C|
00005230  72 65 61 74 65 4d 2c 30  2c 74 68 65 4c 61 73 74  |reateM,0,theLast|
00005240  4d 65 6e 75 2c 30 2c 30  0d 1c ac 05 cc 0d 1c b6  |Menu,0,0........|
00005250  14 20 20 20 63 6c 61 69  6d 6d 65 6e 75 24 3d 22  |.   claimmenu$="|
00005260  22 0d 1c c0 05 cd 0d 1c  ca 05 e1 0d 1c d4 04 0d  |"...............|
00005270  1c de 2a dd 20 f2 75 70  64 61 74 65 28 68 61 6e  |..*. .update(han|
00005280  64 6c 65 25 2c 75 78 30  25 2c 75 79 30 25 2c 75  |dle%,ux0%,uy0%,u|
00005290  78 31 25 2c 75 79 31 25  29 0d 1c e8 48 21 62 6c  |x1%,uy1%)...H!bl|
000052a0  6f 63 6b 3d 68 61 6e 64  6c 65 25 3a 62 6c 6f 63  |ock=handle%:bloc|
000052b0  6b 21 34 3d 75 78 30 25  3a 62 6c 6f 63 6b 21 38  |k!4=ux0%:block!8|
000052c0  3d 75 79 30 25 3a 62 6c  6f 63 6b 21 31 32 3d 75  |=uy0%:block!12=u|
000052d0  78 31 25 3a 62 6c 6f 63  6b 21 31 36 3d 75 79 31  |x1%:block!16=uy1|
000052e0  25 0d 1c f2 2d c8 99 20  55 70 64 61 74 65 57 2c  |%...-.. UpdateW,|
000052f0  30 2c 62 6c 6f 63 6b 20  b8 20 6d 6f 72 65 25 3a  |0,block . more%:|
00005300  f2 69 6e 66 6f 28 62 6c  6f 63 6b 2b 34 29 0d 1c  |.info(block+4)..|
00005310  fc 05 e1 0d 1d 06 04 0d  1d 10 14 dd 20 f2 6f 70  |............ .op|
00005320  65 6e 75 70 28 69 63 6f  6e 25 29 0d 1d 1a 17 e7  |enup(icon%).....|
00005330  20 69 63 6f 6e 25 28 69  63 6f 6e 25 29 3d 2d 31  | icon%(icon%)=-1|
00005340  20 8c 0d 1d 24 97 20 20  e7 20 69 63 6f 6e 25 3c  | ...$.  . icon%<|
00005350  3e 64 69 73 6b 69 63 6f  6e 20 80 20 69 63 6f 6e  |>diskicon . icon|
00005360  25 3c 3e 74 65 78 74 69  63 6f 6e 20 80 20 69 63  |%<>texticon . ic|
00005370  6f 6e 25 3c 3e 61 72 63  69 63 6f 6e 20 80 20 69  |on%<>arcicon . i|
00005380  63 6f 6e 25 3c 3e 73 77  61 70 69 63 6f 6e 20 80  |con%<>swapicon .|
00005390  20 69 63 6f 6e 25 3c 3e  70 72 6f 67 69 63 6f 6e  | icon%<>progicon|
000053a0  20 80 20 69 63 6f 6e 25  3c 3e 76 6f 63 61 62 69  | . icon%<>vocabi|
000053b0  63 6f 6e 20 80 20 69 63  6f 6e 25 3c 3e 65 79 65  |con . icon%<>eye|
000053c0  69 63 6f 6e 20 8c 20 69  63 6f 6e 25 28 69 63 6f  |icon . icon%(ico|
000053d0  6e 25 29 3d 69 63 6f 6e  25 0d 1d 2e 11 20 20 20  |n%)=icon%....   |
000053e0  c8 8e 20 69 63 6f 6e 25  20 ca 0d 1d 38 14 20 20  |.. icon% ...8.  |
000053f0  20 20 20 c9 20 64 69 73  6b 69 63 6f 6e 3a 0d 1d  |   . diskicon:..|
00005400  42 36 20 20 20 20 20 20  20 20 20 20 c8 99 20 43  |B6          .. C|
00005410  72 65 61 74 65 4d 2c 30  2c 64 69 73 6b 6d 65 6e  |reateM,0,diskmen|
00005420  75 2c 6d 6f 75 73 65 78  25 2d 36 34 2c 6d 6f 75  |u,mousex%-64,mou|
00005430  73 65 79 25 0d 1d 4c 36  20 20 20 20 20 20 20 20  |sey%..L6        |
00005440  20 20 e7 20 6c 6f 61 64  65 64 24 3c 3e 22 22 20  |  . loaded$<>"" |
00005450  8c 20 66 24 3d 70 61 74  68 24 20 8b 20 66 24 3d  |. f$=path$ . f$=|
00005460  22 41 6c 70 73 46 69 6c  65 22 0d 1d 56 2f 20 20  |"AlpsFile"..V/  |
00005470  20 20 20 20 20 20 20 20  f2 63 68 61 6e 67 65 69  |        .changei|
00005480  63 6f 6e 28 73 61 76 65  68 61 6e 64 6c 65 2c 32  |con(savehandle,2|
00005490  2c 66 24 2c 76 6f 69 64  29 0d 1d 60 3f 20 20 20  |,f$,void)..`?   |
000054a0  20 20 20 20 20 20 20 63  6c 61 69 6d 6d 65 6e 75  |       claimmenu|
000054b0  24 3d 22 64 69 73 6b 33  35 22 3a 74 68 65 4c 61  |$="disk35":theLa|
000054c0  73 74 4d 65 6e 75 3d 64  69 73 6b 6d 65 6e 75 3a  |stMenu=diskmenu:|
000054d0  74 69 63 6b 24 3d 22 22  0d 1d 6a 1c 20 20 20 20  |tick$=""..j.    |
000054e0  20 f4 20 57 48 45 4e 20  54 48 45 6d 69 73 63 69  | . WHEN THEmisci|
000054f0  63 6f 6e 3a 0d 1d 74 3c  20 20 20 20 20 20 20 20  |con:..t<        |
00005500  20 20 f4 20 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 20  |  . *********** |
00005510  64 6f 20 6e 6f 74 68 69  6e 67 20 66 6f 72 20 74  |do nothing for t|
00005520  68 69 73 20 69 63 6f 6e  20 2a 2a 2a 2a 2a 2a 2a  |his icon *******|
00005530  0d 1d 7e 14 20 20 20 20  20 c9 20 74 65 78 74 69  |..~.     . texti|
00005540  63 6f 6e 3a 0d 1d 88 20  20 20 20 20 20 20 20 20  |con:...         |
00005550  20 20 e7 20 74 65 78 74  5f 6f 77 6e 65 72 24 3d  |  . text_owner$=|
00005560  22 22 20 8c 0d 1d 92 40  20 20 20 20 20 20 20 20  |"" ....@        |
00005570  20 20 20 20 f2 72 65 74  69 74 6c 65 28 74 65 78  |    .retitle(tex|
00005580  74 68 61 6e 64 6c 65 2c  22 4d 45 53 53 41 47 45  |thandle,"MESSAGE|
00005590  20 22 2b c3 6d 70 74 72  2c 74 65 78 74 68 61 6e  | "+.mptr,texthan|
000055a0  64 6c 65 29 0d 1d 9c 31  20 20 20 20 20 20 20 20  |dle)...1        |
000055b0  20 20 20 20 f2 6f 70 65  6e 28 74 65 78 74 68 61  |    .open(textha|
000055c0  6e 64 6c 65 2c 30 2c 31  30 30 30 2c 73 63 72 77  |ndle,0,1000,scrw|
000055d0  2c 34 30 30 29 0d 1d a6  2e 20 20 20 20 20 20 20  |,400)....       |
000055e0  20 20 20 20 20 74 65 78  74 5f 6f 77 6e 65 72 24  |     text_owner$|
000055f0  3d 22 74 65 78 74 65 64  22 3a 74 65 78 74 5f 6f  |="texted":text_o|
00005600  6b 3d b9 0d 1d b0 1f 20  20 20 20 20 20 20 20 20  |k=.....         |
00005610  20 20 20 f2 73 68 6f 77  5f 6d 73 67 28 6d 70 74  |   .show_msg(mpt|
00005620  72 29 0d 1d ba 0f 20 20  20 20 20 20 20 20 20 20  |r)....          |
00005630  cc 0d 1d c4 13 20 20 20  20 20 20 20 20 20 20 20  |.....           |
00005640  20 ef 20 37 0d 1d ce 0f  20 20 20 20 20 20 20 20  | . 7....        |
00005650  20 20 cd 0d 1d d8 17 20  20 20 20 20 c9 20 54 48  |  .....     . TH|
00005660  45 64 6f 6f 72 69 63 6f  6e 3a 0d 1d e2 45 20 20  |Edooricon:...E  |
00005670  20 20 20 20 20 20 20 20  f2 6f 70 65 6e 28 68 61  |        .open(ha|
00005680  6e 64 6c 65 25 28 a4 6d  61 74 63 68 69 64 65 6e  |ndle%(.matchiden|
00005690  74 28 22 72 6f 6f 6d 65  64 69 74 22 29 29 2c 30  |t("roomedit")),0|
000056a0  2c 37 32 30 2c 31 32 38  30 2c 31 30 34 30 29 0d  |,720,1280,1040).|
000056b0  1d ec 21 20 20 20 20 20  20 20 20 20 20 f2 72 65  |..!          .re|
000056c0  73 74 6f 72 65 5f 72 6f  6f 6d 28 72 70 74 72 29  |store_room(rptr)|
000056d0  0d 1d f6 16 20 20 20 20  20 c9 20 54 48 45 6b 65  |....     . THEke|
000056e0  79 69 63 6f 6e 3a 0d 1e  00 45 20 20 20 20 20 20  |yicon:...E      |
000056f0  20 20 20 20 f2 6f 70 65  6e 28 68 61 6e 64 6c 65  |    .open(handle|
00005700  25 28 a4 6d 61 74 63 68  69 64 65 6e 74 28 22 6f  |%(.matchident("o|
00005710  62 6a 65 63 74 65 64 22  29 29 2c 38 35 30 2c 35  |bjected")),850,5|
00005720  36 30 2c 38 30 30 2c 36  38 30 29 0d 1e 0a 20 20  |60,800,680)...  |
00005730  20 20 20 20 20 20 20 20  20 f2 72 65 73 74 6f 72  |         .restor|
00005740  65 5f 6f 62 6a 28 6f 70  74 72 29 0d 1e 14 14 20  |e_obj(optr).... |
00005750  20 20 20 20 c9 20 70 72  6f 67 69 63 6f 6e 3a 0d  |    . progicon:.|
00005760  1e 1e 20 20 20 20 20 20  20 20 20 20 20 e7 20 74  |..           . t|
00005770  65 78 74 5f 6f 77 6e 65  72 24 3d 22 22 20 8c 0d  |ext_owner$="" ..|
00005780  1e 28 58 20 20 20 20 20  20 20 20 20 20 20 20 f2  |.(X            .|
00005790  72 65 74 69 74 6c 65 28  74 65 78 74 68 61 6e 64  |retitle(texthand|
000057a0  6c 65 2c 22 50 52 4f 47  52 41 4d 3a 20 22 2b 70  |le,"PROGRAM: "+p|
000057b0  72 6f 67 24 28 70 72 67  5f 73 65 6c 25 29 2b 22  |rog$(prg_sel%)+"|
000057c0  20 22 2b 70 72 6f 67 76  61 6c 24 2c 74 65 78 74  | "+progval$,text|
000057d0  68 61 6e 64 6c 65 29 0d  1e 32 31 20 20 20 20 20  |handle)..21     |
000057e0  20 20 20 20 20 20 20 f2  6f 70 65 6e 28 74 65 78  |       .open(tex|
000057f0  74 68 61 6e 64 6c 65 2c  30 2c 31 30 30 30 2c 73  |thandle,0,1000,s|
00005800  63 72 77 2c 34 30 30 29  0d 1e 3c 2f 20 20 20 20  |crw,400)..</    |
00005810  20 20 20 20 20 20 20 20  74 65 78 74 5f 6f 77 6e  |        text_own|
00005820  65 72 24 3d 22 70 72 6f  67 72 61 6d 22 3a 74 65  |er$="program":te|
00005830  78 74 5f 6f 6b 3d b9 0d  1e 46 28 20 20 20 20 20  |xt_ok=...F(     |
00005840  20 20 20 20 20 20 20 f2  6c 69 73 74 28 70 72 67  |       .list(prg|
00005850  5f 73 65 6c 25 2c 70 72  6f 67 76 61 6c 24 29 0d  |_sel%,progval$).|
00005860  1e 50 0f 20 20 20 20 20  20 20 20 20 20 cc 0d 1e  |.P.          ...|
00005870  5a 13 20 20 20 20 20 20  20 20 20 20 20 20 ef 20  |Z.            . |
00005880  37 0d 1e 64 0f 20 20 20  20 20 20 20 20 20 20 cd  |7..d.          .|
00005890  0d 1e 6e 17 20 20 20 20  20 c9 20 54 48 45 63 68  |..n.     . THEch|
000058a0  61 72 69 63 6f 6e 3a 0d  1e 78 45 20 20 20 20 20  |aricon:..xE     |
000058b0  20 20 20 20 20 f2 6f 70  65 6e 28 68 61 6e 64 6c  |     .open(handl|
000058c0  65 25 28 a4 6d 61 74 63  68 69 64 65 6e 74 28 22  |e%(.matchident("|
000058d0  63 68 72 64 65 73 69 67  6e 22 29 29 2c 30 2c 35  |chrdesign")),0,5|
000058e0  36 30 2c 31 32 38 30 2c  38 36 30 29 0d 1e 82 24  |60,1280,860)...$|
000058f0  20 20 20 20 20 20 20 20  20 20 f2 64 69 73 70 6c  |          .displ|
00005900  61 79 5f 63 68 72 28 63  75 72 5f 63 68 72 25 29  |ay_chr(cur_chr%)|
00005910  0d 1e 8c 36 20 20 20 20  20 20 20 20 20 20 f2 63  |...6          .c|
00005920  68 61 6e 67 65 69 63 6f  6e 28 64 65 73 69 67 6e  |hangeicon(design|
00005930  2c 36 34 2c bd 28 63 75  72 5f 63 68 72 25 29 2c  |,64,.(cur_chr%),|
00005940  64 75 6d 6d 79 29 0d 1e  96 15 20 20 20 20 20 c9  |dummy)....     .|
00005950  20 76 6f 63 61 62 69 63  6f 6e 3a 0d 1e a0 20 20  | vocabicon:...  |
00005960  20 20 20 20 20 20 20 20  20 e7 20 74 65 78 74 5f  |         . text_|
00005970  6f 77 6e 65 72 24 3d 22  22 20 8c 0d 1e aa 4e 20  |owner$="" ....N |
00005980  20 20 20 20 20 20 20 20  20 20 20 f2 72 65 74 69  |           .reti|
00005990  74 6c 65 28 74 65 78 74  68 61 6e 64 6c 65 2c 22  |tle(texthandle,"|
000059a0  56 4f 43 41 42 55 4c 41  52 59 3a 20 22 2b 76 6f  |VOCABULARY: "+vo|
000059b0  63 24 28 76 6f 63 5f 73  65 63 74 25 29 2c 74 65  |c$(voc_sect%),te|
000059c0  78 74 68 61 6e 64 6c 65  29 0d 1e b4 31 20 20 20  |xthandle)...1   |
000059d0  20 20 20 20 20 20 20 20  20 f2 6f 70 65 6e 28 74  |         .open(t|
000059e0  65 78 74 68 61 6e 64 6c  65 2c 30 2c 31 30 30 30  |exthandle,0,1000|
000059f0  2c 73 63 72 77 2c 34 30  30 29 0d 1e be 2d 20 20  |,scrw,400)...-  |
00005a00  20 20 20 20 20 20 20 20  20 20 74 65 78 74 5f 6f  |          text_o|
00005a10  77 6e 65 72 24 3d 22 76  6f 63 61 62 22 3a 74 65  |wner$="vocab":te|
00005a20  78 74 5f 6f 6b 3d b9 0d  1e c8 26 20 20 20 20 20  |xt_ok=....&     |
00005a30  20 20 20 20 20 20 20 f2  6c 69 73 74 5f 76 6f 63  |       .list_voc|
00005a40  61 62 28 76 6f 63 5f 73  65 63 74 25 29 0d 1e d2  |ab(voc_sect%)...|
00005a50  0f 20 20 20 20 20 20 20  20 20 20 cc 0d 1e dc 13  |.          .....|
00005a60  20 20 20 20 20 20 20 20  20 20 20 20 ef 20 37 0d  |            . 7.|
00005a70  1e e6 0f 20 20 20 20 20  20 20 20 20 20 cd 0d 1e  |...          ...|
00005a80  f0 14 20 20 20 20 20 c9  20 68 65 6c 70 69 63 6f  |..     . helpico|
00005a90  6e 3a 0d 1e fa 3f 20 20  20 20 20 20 20 20 20 20  |n:...?          |
00005aa0  f2 6f 70 65 6e 28 68 61  6e 64 6c 65 25 28 a4 6d  |.open(handle%(.m|
00005ab0  61 74 63 68 69 64 65 6e  74 28 22 48 45 4c 50 22  |atchident("HELP"|
00005ac0  29 29 2c 30 2c 35 30 30  2c 39 36 30 2c 34 30 30  |)),0,500,960,400|
00005ad0  29 0d 1f 04 13 20 20 20  20 20 c9 20 65 79 65 69  |)....     . eyei|
00005ae0  63 6f 6e 3a 0d 1f 0e 20  20 20 20 20 20 20 20 20  |con:...         |
00005af0  20 20 e7 20 74 65 78 74  5f 6f 77 6e 65 72 24 3d  |  . text_owner$=|
00005b00  22 22 20 8c 0d 1f 18 3a  20 20 20 20 20 20 20 20  |"" ....:        |
00005b10  20 20 20 20 f2 72 65 74  69 74 6c 65 28 74 65 78  |    .retitle(tex|
00005b20  74 68 61 6e 64 6c 65 2c  22 50 49 43 54 55 52 45  |thandle,"PICTURE|
00005b30  53 22 2c 74 65 78 74 68  61 6e 64 6c 65 29 0d 1f  |S",texthandle)..|
00005b40  22 31 20 20 20 20 20 20  20 20 20 20 20 20 f2 6f  |"1            .o|
00005b50  70 65 6e 28 74 65 78 74  68 61 6e 64 6c 65 2c 30  |pen(texthandle,0|
00005b60  2c 31 30 30 30 2c 73 63  72 77 2c 34 30 30 29 0d  |,1000,scrw,400).|
00005b70  1f 2c 2b 20 20 20 20 20  20 20 20 20 20 20 20 74  |.,+            t|
00005b80  65 78 74 5f 6f 77 6e 65  72 24 3d 22 70 69 78 22  |ext_owner$="pix"|
00005b90  3a 74 65 78 74 5f 6f 6b  3d b9 0d 1f 36 19 20 20  |:text_ok=...6.  |
00005ba0  20 20 20 20 20 20 20 20  20 20 f2 6c 69 73 74 5f  |          .list_|
00005bb0  70 69 78 0d 1f 40 0f 20  20 20 20 20 20 20 20 20  |pix..@.         |
00005bc0  20 cc 0d 1f 4a 13 20 20  20 20 20 20 20 20 20 20  | ...J.          |
00005bd0  20 20 ef 20 37 0d 1f 54  0f 20 20 20 20 20 20 20  |  . 7..T.       |
00005be0  20 20 20 cd 0d 1f 5e 29  20 20 20 20 20 c9 20 61  |   ...^)     . a|
00005bf0  72 63 69 63 6f 6e 3a 64  75 6d 6d 79 3d a4 6b 65  |rcicon:dummy=.ke|
00005c00  79 70 72 65 73 73 5f 73  74 61 74 75 73 0d 1f 68  |ypress_status..h|
00005c10  13 20 20 20 20 20 c9 20  73 77 61 70 69 63 6f 6e  |.     . swapicon|
00005c20  0d 1f 72 2d 20 20 20 20  20 64 61 74 61 76 61 6c  |..r-     dataval|
00005c30  69 64 3d ac 20 64 61 74  61 76 61 6c 69 64 3a ef  |id=. datavalid:.|
00005c40  20 37 3a f2 73 77 61 70  5f 64 61 74 61 0d 1f 7c  | 7:.swap_data..||
00005c50  16 20 20 20 20 20 e7 20  64 61 74 61 76 61 6c 69  |.     . datavali|
00005c60  64 20 8c 0d 1f 86 38 20  20 20 20 20 20 f2 63 68  |d ....8      .ch|
00005c70  61 6e 67 65 69 63 6f 6e  28 41 4c 50 53 6d 61 69  |angeicon(ALPSmai|
00005c80  6e 2c 73 77 61 70 69 63  6f 6e 2c 22 73 77 61 70  |n,swapicon,"swap|
00005c90  22 2c 73 77 61 70 69 63  6f 6e 29 0d 1f 90 0a 20  |",swapicon).... |
00005ca0  20 20 20 20 cc 0d 1f 9a  3a 20 20 20 20 20 20 f2  |    ....:      .|
00005cb0  63 68 61 6e 67 65 69 63  6f 6e 28 41 4c 50 53 6d  |changeicon(ALPSm|
00005cc0  61 69 6e 2c 73 77 61 70  69 63 6f 6e 2c 22 73 77  |ain,swapicon,"sw|
00005cd0  61 70 5f 78 22 2c 73 77  61 70 69 63 6f 6e 29 0d  |ap_x",swapicon).|
00005ce0  1f a4 0a 20 20 20 20 20  cd 0d 1f ae 1a 20 20 20  |...     .....   |
00005cf0  20 20 f2 66 6f 72 63 65  52 28 41 4c 50 53 6d 61  |  .forceR(ALPSma|
00005d00  69 6e 29 0d 1f b8 0a 20  20 20 20 20 cb 0d 1f c2  |in)....     ....|
00005d10  05 cd 0d 1f cc 05 e1 0d  1f d6 04 0d 1f e0 04 0d  |................|
00005d20  1f ea 4a f4 20 20 2d 2d  2d 2d 2d 2d 20 60 62 75  |..J.  ------ `bu|
00005d30  74 74 6f 6e 60 20 72 6f  75 74 69 6e 65 73 20 74  |tton` routines t|
00005d40  6f 20 64 65 61 6c 20 77  69 74 68 20 63 6c 69 63  |o deal with clic|
00005d50  6b 73 20 69 6e 20 67 69  76 65 6e 20 77 69 6e 64  |ks in given wind|
00005d60  6f 77 20 2d 2d 2d 2d 2d  2d 0d 1f f4 04 0d 1f fe  |ow ------.......|
00005d70  14 dd 20 a4 62 75 74 74  6f 6e 5f 74 65 78 74 65  |.. .button_texte|
00005d80  64 0d 20 08 0c ea 6d 78  25 2c 6d 79 25 0d 20 12  |d. ...mx%,my%. .|
00005d90  12 e7 20 62 75 74 74 6f  6e 25 3c 3e 32 20 8c 0d  |.. button%<>2 ..|
00005da0  20 1c 0f f2 67 65 74 70  6f 69 6e 74 65 72 0d 20  | ...getpointer. |
00005db0  26 29 6d 78 25 3d 28 6d  6f 75 73 65 78 25 2d 62  |&)mx%=(mousex%-b|
00005dc0  78 25 2b 63 68 58 25 81  34 29 20 80 28 ac 28 63  |x%+chX%.4) .(.(c|
00005dd0  68 58 25 2d 31 29 29 0d  20 30 2d 6d 79 25 3d 28  |hX%-1)). 0-my%=(|
00005de0  6d 6f 75 73 65 79 25 2d  62 79 25 29 20 2d 20 28  |mousey%-by%) - (|
00005df0  28 6d 6f 75 73 65 79 25  2d 62 79 25 29 20 83 6c  |(mousey%-by%) .l|
00005e00  73 59 25 29 0d 20 3a 19  74 65 78 74 5f 63 6f 6c  |sY%). :.text_col|
00005e10  25 3d 31 2b 6d 78 25 20  81 63 68 58 25 0d 20 44  |%=1+mx% .chX%. D|
00005e20  24 74 65 78 74 5f 72 6f  77 25 3d 2d 28 28 6d 6f  |$text_row%=-((mo|
00005e30  75 73 65 79 25 2d 62 79  25 29 20 81 6c 73 59 25  |usey%-by%) .lsY%|
00005e40  29 0d 20 4e 2d e7 20 74  65 78 74 5f 72 6f 77 25  |). N-. text_row%|
00005e50  3e 6c 61 73 74 5f 72 6f  77 25 20 74 65 78 74 5f  |>last_row% text_|
00005e60  72 6f 77 25 3d 6c 61 73  74 5f 72 6f 77 25 0d 20  |row%=last_row%. |
00005e70  58 4b e7 20 74 65 78 74  5f 63 6f 6c 25 3e 74 65  |XK. text_col%>te|
00005e80  78 74 5f 72 6f 77 6c 65  6e 25 28 74 65 78 74 5f  |xt_rowlen%(text_|
00005e90  72 6f 77 25 29 20 74 65  78 74 5f 63 6f 6c 25 3d  |row%) text_col%=|
00005ea0  74 65 78 74 5f 72 6f 77  6c 65 6e 25 28 74 65 78  |text_rowlen%(tex|
00005eb0  74 5f 72 6f 77 25 29 2b  31 0d 20 62 1d e7 20 74  |t_row%)+1. b.. t|
00005ec0  65 78 74 5f 63 6f 6c 25  3c 31 20 74 65 78 74 5f  |ext_col%<1 text_|
00005ed0  63 6f 6c 25 3d 31 0d 20  6c 05 cd 0d 20 76 04 0d  |col%=1. l... v..|
00005ee0  20 80 10 c8 8e 20 62 75  74 74 6f 6e 25 20 ca 0d  | .... button% ..|
00005ef0  20 8a 07 c9 20 32 0d 20  94 11 f2 74 65 78 74 5f  | ... 2. ...text_|
00005f00  6d 65 6e 75 62 6f 78 0d  20 9e 07 c9 20 34 0d 20  |menubox. ... 4. |
00005f10  a8 0f f2 6c 6f 63 61 74  65 5f 70 74 72 0d 20 b2  |...locate_ptr. .|
00005f20  20 f2 63 75 72 73 6f 72  28 74 65 78 74 5f 63 6f  | .cursor(text_co|
00005f30  6c 25 2c 74 65 78 74 5f  72 6f 77 25 29 0d 20 bc  |l%,text_row%). .|
00005f40  07 c9 20 31 0d 20 c6 12  f2 69 6e 73 65 72 74 5f  |.. 1. ...insert_|
00005f50  6d 61 72 6b 65 72 0d 20  d0 05 cb 0d 20 da 06 3d  |marker. .... ..=|
00005f60  30 0d 20 e4 04 0d 20 ee  14 dd 20 f2 69 6e 73 65  |0. ... ... .inse|
00005f70  72 74 5f 6d 61 72 6b 65  72 0d 20 f8 1a e7 20 74  |rt_marker. ... t|
00005f80  65 78 74 5f 6f 77 6e 65  72 24 3c 3e 22 70 69 78  |ext_owner$<>"pix|
00005f90  22 20 8c 0d 21 02 0f f2  6c 6f 63 61 74 65 5f 70  |" ..!...locate_p|
00005fa0  74 72 0d 21 0c 0d e7 20  6d 72 6b 3c 32 20 8c 0d  |tr.!... mrk<2 ..|
00005fb0  21 16 17 6d 61 72 6b 28  6d 72 6b 29 3d 74 65 78  |!..mark(mrk)=tex|
00005fc0  74 5f 70 74 72 25 0d 21  20 29 63 6f 6c 28 6d 72  |t_ptr%.! )col(mr|
00005fd0  6b 29 3d 74 65 78 74 5f  63 6f 6c 25 3a 72 6f 77  |k)=text_col%:row|
00005fe0  28 6d 72 6b 29 3d 74 65  78 74 5f 72 6f 77 25 0d  |(mrk)=text_row%.|
00005ff0  21 2a 17 61 73 63 28 6d  72 6b 29 3d 3f 74 65 78  |!*.asc(mrk)=?tex|
00006000  74 5f 70 74 72 25 0d 21  34 2f e7 20 61 73 63 28  |t_ptr%.!4/. asc(|
00006010  6d 72 6b 29 3d 31 33 20  8c 20 ef 32 33 2c 64 75  |mrk)=13 . .23,du|
00006020  6d 6d 79 5f 63 72 20 8b  20 ef 32 33 2c 63 68 72  |mmy_cr . .23,chr|
00006030  28 6d 72 6b 29 0d 21 3e  16 3f 6f 73 5f 62 6c 6f  |(mrk).!>.?os_blo|
00006040  63 6b 3d 61 73 63 28 6d  72 6b 29 0d 21 48 1c c8  |ck=asc(mrk).!H..|
00006050  99 20 22 4f 53 5f 57 6f  72 64 22 2c 26 41 2c 6f  |. "OS_Word",&A,o|
00006060  73 5f 62 6c 6f 63 6b 0d  21 52 0e e3 20 52 25 3d  |s_block.!R.. R%=|
00006070  31 20 b8 20 38 0d 21 5c  19 72 6f 77 5f 76 61 6c  |1 . 8.!\.row_val|
00006080  75 65 3d 52 25 3f 6f 73  5f 62 6c 6f 63 6b 0d 21  |ue=R%?os_block.!|
00006090  66 15 ef 20 72 6f 77 5f  76 61 6c 75 65 20 82 20  |f.. row_value . |
000060a0  26 46 46 0d 21 70 05 ed  0d 21 7a 3d e7 20 61 73  |&FF.!p...!z=. as|
000060b0  63 28 6d 72 6b 29 3d 31  33 20 8c 20 3f 74 65 78  |c(mrk)=13 . ?tex|
000060c0  74 5f 70 74 72 25 3d 64  75 6d 6d 79 5f 63 72 20  |t_ptr%=dummy_cr |
000060d0  8b 20 3f 74 65 78 74 5f  70 74 72 25 3d 63 68 72  |. ?text_ptr%=chr|
000060e0  28 6d 72 6b 29 0d 21 84  68 f2 75 70 64 61 74 65  |(mrk).!.h.update|
000060f0  28 74 65 78 74 68 61 6e  64 6c 65 2c 63 68 58 25  |(texthandle,chX%|
00006100  2a 28 74 65 78 74 5f 63  6f 6c 25 2d 31 29 2c 2d  |*(text_col%-1),-|
00006110  28 74 65 78 74 5f 72 6f  77 25 2b 31 29 2a 6c 73  |(text_row%+1)*ls|
00006120  59 25 2c 63 68 58 25 2a  28 74 65 78 74 5f 63 6f  |Y%,chX%*(text_co|
00006130  6c 25 2d 31 29 2b 63 68  58 25 2c 2d 28 74 65 78  |l%-1)+chX%,-(tex|
00006140  74 5f 72 6f 77 25 29 2a  6c 73 59 25 29 0d 21 8e  |t_row%)*lsY%).!.|
00006150  19 64 75 6d 6d 79 3d a4  72 65 64 72 61 77 5f 74  |.dummy=.redraw_t|
00006160  65 78 74 28 b9 29 0d 21  98 0a 6d 72 6b 2b 3d 31  |ext(.).!..mrk+=1|
00006170  0d 21 a2 20 f2 63 75 72  73 6f 72 28 74 65 78 74  |.!. .cursor(text|
00006180  5f 63 6f 6c 25 2c 74 65  78 74 5f 72 6f 77 25 29  |_col%,text_row%)|
00006190  0d 21 ac 05 cd 0d 21 b6  05 cd 0d 21 c0 05 e1 0d  |.!....!....!....|
000061a0  21 ca 04 0d 21 d4 11 dd  20 f2 6c 6f 63 61 74 65  |!...!... .locate|
000061b0  5f 70 74 72 0d 21 de 19  74 65 78 74 5f 70 74 72  |_ptr.!..text_ptr|
000061c0  25 3d 74 65 78 74 5f 62  6c 6f 63 6b 25 0d 21 e8  |%=text_block%.!.|
000061d0  13 e7 20 74 65 78 74 5f  72 6f 77 25 3e 30 20 8c  |.. text_row%>0 .|
000061e0  0d 21 f2 1a 20 20 e3 20  52 25 3d 30 20 b8 20 74  |.!..  . R%=0 . t|
000061f0  65 78 74 5f 72 6f 77 25  2d 31 0d 21 fc 23 20 20  |ext_row%-1.!.#  |
00006200  20 20 74 65 78 74 5f 70  74 72 25 2b 3d 74 65 78  |  text_ptr%+=tex|
00006210  74 5f 72 6f 77 6c 65 6e  25 28 52 25 29 0d 22 06  |t_rowlen%(R%).".|
00006220  37 20 20 20 20 e7 20 74  65 78 74 5f 72 6f 77 6c  |7    . text_rowl|
00006230  65 6e 25 28 52 25 29 3c  74 65 78 74 5f 6d 61 78  |en%(R%)<text_max|
00006240  6c 6c 65 6e 25 20 8c 20  74 65 78 74 5f 70 74 72  |llen% . text_ptr|
00006250  25 2b 3d 31 0d 22 10 07  20 20 ed 0d 22 1a 05 cd  |%+=1."..  .."...|
00006260  0d 22 24 1a 74 65 78 74  5f 70 74 72 25 2b 3d 74  |."$.text_ptr%+=t|
00006270  65 78 74 5f 63 6f 6c 25  2d 31 0d 22 2e 2f e7 20  |ext_col%-1."./. |
00006280  74 65 78 74 5f 70 74 72  25 3e 74 65 78 74 5f 65  |text_ptr%>text_e|
00006290  6e 64 25 20 8c 20 74 65  78 74 5f 70 74 72 25 3d  |nd% . text_ptr%=|
000062a0  74 65 78 74 5f 65 6e 64  25 0d 22 38 05 e1 0d 22  |text_end%."8..."|
000062b0  42 04 0d 22 4c 16 dd 20  a4 62 75 74 74 6f 6e 5f  |B.."L.. .button_|
000062c0  6f 62 6a 65 63 74 65 64  0d 22 56 0e c8 8e 20 69  |objected."V... i|
000062d0  63 6f 6e 25 20 ca 0d 22  60 08 c9 20 30 3a 0d 22  |con% .."`.. 0:."|
000062e0  6a 04 0d 22 74 32 f4 20  46 69 72 73 74 20 73 65  |j.."t2. First se|
000062f0  74 20 74 68 65 20 27 74  69 63 6b 27 20 62 69 74  |t the 'tick' bit|
00006300  73 20 66 6f 72 20 65 61  63 68 20 6d 65 6e 75 20  |s for each menu |
00006310  69 74 65 6d 0d 22 7e 19  6e 75 6c 6c 20 3d 20 a4  |item."~.null = .|
00006320  74 69 63 6b 5f 6f 62 6a  65 63 74 65 64 0d 22 88  |tick_objected.".|
00006330  43 c8 99 20 43 72 65 61  74 65 4d 2c 30 2c 6d 5f  |C.. CreateM,0,m_|
00006340  6f 62 6a 66 6c 61 67 2c  6d 6f 75 73 65 78 25 2d  |objflag,mousex%-|
00006350  36 34 2c 6d 6f 75 73 65  79 25 3a 63 6c 61 69 6d  |64,mousey%:claim|
00006360  6d 65 6e 75 24 3d 22 6f  62 6a 65 63 74 65 64 22  |menu$="objected"|
00006370  0d 22 92 14 74 69 63 6b  24 3d 22 6f 62 6a 65 63  |."..tick$="objec|
00006380  74 65 64 22 0d 22 9c 1b  74 68 65 4c 61 73 74 4d  |ted"."..theLastM|
00006390  65 6e 75 20 3d 20 6d 5f  6f 62 6a 66 6c 61 67 0d  |enu = m_objflag.|
000063a0  22 a6 04 0d 22 b0 12 c9  20 35 3a f2 66 69 72 73  |"..."... 5:.firs|
000063b0  74 5f 6f 62 6a 0d 22 ba  11 c9 20 36 3a f2 6c 61  |t_obj."... 6:.la|
000063c0  73 74 5f 6f 62 6a 0d 22  c4 12 c9 20 32 37 3a f2  |st_obj."... 27:.|
000063d0  6e 65 78 74 5f 6f 62 6a  0d 22 ce 12 c9 20 31 36  |next_obj."... 16|
000063e0  3a f2 70 72 65 76 5f 6f  62 6a 0d 22 d8 15 c9 20  |:.prev_obj."... |
000063f0  32 30 3a f2 66 77 64 5f  6f 62 6a 28 31 30 29 0d  |20:.fwd_obj(10).|
00006400  22 e2 18 c9 20 32 31 3a  f2 72 65 77 69 6e 64 5f  |"... 21:.rewind_|
00006410  6f 62 6a 28 31 30 29 0d  22 ec 08 c9 20 31 37 0d  |obj(10)."... 17.|
00006420  22 f6 14 f2 73 74 6f 72  65 5f 6f 62 6a 28 6f 70  |"...store_obj(op|
00006430  74 72 29 0d 23 00 25 6f  70 74 72 3d bb 28 a4 67  |tr).#.%optr=.(.g|
00006440  65 74 69 63 6f 6e 64 61  74 61 28 6f 62 6a 68 61  |eticondata(objha|
00006450  6e 64 6c 65 2c 37 29 29  0d 23 0a 15 e7 20 6f 70  |ndle,7)).#... op|
00006460  74 72 3c 31 20 8c 20 6f  70 74 72 3d 31 0d 23 14  |tr<1 . optr=1.#.|
00006470  1f e7 20 6f 70 74 72 3e  6d 61 78 6f 62 73 20 8c  |.. optr>maxobs .|
00006480  20 6f 70 74 72 3d 6d 61  78 6f 62 73 0d 23 1e 16  | optr=maxobs.#..|
00006490  f2 72 65 73 74 6f 72 65  5f 6f 62 6a 28 6f 70 74  |.restore_obj(opt|
000064a0  72 29 0d 23 28 19 c9 20  32 32 3a 6c 61 73 74 5f  |r).#(.. 22:last_|
000064b0  6f 62 6a 65 63 74 3d 6f  70 74 72 0d 23 32 09 c9  |object=optr.#2..|
000064c0  20 32 36 3a 0d 23 3c 44  c8 99 20 43 72 65 61 74  | 26:.#<D.. Creat|
000064d0  65 4d 2c 30 2c 6d 5f 63  6f 6e 74 61 69 6e 2c 6d  |eM,0,m_contain,m|
000064e0  6f 75 73 65 78 25 2d 36  34 2c 6d 6f 75 73 65 79  |ousex%-64,mousey|
000064f0  25 3a 63 6c 61 69 6d 6d  65 6e 75 24 3d 22 63 6f  |%:claimmenu$="co|
00006500  6e 74 61 69 6e 65 72 22  0d 23 46 0c 74 69 63 6b  |ntainer".#F.tick|
00006510  24 3d 22 22 0d 23 50 1b  74 68 65 4c 61 73 74 4d  |$="".#P.theLastM|
00006520  65 6e 75 20 3d 20 6d 5f  63 6f 6e 74 61 69 6e 0d  |enu = m_contain.|
00006530  23 5a 05 7f 0d 23 64 05  cb 0d 23 6e 34 e7 20 6f  |#Z...#d...#n4. o|
00006540  70 74 72 3e 6c 61 73 74  5f 6f 62 6a 65 63 74 20  |ptr>last_object |
00006550  6c 61 73 74 5f 6f 62 6a  65 63 74 3d 6f 70 74 72  |last_object=optr|
00006560  3a 64 61 74 61 5f 73 61  76 65 64 3d a3 0d 23 78  |:data_saved=..#x|
00006570  06 3d 30 0d 23 82 04 0d  23 8c 16 dd 20 a4 62 75  |.=0.#...#... .bu|
00006580  74 74 6f 6e 5f 72 6f 6f  6d 65 64 69 74 0d 23 96  |tton_roomedit.#.|
00006590  0e c8 8e 20 69 63 6f 6e  25 20 ca 0d 23 a0 08 c9  |... icon% ..#...|
000065a0  20 31 3a 0d 23 aa 14 74  69 63 6b 24 3d 22 72 6f  | 1:.#..tick$="ro|
000065b0  6f 6d 65 64 69 74 22 0d  23 b4 19 6e 75 6c 6c 20  |omedit".#..null |
000065c0  3d 20 a4 74 69 63 6b 5f  72 6f 6f 6d 65 64 69 74  |= .tick_roomedit|
000065d0  0d 23 be 42 c8 99 20 43  72 65 61 74 65 4d 2c 30  |.#.B.. CreateM,0|
000065e0  2c 6d 5f 72 6d 66 6c 61  67 2c 6d 6f 75 73 65 78  |,m_rmflag,mousex|
000065f0  25 2d 36 34 2c 6d 6f 75  73 65 79 25 3a 63 6c 61  |%-64,mousey%:cla|
00006600  69 6d 6d 65 6e 75 24 3d  22 72 6f 6f 6d 65 64 69  |immenu$="roomedi|
00006610  74 22 0d 23 c8 1a 74 68  65 4c 61 73 74 4d 65 6e  |t".#..theLastMen|
00006620  75 20 3d 20 6d 5f 72 6d  66 6c 61 67 0d 23 d2 04  |u = m_rmflag.#..|
00006630  0d 23 dc 13 c9 20 35 3a  f2 66 69 72 73 74 5f 72  |.#... 5:.first_r|
00006640  6f 6f 6d 0d 23 e6 12 c9  20 36 3a f2 6c 61 73 74  |oom.#... 6:.last|
00006650  5f 72 6f 6f 6d 0d 23 f0  12 c9 20 37 3a f2 6e 65  |_room.#... 7:.ne|
00006660  78 74 5f 72 6f 6f 6d 0d  23 fa 12 c9 20 38 3a f2  |xt_room.#... 8:.|
00006670  70 72 65 76 5f 72 6f 6f  6d 0d 24 04 15 c9 20 39  |prev_room.$... 9|
00006680  3a f2 66 77 64 5f 72 6f  6f 6d 28 31 30 29 0d 24  |:.fwd_room(10).$|
00006690  0e 19 c9 20 31 30 3a f2  72 65 77 69 6e 64 5f 72  |... 10:.rewind_r|
000066a0  6f 6f 6d 28 31 30 29 0d  24 18 08 c9 20 31 31 0d  |oom(10).$... 11.|
000066b0  24 22 15 f2 73 74 6f 72  65 5f 72 6f 6f 6d 28 72  |$"..store_room(r|
000066c0  70 74 72 29 0d 24 2c 27  72 70 74 72 3d bb 28 a4  |ptr).$,'rptr=.(.|
000066d0  67 65 74 69 63 6f 6e 64  61 74 61 28 72 6f 6f 6d  |geticondata(room|
000066e0  68 61 6e 64 6c 65 2c 33  33 29 29 0d 24 36 15 e7  |handle,33)).$6..|
000066f0  20 72 70 74 72 3c 31 20  8c 20 72 70 74 72 3d 31  | rptr<1 . rptr=1|
00006700  0d 24 40 1f e7 20 72 70  74 72 3e 6d 61 78 72 6d  |.$@.. rptr>maxrm|
00006710  73 20 8c 20 72 70 74 72  3d 6d 61 78 72 6d 73 0d  |s . rptr=maxrms.|
00006720  24 4a 17 f2 72 65 73 74  6f 72 65 5f 72 6f 6f 6d  |$J..restore_room|
00006730  28 72 70 74 72 29 0d 24  54 04 0d 24 5e 17 c9 20  |(rptr).$T..$^.. |
00006740  31 32 3a 6c 61 73 74 5f  72 6f 6f 6d 3d 72 70 74  |12:last_room=rpt|
00006750  72 0d 24 68 05 cb 0d 24  72 30 e7 20 72 70 74 72  |r.$h...$r0. rptr|
00006760  3e 6c 61 73 74 5f 72 6f  6f 6d 20 6c 61 73 74 5f  |>last_room last_|
00006770  72 6f 6f 6d 3d 72 70 74  72 3a 64 61 74 61 5f 73  |room=rptr:data_s|
00006780  61 76 65 64 3d a3 0d 24  7c 04 0d 24 86 38 f4 20  |aved=..$|..$.8. |
00006790  4e 6f 77 20 63 68 65 63  6b 20 66 6f 72 20 63 6c  |Now check for cl|
000067a0  69 63 6b 69 6e 67 20 6d  65 6e 75 20 6f 6e 20 73  |icking menu on s|
000067b0  65 6c 65 63 74 65 64 20  45 58 49 54 52 20 69 63  |elected EXITR ic|
000067c0  6f 6e 0d 24 90 04 0d 24  9a 0a c8 8e 20 b9 20 ca  |on.$...$.... . .|
000067d0  0d 24 a4 04 0d 24 ae 19  c9 20 69 63 6f 6e 25 3e  |.$...$... icon%>|
000067e0  35 33 20 80 20 69 63 6f  6e 25 3c 37 30 0d 24 b8  |53 . icon%<70.$.|
000067f0  04 0d 24 c2 14 6f 6c 64  72 6d 69 63 6f 6e 25 3d  |..$..oldrmicon%=|
00006800  69 63 6f 6e 25 0d 24 cc  19 6e 75 6c 6c 20 3d 20  |icon%.$..null = |
00006810  a4 74 69 63 6b 5f 65 78  69 74 65 64 69 74 0d 24  |.tick_exitedit.$|
00006820  d6 14 74 69 63 6b 24 3d  22 65 78 69 74 65 64 69  |..tick$="exitedi|
00006830  74 22 0d 24 e0 41 c8 99  20 43 72 65 61 74 65 4d  |t".$.A.. CreateM|
00006840  2c 30 2c 6d 5f 65 78 69  74 66 2c 6d 6f 75 73 65  |,0,m_exitf,mouse|
00006850  78 25 2d 36 34 2c 6d 6f  75 73 65 79 25 3a 63 6c  |x%-64,mousey%:cl|
00006860  61 69 6d 6d 65 6e 75 24  3d 22 65 78 69 74 65 64  |aimmenu$="exited|
00006870  69 74 22 0d 24 ea 19 74  68 65 4c 61 73 74 4d 65  |it".$..theLastMe|
00006880  6e 75 20 3d 20 6d 5f 65  78 69 74 66 0d 24 f4 05  |nu = m_exitf.$..|
00006890  7f 0d 24 fe 05 cb 0d 25  08 06 3d 30 0d 25 12 04  |..$....%..=0.%..|
000068a0  0d 25 1c 17 dd 20 a4 62  75 74 74 6f 6e 5f 63 68  |.%... .button_ch|
000068b0  72 64 65 73 69 67 6e 0d  25 26 0a c8 8e 20 b9 20  |rdesign.%&... . |
000068c0  ca 0d 25 30 19 c9 20 69  63 6f 6e 25 3e 3d 30 20  |..%0.. icon%>=0 |
000068d0  80 20 69 63 6f 6e 25 3c  36 34 0d 25 3a 29 20 20  |. icon%<64.%:)  |
000068e0  f2 73 65 74 5f 69 63 6f  6e 28 64 65 73 69 67 6e  |.set_icon(design|
000068f0  2c 69 63 6f 6e 25 2c 26  35 30 30 30 30 30 30 30  |,icon%,&50000000|
00006900  2c 30 29 0d 25 44 1a 20  20 f2 77 72 69 74 65 5f  |,0).%D.  .write_|
00006910  63 68 72 28 63 75 72 5f  63 68 72 25 29 0d 25 4e  |chr(cur_chr%).%N|
00006920  1e 20 20 f2 73 65 74 5f  69 63 6f 6e 28 64 65 73  |.  .set_icon(des|
00006930  69 67 6e 2c 36 34 2c 30  2c 30 29 0d 25 58 0e c9  |ign,64,0,0).%X..|
00006940  20 69 63 6f 6e 25 3d 36  36 0d 25 62 11 20 20 63  | icon%=66.%b.  c|
00006950  75 72 5f 63 68 72 25 2b  3d 31 0d 25 6c 2b 20 20  |ur_chr%+=1.%l+  |
00006960  e7 20 63 75 72 5f 63 68  72 25 3e 6d 61 78 5f 63  |. cur_chr%>max_c|
00006970  68 72 25 20 63 75 72 5f  63 68 72 25 3d 6d 61 78  |hr% cur_chr%=max|
00006980  5f 63 68 72 25 0d 25 76  2e 20 20 f2 63 68 61 6e  |_chr%.%v.  .chan|
00006990  67 65 69 63 6f 6e 28 64  65 73 69 67 6e 2c 36 34  |geicon(design,64|
000069a0  2c bd 28 63 75 72 5f 63  68 72 25 29 2c 69 63 6f  |,.(cur_chr%),ico|
000069b0  6e 25 29 0d 25 80 1c 20  20 f2 64 69 73 70 6c 61  |n%).%..  .displa|
000069c0  79 5f 63 68 72 28 63 75  72 5f 63 68 72 25 29 0d  |y_chr(cur_chr%).|
000069d0  25 8a 0e c9 20 69 63 6f  6e 25 3d 36 37 0d 25 94  |%... icon%=67.%.|
000069e0  11 20 20 63 75 72 5f 63  68 72 25 2d 3d 31 0d 25  |.  cur_chr%-=1.%|
000069f0  9e 1f 20 20 e7 20 63 75  72 5f 63 68 72 25 3c 33  |..  . cur_chr%<3|
00006a00  32 20 63 75 72 5f 63 68  72 25 3d 33 32 0d 25 a8  |2 cur_chr%=32.%.|
00006a10  2e 20 20 f2 63 68 61 6e  67 65 69 63 6f 6e 28 64  |.  .changeicon(d|
00006a20  65 73 69 67 6e 2c 36 34  2c bd 28 63 75 72 5f 63  |esign,64,.(cur_c|
00006a30  68 72 25 29 2c 69 63 6f  6e 25 29 0d 25 b2 1c 20  |hr%),icon%).%.. |
00006a40  20 f2 64 69 73 70 6c 61  79 5f 63 68 72 28 63 75  | .display_chr(cu|
00006a50  72 5f 63 68 72 25 29 0d  25 bc 0e c9 20 69 63 6f  |r_chr%).%... ico|
00006a60  6e 25 3d 36 38 0d 25 c6  44 20 20 c8 99 20 43 72  |n%=68.%.D  .. Cr|
00006a70  65 61 74 65 4d 2c 30 2c  6d 5f 63 68 61 72 64 65  |eateM,0,m_charde|
00006a80  73 25 2c 6d 6f 75 73 65  78 25 2d 36 34 2c 6d 6f  |s%,mousex%-64,mo|
00006a90  75 73 65 79 25 3a 63 6c  61 69 6d 6d 65 6e 75 24  |usey%:claimmenu$|
00006aa0  3d 22 63 68 72 64 65 66  22 0d 25 d0 27 20 20 74  |="chrdef".%.'  t|
00006ab0  68 65 4c 61 73 74 4d 65  6e 75 20 3d 20 6d 5f 63  |heLastMenu = m_c|
00006ac0  68 61 72 64 65 73 25 3a  74 69 63 6b 24 3d 22 22  |hardes%:tick$=""|
00006ad0  0d 25 da 05 cb 0d 25 e4  06 3d 30 0d 25 ee 04 0d  |.%....%..=0.%...|
00006ae0  25 f8 04 0d 26 02 12 dd  20 a4 62 75 74 74 6f 6e  |%...&... .button|
00006af0  5f 69 6e 66 6f 0d 26 0c  0f e7 20 69 63 6f 6e 25  |_info.&... icon%|
00006b00  3d 35 20 8c 0d 26 16 16  f2 63 6c 6f 73 65 28 69  |=5 ..&...close(i|
00006b10  6e 66 6f 68 61 6e 64 6c  65 29 0d 26 20 05 cd 0d  |nfohandle).& ...|
00006b20  26 2a 06 3d 30 0d 26 34  04 0d 26 3e 14 dd 20 a4  |&*.=0.&4..&>.. .|
00006b30  62 75 74 74 6f 6e 5f 73  61 76 65 61 73 0d 26 48  |button_saveas.&H|
00006b40  0e c8 8e 20 69 63 6f 6e  25 20 ca 0d 26 52 2f c9  |... icon% ..&R/.|
00006b50  20 30 20 3a 20 f2 73 61  76 65 5f 61 6c 6c 28 a4  | 0 : .save_all(.|
00006b60  67 65 74 69 63 6f 6e 64  61 74 61 28 73 61 76 65  |geticondata(save|
00006b70  68 61 6e 64 6c 65 2c 32  29 29 0d 26 5c 1b c9 20  |handle,2)).&\.. |
00006b80  31 20 3a 20 f2 67 65 74  77 28 73 61 76 65 68 61  |1 : .getw(saveha|
00006b90  6e 64 6c 65 29 0d 26 66  2e 20 20 20 20 20 20 20  |ndle).&f.       |
00006ba0  20 20 64 75 6d 6d 79 24  3d a4 67 65 74 69 63 6f  |  dummy$=.getico|
00006bb0  6e 64 61 74 61 28 73 61  76 65 68 61 6e 64 6c 65  |ndata(savehandle|
00006bc0  2c 31 29 0d 26 70 2a 20  20 20 20 20 20 20 20 20  |,1).&p*         |
00006bd0  62 6c 6f 63 6b 21 34 3d  35 3a 62 6c 6f 63 6b 21  |block!4=5:block!|
00006be0  38 3d 62 6c 6f 63 6b 21  38 2b 62 78 25 0d 26 7a  |8=block!8+bx%.&z|
00006bf0  22 20 20 20 20 20 20 20  20 20 62 6c 6f 63 6b 21  |"         block!|
00006c00  31 32 3d 62 6c 6f 63 6b  21 31 32 2b 62 79 25 0d  |12=block!12+by%.|
00006c10  26 84 22 20 20 20 20 20  20 20 20 20 62 6c 6f 63  |&."         bloc|
00006c20  6b 21 31 36 3d 62 6c 6f  63 6b 21 31 36 2b 62 78  |k!16=block!16+bx|
00006c30  25 0d 26 8e 22 20 20 20  20 20 20 20 20 20 62 6c  |%.&."         bl|
00006c40  6f 63 6b 21 32 30 3d 62  6c 6f 63 6b 21 32 30 2b  |ock!20=block!20+|
00006c50  62 79 25 0d 26 98 42 20  20 20 20 20 20 20 20 20  |by%.&.B         |
00006c60  62 6c 6f 63 6b 21 32 34  3d 30 3a 62 6c 6f 63 6b  |block!24=0:block|
00006c70  21 32 38 3d 30 3a 62 6c  6f 63 6b 21 33 32 3d 73  |!28=0:block!32=s|
00006c80  63 72 77 2b 31 3a 62 6c  6f 63 6b 21 33 36 3d 73  |crw+1:block!36=s|
00006c90  63 72 68 2b 31 0d 26 a2  25 20 20 20 20 20 20 20  |crh+1.&.%       |
00006ca0  20 20 c8 99 20 22 57 69  6d 70 5f 44 72 61 67 42  |  .. "Wimp_DragB|
00006cb0  6f 78 22 2c 2c 62 6c 6f  63 6b 0d 26 ac 05 cb 0d  |ox",,block.&....|
00006cc0  26 b6 06 3d 30 0d 26 c0  04 0d 26 ca 13 dd 20 a4  |&..=0.&...&... .|
00006cd0  62 75 74 74 6f 6e 5f 53  65 74 75 70 0d 26 d4 0e  |button_Setup.&..|
00006ce0  c8 8e 20 69 63 6f 6e 25  20 ca 0d 26 de 07 c9 20  |.. icon% ..&... |
00006cf0  30 0d 26 e8 43 c9 20 31  3a f2 63 72 65 61 74 65  |0.&.C. 1:.create|
00006d00  5f 64 69 72 73 28 a4 67  65 74 69 63 6f 6e 64 61  |_dirs(.geticonda|
00006d10  74 61 28 73 65 74 75 70  68 2c 32 29 2c a4 67 65  |ta(setuph,2),.ge|
00006d20  74 69 63 6f 6e 64 61 74  61 28 73 65 74 75 70 68  |ticondata(setuph|
00006d30  2c 35 29 29 0d 26 f2 05  cb 0d 26 fc 12 f2 63 6c  |,5)).&....&...cl|
00006d40  6f 73 65 28 73 65 74 75  70 68 29 0d 27 06 17 c8  |ose(setuph).'...|
00006d50  97 20 c8 93 20 30 2c 30  2c 73 63 72 77 2c 73 63  |. .. 0,0,scrw,sc|
00006d60  72 68 0d 27 10 06 3d 30  0d 27 1a 04 0d 27 24 4b  |rh.'..=0.'...'$K|
00006d70  f4 20 20 2d 2d 2d 2d 2d  2d 20 60 6b 65 79 70 72  |.  ------ `keypr|
00006d80  65 73 73 60 20 72 6f 75  74 69 6e 65 73 20 64 65  |ess` routines de|
00006d90  61 6c 20 77 69 74 68 20  70 72 65 73 73 69 6e 67  |al with pressing|
00006da0  20 6b 65 79 20 60 6b 65  79 25 60 20 69 6e 20 61  | key `key%` in a|
00006db0  20 77 69 6e 64 6f 77 0d  27 2e 04 0d 27 38 16 dd  | window.'...'8..|
00006dc0  20 a4 6b 65 79 70 72 65  73 73 5f 74 65 78 74 65  | .keypress_texte|
00006dd0  64 0d 27 42 0a c8 8e 20  b9 20 ca 0d 27 4c 2d c9  |d.'B... . ..'L-.|
00006de0  20 6b 65 79 25 3d 31 33  3a f2 6e 65 77 6c 69 6e  | key%=13:.newlin|
00006df0  65 3a 64 61 74 61 5f 73  61 76 65 64 3d a3 3a 74  |e:data_saved=.:t|
00006e00  65 78 74 5f 6f 6b 3d a3  0d 27 56 5e c9 20 28 6b  |ext_ok=..'V^. (k|
00006e10  65 79 25 3d 26 31 38 36  20 80 20 74 65 78 74 5f  |ey%=&186 . text_|
00006e20  6f 77 6e 65 72 24 3d 22  74 65 78 74 65 64 22 29  |owner$="texted")|
00006e30  3a f2 6e 65 78 74 5f 6d  73 67 3a f2 66 6f 72 63  |:.next_msg:.forc|
00006e40  65 52 28 74 65 78 74 68  61 6e 64 6c 65 29 3a 74  |eR(texthandle):t|
00006e50  65 78 74 5f 72 6f 77 25  3d 30 3a 74 65 78 74 5f  |ext_row%=0:text_|
00006e60  63 6f 6c 25 3d 31 0d 27  60 5e c9 20 28 6b 65 79  |col%=1.'`^. (key|
00006e70  25 3d 26 31 38 35 20 80  20 74 65 78 74 5f 6f 77  |%=&185 . text_ow|
00006e80  6e 65 72 24 3d 22 74 65  78 74 65 64 22 29 3a f2  |ner$="texted"):.|
00006e90  70 72 65 76 5f 6d 73 67  3a f2 66 6f 72 63 65 52  |prev_msg:.forceR|
00006ea0  28 74 65 78 74 68 61 6e  64 6c 65 29 3a 74 65 78  |(texthandle):tex|
00006eb0  74 5f 72 6f 77 25 3d 30  3a 74 65 78 74 5f 63 6f  |t_row%=0:text_co|
00006ec0  6c 25 3d 31 0d 27 6a 5f  c9 20 28 6b 65 79 25 3d  |l%=1.'j_. (key%=|
00006ed0  26 31 38 37 20 80 20 74  65 78 74 5f 6f 77 6e 65  |&187 . text_owne|
00006ee0  72 24 3d 22 74 65 78 74  65 64 22 29 3a f2 66 69  |r$="texted"):.fi|
00006ef0  72 73 74 5f 6d 73 67 3a  f2 66 6f 72 63 65 52 28  |rst_msg:.forceR(|
00006f00  74 65 78 74 68 61 6e 64  6c 65 29 3a 74 65 78 74  |texthandle):text|
00006f10  5f 72 6f 77 25 3d 30 3a  74 65 78 74 5f 63 6f 6c  |_row%=0:text_col|
00006f20  25 3d 31 0d 27 74 5e c9  20 28 6b 65 79 25 3d 26  |%=1.'t^. (key%=&|
00006f30  31 38 38 20 80 20 74 65  78 74 5f 6f 77 6e 65 72  |188 . text_owner|
00006f40  24 3d 22 74 65 78 74 65  64 22 29 3a f2 6c 61 73  |$="texted"):.las|
00006f50  74 5f 6d 73 67 3a f2 66  6f 72 63 65 52 28 74 65  |t_msg:.forceR(te|
00006f60  78 74 68 61 6e 64 6c 65  29 3a 74 65 78 74 5f 72  |xthandle):text_r|
00006f70  6f 77 25 3d 30 3a 74 65  78 74 5f 63 6f 6c 25 3d  |ow%=0:text_col%=|
00006f80  31 0d 27 7e 3e c9 20 6b  65 79 25 3d 32 34 3a f2  |1.'~>. key%=24:.|
00006f90  63 75 74 28 6d 61 72 6b  28 30 29 2c 6d 61 72 6b  |cut(mark(0),mark|
00006fa0  28 31 29 2c 70 69 63 62  75 66 29 3a f2 66 6f 72  |(1),picbuf):.for|
00006fb0  63 65 52 28 74 65 78 74  68 61 6e 64 6c 65 29 0d  |ceR(texthandle).|
00006fc0  27 88 3e c9 20 6b 65 79  25 3d 33 3a f2 63 6f 70  |'.>. key%=3:.cop|
00006fd0  79 28 6d 61 72 6b 28 30  29 2c 6d 61 72 6b 28 31  |y(mark(0),mark(1|
00006fe0  29 2c 70 69 63 62 75 66  29 3a f2 66 6f 72 63 65  |),picbuf):.force|
00006ff0  52 28 74 65 78 74 68 61  6e 64 6c 65 29 0d 27 92  |R(texthandle).'.|
00007000  3a c9 20 6b 65 79 25 3d  32 32 3a f2 70 61 73 74  |:. key%=22:.past|
00007010  65 28 74 65 78 74 5f 70  74 72 25 2c 70 69 63 62  |e(text_ptr%,picb|
00007020  75 66 29 3a f2 66 6f 72  63 65 52 28 74 65 78 74  |uf):.forceR(text|
00007030  68 61 6e 64 6c 65 29 0d  27 9c 31 c9 20 6b 65 79  |handle).'.1. key|
00007040  25 3d 32 36 3a f2 72 65  6d 6f 76 65 5f 6d 61 72  |%=26:.remove_mar|
00007050  6b 65 72 73 3a f2 66 6f  72 63 65 52 28 74 65 78  |kers:.forceR(tex|
00007060  74 68 61 6e 64 6c 65 29  0d 27 a6 1e c9 20 6b 65  |thandle).'... ke|
00007070  79 25 3d 26 31 38 39 3a  f2 69 6e 73 65 72 74 5f  |y%=&189:.insert_|
00007080  6d 61 72 6b 65 72 0d 27  b0 13 c9 20 6b 65 79 25  |marker.'... key%|
00007090  3d 26 31 38 46 3a f2 75  70 0d 27 ba 15 c9 20 6b  |=&18F:.up.'... k|
000070a0  65 79 25 3d 26 31 38 45  3a f2 64 6f 77 6e 0d 27  |ey%=&18E:.down.'|
000070b0  c4 16 c9 20 6b 65 79 25  3d 26 31 38 44 3a f2 72  |... key%=&18D:.r|
000070c0  69 67 68 74 0d 27 ce 29  c9 20 6b 65 79 25 3d 26  |ight.'.). key%=&|
000070d0  31 38 41 3a e3 20 49 25  3d 31 20 b8 20 74 61 62  |18A:. I%=1 . tab|
000070e0  5f 73 65 74 3a f2 72 69  67 68 74 3a ed 0d 27 d8  |_set:.right:..'.|
000070f0  28 c9 20 6b 65 79 25 3d  26 31 39 41 3a e3 20 49  |(. key%=&19A:. I|
00007100  25 3d 31 20 b8 20 74 61  62 5f 73 65 74 3a f2 6c  |%=1 . tab_set:.l|
00007110  65 66 74 3a ed 0d 27 e2  15 c9 20 6b 65 79 25 3d  |eft:..'... key%=|
00007120  26 31 38 43 3a f2 6c 65  66 74 0d 27 ec 33 c9 20  |&18C:.left.'.3. |
00007130  6b 65 79 25 3d 26 31 41  42 3a f2 64 65 6c 65 74  |key%=&1AB:.delet|
00007140  65 5f 6c 69 6e 65 3a 64  61 74 61 5f 73 61 76 65  |e_line:data_save|
00007150  64 3d a3 3a 74 65 78 74  5f 6f 6b 3d a3 0d 27 f6  |d=.:text_ok=..'.|
00007160  33 c9 20 6b 65 79 25 3d  26 31 45 44 3a f2 69 6e  |3. key%=&1ED:.in|
00007170  73 65 72 74 5f 6c 69 6e  65 3a 64 61 74 61 5f 73  |sert_line:data_s|
00007180  61 76 65 64 3d a3 3a 74  65 78 74 5f 6f 6b 3d a3  |aved=.:text_ok=.|
00007190  0d 28 00 19 c9 20 6b 65  79 25 3d 26 31 41 43 3a  |.(... key%=&1AC:|
000071a0  f2 6c 65 66 74 5f 65 6e  64 0d 28 0a 1a c9 20 6b  |.left_end.(... k|
000071b0  65 79 25 3d 26 31 41 44  3a f2 72 69 67 68 74 5f  |ey%=&1AD:.right_|
000071c0  65 6e 64 0d 28 14 3a c9  20 6b 65 79 25 3d 26 31  |end.(.:. key%=&1|
000071d0  38 42 3a f2 72 69 67 68  74 3a f2 64 65 6c 65 74  |8B:.right:.delet|
000071e0  65 5f 63 68 61 72 3a 64  61 74 61 5f 73 61 76 65  |e_char:data_save|
000071f0  64 3d a3 3a 74 65 78 74  5f 6f 6b 3d a3 0d 28 1e  |d=.:text_ok=..(.|
00007200  25 c9 20 6b 65 79 25 3d  26 31 43 44 3a 6f 76 65  |%. key%=&1CD:ove|
00007210  72 77 72 69 74 65 3d ac  20 6f 76 65 72 77 72 69  |rwrite=. overwri|
00007220  74 65 0d 28 28 32 c9 20  6b 65 79 25 3d 31 32 37  |te.((2. key%=127|
00007230  3a f2 64 65 6c 65 74 65  5f 63 68 61 72 3a 64 61  |:.delete_char:da|
00007240  74 61 5f 73 61 76 65 64  3d a3 3a 74 65 78 74 5f  |ta_saved=.:text_|
00007250  6f 6b 3d a3 0d 28 32 1c  c9 20 28 6b 65 79 25 3e  |ok=..(2.. (key%>|
00007260  33 31 29 20 80 20 28 6b  65 79 25 3c 31 32 36 29  |31) . (key%<126)|
00007270  0d 28 3c 3c e7 20 6f 76  65 72 77 72 69 74 65 20  |.(<<. overwrite |
00007280  8c 20 f2 6f 76 65 72 77  72 69 74 65 5f 63 68 61  |. .overwrite_cha|
00007290  72 28 6b 65 79 25 29 20  8b 20 f2 69 6e 73 65 72  |r(key%) . .inser|
000072a0  74 5f 63 68 61 72 28 6b  65 79 25 29 0d 28 46 1a  |t_char(key%).(F.|
000072b0  64 61 74 61 5f 73 61 76  65 64 3d a3 3a 74 65 78  |data_saved=.:tex|
000072c0  74 5f 6f 6b 3d a3 0d 28  50 1f 7f 20 c8 99 20 22  |t_ok=..(P.. .. "|
000072d0  57 69 6d 70 5f 50 72 6f  63 65 73 73 4b 65 79 22  |Wimp_ProcessKey"|
000072e0  2c 6b 65 79 25 0d 28 5a  05 cb 0d 28 64 04 0d 28  |,key%.(Z...(d..(|
000072f0  6e 20 f2 63 75 72 73 6f  72 28 74 65 78 74 5f 63  |n .cursor(text_c|
00007300  6f 6c 25 2c 74 65 78 74  5f 72 6f 77 25 29 0d 28  |ol%,text_row%).(|
00007310  78 06 3d 30 0d 28 82 04  0d 28 8c 16 dd 20 f2 63  |x.=0.(...(... .c|
00007320  68 65 63 6b 5f 73 63 72  6f 6c 6c 5f 75 70 0d 28  |heck_scroll_up.(|
00007330  96 15 f2 67 65 74 77 28  74 65 78 74 68 61 6e 64  |...getw(texthand|
00007340  6c 65 29 0d 28 a0 1b 54  79 25 3d 20 28 74 65 78  |le).(..Ty%= (tex|
00007350  74 5f 72 6f 77 25 2b 31  29 2a 6c 73 59 25 0d 28  |t_row%+1)*lsY%.(|
00007360  aa 44 e7 20 28 79 31 25  2d 54 79 25 29 3c 28 79  |.D. (y1%-Ty%)<(y|
00007370  30 25 2b 73 63 79 25 29  20 8c 20 62 6c 6f 63 6b  |0%+scy%) . block|
00007380  21 32 34 20 3d 62 6c 6f  63 6b 21 32 34 2d 6c 73  |!24 =block!24-ls|
00007390  59 25 3a c8 99 20 4f 70  65 6e 57 2c 2c 62 6c 6f  |Y%:.. OpenW,,blo|
000073a0  63 6b 0d 28 b4 05 e1 0d  28 be 04 0d 28 c8 18 dd  |ck.(....(...(...|
000073b0  20 f2 63 68 65 63 6b 5f  73 63 72 6f 6c 6c 5f 64  | .check_scroll_d|
000073c0  6f 77 6e 0d 28 d2 15 f2  67 65 74 77 28 74 65 78  |own.(...getw(tex|
000073d0  74 68 61 6e 64 6c 65 29  0d 28 dc 14 54 72 25 3d  |thandle).(..Tr%=|
000073e0  2d 73 63 79 25 20 81 20  6c 73 59 25 0d 28 e6 3f  |-scy% . lsY%.(.?|
000073f0  e7 20 74 65 78 74 5f 72  6f 77 25 2d 31 3c 54 72  |. text_row%-1<Tr|
00007400  25 20 8c 20 62 6c 6f 63  6b 21 32 34 20 3d 62 6c  |% . block!24 =bl|
00007410  6f 63 6b 21 32 34 2b 6c  73 59 25 3a c8 99 20 4f  |ock!24+lsY%:.. O|
00007420  70 65 6e 57 2c 2c 62 6c  6f 63 6b 0d 28 f0 05 e1  |penW,,block.(...|
00007430  0d 28 fa 04 0d 29 04 18  dd 20 f2 63 68 65 63 6b  |.(...)... .check|
00007440  5f 73 63 72 6f 6c 6c 5f  6c 65 66 74 0d 29 0e 15  |_scroll_left.)..|
00007450  f2 67 65 74 77 28 74 65  78 74 68 61 6e 64 6c 65  |.getw(texthandle|
00007460  29 0d 29 18 1a 52 78 25  3d 28 74 65 78 74 5f 63  |).)..Rx%=(text_c|
00007470  6f 6c 25 2d 31 29 2a 63  68 58 25 0d 29 22 44 e7  |ol%-1)*chX%.)"D.|
00007480  20 28 78 31 25 2d 52 78  25 29 3c 28 78 30 25 2d  | (x1%-Rx%)<(x0%-|
00007490  73 63 78 25 29 20 8c 20  62 6c 6f 63 6b 21 32 30  |scx%) . block!20|
000074a0  20 3d 62 6c 6f 63 6b 21  32 30 2b 63 68 58 25 3a  | =block!20+chX%:|
000074b0  c8 99 20 4f 70 65 6e 57  2c 2c 62 6c 6f 63 6b 0d  |.. OpenW,,block.|
000074c0  29 2c 05 e1 0d 29 36 04  0d 29 40 19 dd 20 f2 63  |),...)6..)@.. .c|
000074d0  68 65 63 6b 5f 73 63 72  6f 6c 6c 5f 72 69 67 68  |heck_scroll_righ|
000074e0  74 0d 29 4a 15 f2 67 65  74 77 28 74 65 78 74 68  |t.)J..getw(texth|
000074f0  61 6e 64 6c 65 29 0d 29  54 13 4c 65 25 3d 73 63  |andle).)T.Le%=sc|
00007500  78 25 20 81 20 63 68 58  25 0d 29 5e 3f e7 20 74  |x% . chX%.)^?. t|
00007510  65 78 74 5f 63 6f 6c 25  2d 31 3c 4c 65 25 20 8c  |ext_col%-1<Le% .|
00007520  20 62 6c 6f 63 6b 21 32  30 20 3d 62 6c 6f 63 6b  | block!20 =block|
00007530  21 32 30 2d 63 68 58 25  3a c8 99 20 4f 70 65 6e  |!20-chX%:.. Open|
00007540  57 2c 2c 62 6c 6f 63 6b  0d 29 68 05 e1 0d 29 72  |W,,block.)h...)r|
00007550  04 0d 29 7c 16 dd 20 a4  6b 65 79 70 72 65 73 73  |..)|.. .keypress|
00007560  5f 73 61 76 65 61 73 0d  29 86 51 e7 20 6b 65 79  |_saveas.).Q. key|
00007570  25 3d 31 33 20 8c 20 f2  73 61 76 65 5f 61 6c 6c  |%=13 . .save_all|
00007580  28 a4 67 65 74 69 63 6f  6e 64 61 74 61 28 73 61  |(.geticondata(sa|
00007590  76 65 68 61 6e 64 6c 65  2c 32 29 29 20 8b 20 c8  |vehandle,2)) . .|
000075a0  99 20 22 57 69 6d 70 5f  50 72 6f 63 65 73 73 4b  |. "Wimp_ProcessK|
000075b0  65 79 22 2c 6b 65 79 25  0d 29 90 06 3d 30 0d 29  |ey",key%.)..=0.)|
000075c0  9a 04 0d 29 a4 18 dd 20  a4 6b 65 79 70 72 65 73  |...)... .keypres|
000075d0  73 5f 6f 62 6a 65 63 74  65 64 0d 29 ae 19 e7 20  |s_objected.)... |
000075e0  6b 65 79 25 3d 31 33 20  80 20 69 63 6f 6e 25 3d  |key%=13 . icon%=|
000075f0  37 20 8c 0d 29 b8 16 20  20 f2 73 74 6f 72 65 5f  |7 ..)..  .store_|
00007600  6f 62 6a 28 6f 70 74 72  29 0d 29 c2 2b 20 20 6f  |obj(optr).).+  o|
00007610  70 74 72 3d bb 28 a4 67  65 74 69 63 6f 6e 64 61  |ptr=.(.geticonda|
00007620  74 61 28 6f 62 6a 68 61  6e 64 6c 65 2c 69 63 6f  |ta(objhandle,ico|
00007630  6e 25 29 29 0d 29 cc 17  20 20 e7 20 6f 70 74 72  |n%)).)..  . optr|
00007640  3c 31 20 8c 20 6f 70 74  72 3d 31 0d 29 d6 21 20  |<1 . optr=1.).! |
00007650  20 e7 20 6f 70 74 72 3e  6d 61 78 6f 62 73 20 8c  | . optr>maxobs .|
00007660  20 6f 70 74 72 3d 6d 61  78 6f 62 73 0d 29 e0 18  | optr=maxobs.)..|
00007670  20 20 f2 72 65 73 74 6f  72 65 5f 6f 62 6a 28 6f  |  .restore_obj(o|
00007680  70 74 72 29 0d 29 ea 05  cd 0d 29 f4 04 0d 29 fe  |ptr).)....)...).|
00007690  0d c8 8e 20 6b 65 79 25  20 ca 0d 2a 08 24 c9 20  |... key% ..*.$. |
000076a0  31 33 2c 26 31 38 45 3a  f4 20 52 65 74 75 72 6e  |13,&18E:. Return|
000076b0  20 6f 72 20 64 6f 77 6e  20 61 72 72 6f 77 0d 2a  | or down arrow.*|
000076c0  12 10 e7 20 69 63 6f 6e  25 3c 31 35 20 8c 0d 2a  |... icon%<15 ..*|
000076d0  1c 0e 20 20 69 63 6f 6e  25 2b 3d 31 0d 2a 26 05  |..  icon%+=1.*&.|
000076e0  cc 0d 2a 30 0d 20 20 69  63 6f 6e 25 3d 37 0d 2a  |..*0.  icon%=7.*|
000076f0  3a 05 cd 0d 2a 44 15 c9  20 26 31 38 46 3a f4 20  |:...*D.. &18F:. |
00007700  55 70 20 61 72 72 6f 77  0d 2a 4e 0f e7 20 69 63  |Up arrow.*N.. ic|
00007710  6f 6e 25 3e 37 20 8c 0d  2a 58 0e 20 20 69 63 6f  |on%>7 ..*X.  ico|
00007720  6e 25 2d 3d 31 0d 2a 62  05 cc 0d 2a 6c 0e 20 20  |n%-=1.*b...*l.  |
00007730  69 63 6f 6e 25 3d 31 35  0d 2a 76 05 cd 0d 2a 80  |icon%=15.*v...*.|
00007740  1f 7f 20 c8 99 20 22 57  69 6d 70 5f 50 72 6f 63  |.. .. "Wimp_Proc|
00007750  65 73 73 4b 65 79 22 2c  6b 65 79 25 0d 2a 8a 05  |essKey",key%.*..|
00007760  cb 0d 2a 94 51 f2 73 79  73 5f 63 6c 61 69 6d 69  |..*.Q.sys_claimi|
00007770  6e 70 75 74 66 6f 63 75  73 28 6f 62 6a 68 61 6e  |nputfocus(objhan|
00007780  64 6c 65 2c 69 63 6f 6e  25 2c 30 2c 30 2c 2d 31  |dle,icon%,0,0,-1|
00007790  2c a9 28 a4 67 65 74 69  63 6f 6e 64 61 74 61 28  |,.(.geticondata(|
000077a0  6f 62 6a 68 61 6e 64 6c  65 2c 69 63 6f 6e 25 29  |objhandle,icon%)|
000077b0  29 29 0d 2a 9e 06 3d 30  0d 2a a8 04 0d 2a b2 18  |)).*..=0.*...*..|
000077c0  dd 20 a4 6b 65 79 70 72  65 73 73 5f 72 6f 6f 6d  |. .keypress_room|
000077d0  65 64 69 74 0d 2a bc 0d  c8 8e 20 6b 65 79 25 20  |edit.*.... key% |
000077e0  ca 0d 2a c6 12 c9 20 31  33 2c 26 31 38 45 2c 26  |..*... 13,&18E,&|
000077f0  31 38 46 0d 2a d0 04 0d  2a da 1a e7 20 6b 65 79  |18F.*...*... key|
00007800  25 3d 31 33 20 80 20 69  63 6f 6e 25 3d 33 33 20  |%=13 . icon%=33 |
00007810  8c 0d 2a e4 17 20 20 f2  73 74 6f 72 65 5f 72 6f  |..*..  .store_ro|
00007820  6f 6d 28 72 70 74 72 29  0d 2a ee 2c 20 20 72 70  |om(rptr).*.,  rp|
00007830  74 72 3d bb 28 a4 67 65  74 69 63 6f 6e 64 61 74  |tr=.(.geticondat|
00007840  61 28 72 6f 6f 6d 68 61  6e 64 6c 65 2c 69 63 6f  |a(roomhandle,ico|
00007850  6e 25 29 29 0d 2a f8 17  20 20 e7 20 72 70 74 72  |n%)).*..  . rptr|
00007860  3c 31 20 8c 20 72 70 74  72 3d 31 0d 2b 02 21 20  |<1 . rptr=1.+.! |
00007870  20 e7 20 72 70 74 72 3e  6d 61 78 72 6d 73 20 8c  | . rptr>maxrms .|
00007880  20 72 70 74 72 3d 6d 61  78 72 6d 73 0d 2b 0c 19  | rptr=maxrms.+..|
00007890  20 20 f2 72 65 73 74 6f  72 65 5f 72 6f 6f 6d 28  |  .restore_room(|
000078a0  72 70 74 72 29 0d 2b 16  05 cd 0d 2b 20 04 0d 2b  |rptr).+....+ ..+|
000078b0  2a 1b e7 20 6b 65 79 25  3d 31 33 20 84 20 6b 65  |*.. key%=13 . ke|
000078c0  79 25 3d 26 31 38 45 20  8c 0d 2b 34 0a c8 8e 20  |y%=&18E ..+4... |
000078d0  b9 20 ca 0d 2b 3e 1a c9  20 69 63 6f 6e 25 3d 33  |. ..+>.. icon%=3|
000078e0  37 3a 6e 65 77 69 63 6f  6e 25 3d 37 31 0d 2b 48  |7:newicon%=71.+H|
000078f0  1a c9 20 69 63 6f 6e 25  3d 37 31 3a 6e 65 77 69  |.. icon%=71:newi|
00007900  63 6f 6e 25 3d 33 38 0d  2b 52 1a c9 20 69 63 6f  |con%=38.+R.. ico|
00007910  6e 25 3d 36 39 3a 6e 65  77 69 63 6f 6e 25 3d 33  |n%=69:newicon%=3|
00007920  33 0d 2b 5c 1f c9 20 69  63 6f 6e 25 3c 33 37 3a  |3.+\.. icon%<37:|
00007930  6e 65 77 69 63 6f 6e 25  3d 69 63 6f 6e 25 2b 31  |newicon%=icon%+1|
00007940  0d 2b 66 2d c9 20 28 69  63 6f 6e 25 3e 33 37 20  |.+f-. (icon%>37 |
00007950  80 20 69 63 6f 6e 25 3c  35 34 29 3a 6e 65 77 69  |. icon%<54):newi|
00007960  63 6f 6e 25 3d 69 63 6f  6e 25 2b 31 36 0d 2b 70  |con%=icon%+16.+p|
00007970  2d c9 20 28 69 63 6f 6e  25 3e 35 33 20 80 20 69  |-. (icon%>53 . i|
00007980  63 6f 6e 25 3c 36 39 29  3a 6e 65 77 69 63 6f 6e  |con%<69):newicon|
00007990  25 3d 69 63 6f 6e 25 2d  31 35 0d 2b 7a 05 cb 0d  |%=icon%-15.+z...|
000079a0  2b 84 05 cd 0d 2b 8e 04  0d 2b 98 11 e7 20 6b 65  |+....+...+... ke|
000079b0  79 25 3d 26 31 38 46 20  8c 0d 2b a2 0a c8 8e 20  |y%=&18F ..+.... |
000079c0  b9 20 ca 0d 2b ac 1a c9  20 69 63 6f 6e 25 3d 37  |. ..+... icon%=7|
000079d0  31 3a 6e 65 77 69 63 6f  6e 25 3d 33 37 0d 2b b6  |1:newicon%=37.+.|
000079e0  1a c9 20 69 63 6f 6e 25  3d 33 38 3a 6e 65 77 69  |.. icon%=38:newi|
000079f0  63 6f 6e 25 3d 37 31 0d  2b c0 1a c9 20 69 63 6f  |con%=71.+... ico|
00007a00  6e 25 3d 33 33 3a 6e 65  77 69 63 6f 6e 25 3d 36  |n%=33:newicon%=6|
00007a10  39 0d 2b ca 1f c9 20 69  63 6f 6e 25 3e 33 33 3a  |9.+... icon%>33:|
00007a20  6e 65 77 69 63 6f 6e 25  3d 69 63 6f 6e 25 2d 31  |newicon%=icon%-1|
00007a30  0d 2b d4 2d c9 20 28 69  63 6f 6e 25 3e 33 37 20  |.+.-. (icon%>37 |
00007a40  80 20 69 63 6f 6e 25 3c  35 34 29 3a 6e 65 77 69  |. icon%<54):newi|
00007a50  63 6f 6e 25 3d 69 63 6f  6e 25 2d 31 36 0d 2b de  |con%=icon%-16.+.|
00007a60  2d c9 20 28 69 63 6f 6e  25 3e 35 33 20 80 20 69  |-. (icon%>53 . i|
00007a70  63 6f 6e 25 3c 36 39 29  3a 6e 65 77 69 63 6f 6e  |con%<69):newicon|
00007a80  25 3d 69 63 6f 6e 25 2b  31 35 0d 2b e8 05 cb 0d  |%=icon%+15.+....|
00007a90  2b f2 05 cd 0d 2b fc 04  0d 2c 06 1f 7f 20 c8 99  |+....+...,... ..|
00007aa0  20 22 57 69 6d 70 5f 50  72 6f 63 65 73 73 4b 65  | "Wimp_ProcessKe|
00007ab0  79 22 2c 6b 65 79 25 0d  2c 10 05 cb 0d 2c 1a 59  |y",key%.,....,.Y|
00007ac0  f2 73 79 73 5f 63 6c 61  69 6d 69 6e 70 75 74 66  |.sys_claiminputf|
00007ad0  6f 63 75 73 28 72 6f 6f  6d 68 61 6e 64 6c 65 2c  |ocus(roomhandle,|
00007ae0  6e 65 77 69 63 6f 6e 25  2c 30 2c 30 2c 2d 31 2c  |newicon%,0,0,-1,|
00007af0  a9 28 a4 67 65 74 69 63  6f 6e 64 61 74 61 28 72  |.(.geticondata(r|
00007b00  6f 6f 6d 68 61 6e 64 6c  65 2c 6e 65 77 69 63 6f  |oomhandle,newico|
00007b10  6e 25 29 29 29 0d 2c 24  06 3d 30 0d 2c 2e 04 0d  |n%))).,$.=0.,...|
00007b20  2c 38 16 dd 20 a4 6b 65  79 70 72 65 73 73 5f 73  |,8.. .keypress_s|
00007b30  74 61 74 75 73 0d 2c 42  0f f2 63 6f 6c 28 31 32  |tatus.,B..col(12|
00007b40  38 2b 32 29 0d 2c 4c 0d  ef 20 32 36 2c 34 2c 31  |8+2).,L.. 26,4,1|
00007b50  32 0d 2c 56 17 f2 63 6f  6c 28 39 29 3a f2 63 6f  |2.,V..col(9):.co|
00007b60  6c 28 31 32 38 2b 37 29  0d 2c 60 3c f2 63 65 6e  |l(128+7).,`<.cen|
00007b70  74 72 65 28 c4 32 37 2c  22 20 22 29 2b 22 53 79  |tre(.27," ")+"Sy|
00007b80  73 74 65 6d 20 53 74 61  74 75 73 20 49 6e 66 6f  |stem Status Info|
00007b90  72 6d 61 74 69 6f 6e 22  2b c4 32 38 2c 22 20 22  |rmation"+.28," "|
00007ba0  29 2c 30 29 0d 2c 6a 17  f2 63 6f 6c 28 31 32 38  |),0).,j..col(128|
00007bb0  2b 32 29 3a f2 63 6f 6c  28 37 29 0d 2c 74 0b f2  |+2):.col(7).,t..|
00007bc0  73 74 61 74 75 73 0d 2c  7e 17 f2 63 6f 6c 28 31  |status.,~..col(1|
00007bd0  32 38 2b 37 29 3a f2 63  6f 6c 28 39 29 0d 2c 88  |28+7):.col(9).,.|
00007be0  35 f2 63 65 6e 74 72 65  28 c4 33 31 2c 22 20 22  |5.centre(.31," "|
00007bf0  29 2b 22 49 6e 74 65 67  65 72 20 56 61 72 69 61  |)+"Integer Varia|
00007c00  62 6c 65 73 22 2b c4 33  32 2c 22 20 22 29 2c 31  |bles"+.32," "),1|
00007c10  30 29 0d 2c 92 17 f2 63  6f 6c 28 31 32 38 2b 32  |0).,...col(128+2|
00007c20  29 3a f2 63 6f 6c 28 37  29 0d 2c 9c 09 f2 6c 76  |):.col(7).,...lv|
00007c30  61 72 0d 2c a6 16 87 3a  f2 72 65 74 75 72 6e 28  |ar.,...:.return(|
00007c40  31 38 2c 33 31 29 3a ee  0d 2c b0 0a ef 20 32 36  |18,31):..,... 26|
00007c50  2c 35 0d 2c ba 22 c8 99  20 46 6f 72 63 65 52 2c  |,5.,.".. ForceR,|
00007c60  2d 31 2c 30 2c 30 2c 73  63 72 77 2b 31 2c 73 63  |-1,0,0,scrw+1,sc|
00007c70  72 68 2b 31 0d 2c c4 06  3d 30 0d 2c ce 04 0d 2c  |rh+1.,..=0.,...,|
00007c80  d8 16 dd 20 a4 6b 65 79  70 72 65 73 73 5f 63 68  |... .keypress_ch|
00007c90  72 64 65 66 0d 2c e2 1a  e7 20 6b 65 79 25 3d 31  |rdef.,... key%=1|
00007ca0  33 20 80 20 69 63 6f 6e  25 3d 36 34 20 8c 0d 2c  |3 . icon%=64 ..,|
00007cb0  ec 2a 63 75 72 5f 63 68  72 25 3d 97 28 a4 67 65  |.*cur_chr%=.(.ge|
00007cc0  74 69 63 6f 6e 64 61 74  61 28 64 65 73 69 67 6e  |ticondata(design|
00007cd0  2c 69 63 6f 6e 25 29 29  0d 2c f6 1a f2 64 69 73  |,icon%)).,...dis|
00007ce0  70 6c 61 79 5f 63 68 72  28 63 75 72 5f 63 68 72  |play_chr(cur_chr|
00007cf0  25 29 0d 2d 00 2c f2 63  68 61 6e 67 65 69 63 6f  |%).-.,.changeico|
00007d00  6e 28 64 65 73 69 67 6e  2c 36 34 2c bd 28 63 75  |n(design,64,.(cu|
00007d10  72 5f 63 68 72 25 29 2c  69 63 6f 6e 25 29 0d 2d  |r_chr%),icon%).-|
00007d20  0a 05 cc 0d 2d 14 2a e7  20 6b 65 79 25 3c 3e 31  |....-.*. key%<>1|
00007d30  33 20 8c 20 c8 99 20 22  57 69 6d 70 5f 50 72 6f  |3 . .. "Wimp_Pro|
00007d40  63 65 73 73 4b 65 79 22  2c 6b 65 79 25 0d 2d 1e  |cessKey",key%.-.|
00007d50  05 cd 0d 2d 28 06 3d 30  0d 2d 32 04 0d 2d 3c 15  |...-(.=0.-2..-<.|
00007d60  dd 20 a4 6b 65 79 70 72  65 73 73 5f 53 65 74 75  |. .keypress_Setu|
00007d70  70 0d 2d 46 30 e7 20 6b  65 79 25 3d 26 31 38 45  |p.-F0. key%=&18E|
00007d80  20 84 20 6b 65 79 25 3d  31 33 20 80 20 69 63 6f  | . key%=13 . ico|
00007d90  6e 25 3d 32 20 8c 20 6e  65 77 69 63 6f 6e 25 3d  |n%=2 . newicon%=|
00007da0  35 0d 2d 50 37 e7 20 6b  65 79 25 3d 31 33 20 80  |5.-P7. key%=13 .|
00007db0  20 69 63 6f 6e 25 3d 35  20 8c 20 69 63 6f 6e 25  | icon%=5 . icon%|
00007dc0  3d 31 3a 76 6f 69 64 3d  a4 62 75 74 74 6f 6e 5f  |=1:void=.button_|
00007dd0  53 65 74 75 70 3a 3d 30  0d 2d 5a 26 e7 20 6b 65  |Setup:=0.-Z&. ke|
00007de0  79 25 3d 26 31 38 45 20  80 20 69 63 6f 6e 25 3d  |y%=&18E . icon%=|
00007df0  35 20 8c 20 6e 65 77 69  63 6f 6e 25 3d 32 0d 2d  |5 . newicon%=2.-|
00007e00  64 26 e7 20 6b 65 79 25  3d 26 31 38 46 20 80 20  |d&. key%=&18F . |
00007e10  69 63 6f 6e 25 3d 35 20  8c 20 6e 65 77 69 63 6f  |icon%=5 . newico|
00007e20  6e 25 3d 32 0d 2d 6e 26  e7 20 6b 65 79 25 3d 26  |n%=2.-n&. key%=&|
00007e30  31 38 46 20 80 20 69 63  6f 6e 25 3d 32 20 8c 20  |18F . icon%=2 . |
00007e40  6e 65 77 69 63 6f 6e 25  3d 35 0d 2d 78 44 e7 20  |newicon%=5.-xD. |
00007e50  6b 65 79 25 3c 3e 31 33  20 80 20 6b 65 79 25 3c  |key%<>13 . key%<|
00007e60  3e 26 31 38 45 20 80 20  6b 65 79 25 3c 3e 26 31  |>&18E . key%<>&1|
00007e70  38 46 20 8c 20 c8 99 20  22 57 69 6d 70 5f 50 72  |8F . .. "Wimp_Pr|
00007e80  6f 63 65 73 73 4b 65 79  22 2c 6b 65 79 25 0d 2d  |ocessKey",key%.-|
00007e90  82 51 f2 73 79 73 5f 63  6c 61 69 6d 69 6e 70 75  |.Q.sys_claiminpu|
00007ea0  74 66 6f 63 75 73 28 73  65 74 75 70 68 2c 6e 65  |tfocus(setuph,ne|
00007eb0  77 69 63 6f 6e 25 2c 30  2c 30 2c 2d 31 2c a9 28  |wicon%,0,0,-1,.(|
00007ec0  a4 67 65 74 69 63 6f 6e  64 61 74 61 28 73 65 74  |.geticondata(set|
00007ed0  75 70 68 2c 6e 65 77 69  63 6f 6e 25 29 29 29 0d  |uph,newicon%))).|
00007ee0  2d 8c 06 3d 30 0d 2d 96  04 0d 2d a0 41 f4 20 2d  |-..=0.-...-.A. -|
00007ef0  2d 2d 2d 2d 2d 20 54 68  65 20 60 6d 65 6e 75 60  |----- The `menu`|
00007f00  20 72 6f 75 74 69 6e 65  73 20 74 6f 20 6f 70 65  | routines to ope|
00007f10  6e 20 74 68 65 20 73 65  6c 65 63 74 65 64 20 6d  |n the selected m|
00007f20  65 6e 75 20 2d 2d 2d 2d  2d 2d 0d 2d aa 04 0d 2d  |enu ------.-...-|
00007f30  b4 0c dd 20 a4 6d 65 6e  75 5f 0d 2d be 06 3d 30  |... .menu_.-..=0|
00007f40  0d 2d c8 04 0d 2d d2 10  dd 20 a4 6d 65 6e 75 5f  |.-...-... .menu_|
00007f50  73 77 61 70 0d 2d dc 06  3d 30 0d 2d e6 04 0d 2d  |swap.-..=0.-...-|
00007f60  f0 13 dd 20 a4 6d 65 6e  75 5f 61 72 63 6c 6f 67  |... .menu_arclog|
00007f70  6f 0d 2d fa 06 3d 30 0d  2e 04 04 0d 2e 0e 10 dd  |o.-..=0.........|
00007f80  20 a4 6d 65 6e 75 5f 69  6e 66 6f 0d 2e 18 06 3d  | .menu_info....=|
00007f90  30 0d 2e 22 04 0d 2e 2c  04 0d 2e 36 12 dd 20 a4  |0.."...,...6.. .|
00007fa0  6d 65 6e 75 5f 64 69 73  6b 33 35 0d 2e 40 2c c8  |menu_disk35..@,.|
00007fb0  99 20 43 72 65 61 74 65  4d 2c 30 2c 64 69 73 6b  |. CreateM,0,disk|
00007fc0  6d 65 6e 75 2c 6d 6f 75  73 65 78 25 2d 36 34 2c  |menu,mousex%-64,|
00007fd0  6d 6f 75 73 65 79 25 0d  2e 4a 2c e7 20 6c 6f 61  |mousey%..J,. loa|
00007fe0  64 65 64 24 3c 3e 22 22  20 8c 20 66 24 3d 70 61  |ded$<>"" . f$=pa|
00007ff0  74 68 24 20 8b 20 66 24  3d 22 41 6c 70 73 46 69  |th$ . f$="AlpsFi|
00008000  6c 65 22 0d 2e 54 25 f2  63 68 61 6e 67 65 69 63  |le"..T%.changeic|
00008010  6f 6e 28 73 61 76 65 68  61 6e 64 6c 65 2c 32 2c  |on(savehandle,2,|
00008020  66 24 2c 76 6f 69 64 29  0d 2e 5e 19 74 68 65 4c  |f$,void)..^.theL|
00008030  61 73 74 4d 65 6e 75 3d  20 64 69 73 6b 6d 65 6e  |astMenu= diskmen|
00008040  75 0d 2e 68 20 63 6c 61  69 6d 6d 65 6e 75 24 3d  |u..h claimmenu$=|
00008050  22 64 69 73 6b 33 35 22  3a 74 69 63 6b 24 3d 22  |"disk35":tick$="|
00008060  22 0d 2e 72 06 3d 30 0d  2e 7c 04 0d 2e 86 04 0d  |"..r.=0..|......|
00008070  2e 90 0f dd 20 a4 6d 65  6e 75 5f 6b 65 79 0d 2e  |.... .menu_key..|
00008080  9a 2b c8 99 20 43 72 65  61 74 65 4d 2c 30 2c 6f  |.+.. CreateM,0,o|
00008090  62 6a 6d 65 6e 75 2c 6d  6f 75 73 65 78 25 2d 36  |bjmenu,mousex%-6|
000080a0  34 2c 6d 6f 75 73 65 79  25 0d 2e a4 19 74 68 65  |4,mousey%....the|
000080b0  4c 61 73 74 4d 65 6e 75  20 3d 20 6f 62 6a 6d 65  |LastMenu = objme|
000080c0  6e 75 0d 2e ae 1d 63 6c  61 69 6d 6d 65 6e 75 24  |nu....claimmenu$|
000080d0  3d 22 6b 65 79 22 3a 74  69 63 6b 24 3d 22 22 0d  |="key":tick$="".|
000080e0  2e b8 06 3d 30 0d 2e c2  04 0d 2e cc 10 dd 20 a4  |...=0......... .|
000080f0  6d 65 6e 75 5f 64 6f 6f  72 0d 2e d6 2c c8 99 20  |menu_door...,.. |
00008100  43 72 65 61 74 65 4d 2c  30 2c 72 6f 6f 6d 6d 65  |CreateM,0,roomme|
00008110  6e 75 2c 6d 6f 75 73 65  78 25 2d 36 34 2c 6d 6f  |nu,mousex%-64,mo|
00008120  75 73 65 79 25 0d 2e e0  1a 74 68 65 4c 61 73 74  |usey%....theLast|
00008130  4d 65 6e 75 20 3d 20 72  6f 6f 6d 6d 65 6e 75 0d  |Menu = roommenu.|
00008140  2e ea 1e 63 6c 61 69 6d  6d 65 6e 75 24 3d 22 64  |...claimmenu$="d|
00008150  6f 6f 72 22 3a 74 69 63  6b 24 3d 22 22 0d 2e f4  |oor":tick$=""...|
00008160  06 3d 30 0d 2e fe 04 0d  2f 08 11 dd 20 a4 6d 65  |.=0...../... .me|
00008170  6e 75 5f 71 75 69 6c 6c  0d 2f 12 18 24 65 6e 64  |nu_quill./..$end|
00008180  5f 6d 73 67 25 3d c3 28  a4 6d 61 78 6d 73 67 29  |_msg%=.(.maxmsg)|
00008190  0d 2f 1c 2c c8 99 20 43  72 65 61 74 65 4d 2c 30  |./.,.. CreateM,0|
000081a0  2c 74 65 78 74 6d 65 6e  75 2c 6d 6f 75 73 65 78  |,textmenu,mousex|
000081b0  25 2d 36 34 2c 6d 6f 75  73 65 79 25 0d 2f 26 1a  |%-64,mousey%./&.|
000081c0  74 68 65 4c 61 73 74 4d  65 6e 75 20 3d 20 74 65  |theLastMenu = te|
000081d0  78 74 6d 65 6e 75 0d 2f  30 1f 63 6c 61 69 6d 6d  |xtmenu./0.claimm|
000081e0  65 6e 75 24 3d 22 71 75  69 6c 6c 22 3a 74 69 63  |enu$="quill":tic|
000081f0  6b 24 3d 22 22 0d 2f 3a  06 3d 30 0d 2f 44 04 0d  |k$=""./:.=0./D..|
00008200  2f 4e 04 0d 2f 58 13 dd  20 a4 6d 65 6e 75 5f 6c  |/N../X.. .menu_l|
00008210  69 73 74 69 6e 67 0d 2f  62 2c c8 99 20 43 72 65  |isting./b,.. Cre|
00008220  61 74 65 4d 2c 30 2c 70  72 6f 67 6d 65 6e 75 2c  |ateM,0,progmenu,|
00008230  6d 6f 75 73 65 78 25 2d  36 34 2c 6d 6f 75 73 65  |mousex%-64,mouse|
00008240  79 25 0d 2f 6c 1a 74 68  65 4c 61 73 74 4d 65 6e  |y%./l.theLastMen|
00008250  75 20 3d 20 70 72 6f 67  6d 65 6e 75 0d 2f 76 21  |u = progmenu./v!|
00008260  63 6c 61 69 6d 6d 65 6e  75 24 3d 22 6c 69 73 74  |claimmenu$="list|
00008270  69 6e 67 22 3a 74 69 63  6b 24 3d 22 22 0d 2f 80  |ing":tick$=""./.|
00008280  06 3d 30 0d 2f 8a 04 0d  2f 94 04 0d 2f 9e 13 dd  |.=0./.../.../...|
00008290  20 a4 6d 65 6e 75 5f 63  68 61 72 64 65 73 0d 2f  | .menu_chardes./|
000082a0  a8 06 3d 30 0d 2f b2 2c  c8 99 20 43 72 65 61 74  |..=0./.,.. Creat|
000082b0  65 4d 2c 30 2c 63 68 61  72 6d 65 6e 75 2c 6d 6f  |eM,0,charmenu,mo|
000082c0  75 73 65 78 25 2d 36 34  2c 6d 6f 75 73 65 79 25  |usex%-64,mousey%|
000082d0  0d 2f bc 1a 74 68 65 4c  61 73 74 4d 65 6e 75 20  |./..theLastMenu |
000082e0  3d 20 63 68 61 72 6d 65  6e 75 0d 2f c6 21 63 6c  |= charmenu./.!cl|
000082f0  61 69 6d 6d 65 6e 75 24  3d 22 63 68 61 72 64 65  |aimmenu$="charde|
00008300  73 22 3a 74 69 63 6b 24  3d 22 22 0d 2f d0 06 3d  |s":tick$=""./..=|
00008310  30 0d 2f da 04 0d 2f e4  11 dd 20 a4 6d 65 6e 75  |0./.../... .menu|
00008320  5f 76 6f 63 61 62 0d 2f  ee 2d c8 99 20 43 72 65  |_vocab./.-.. Cre|
00008330  61 74 65 4d 2c 30 2c 76  6f 63 61 62 6d 65 6e 75  |ateM,0,vocabmenu|
00008340  2c 6d 6f 75 73 65 78 25  2d 36 34 2c 6d 6f 75 73  |,mousex%-64,mous|
00008350  65 79 25 0d 2f f8 1b 74  68 65 4c 61 73 74 4d 65  |ey%./..theLastMe|
00008360  6e 75 20 3d 20 76 6f 63  61 62 6d 65 6e 75 0d 30  |nu = vocabmenu.0|
00008370  02 24 63 6c 61 69 6d 6d  65 6e 75 24 3d 22 76 6f  |.$claimmenu$="vo|
00008380  63 61 62 75 6c 61 72 79  22 3a 74 69 63 6b 24 3d  |cabulary":tick$=|
00008390  22 22 0d 30 0c 06 3d 30  0d 30 16 04 0d 30 20 10  |"".0..=0.0...0 .|
000083a0  dd 20 a4 6d 65 6e 75 5f  66 61 63 65 0d 30 2a 2c  |. .menu_face.0*,|
000083b0  c8 99 20 43 72 65 61 74  65 4d 2c 30 2c 66 61 63  |.. CreateM,0,fac|
000083c0  65 6d 65 6e 75 2c 6d 6f  75 73 65 78 25 2d 36 34  |emenu,mousex%-64|
000083d0  2c 6d 6f 75 73 65 79 25  0d 30 34 1a 74 68 65 4c  |,mousey%.04.theL|
000083e0  61 73 74 4d 65 6e 75 20  3d 20 66 61 63 65 6d 65  |astMenu = faceme|
000083f0  6e 75 0d 30 3e 20 63 6c  61 69 6d 6d 65 6e 75 24  |nu.0> claimmenu$|
00008400  3d 22 61 63 74 6f 72 73  22 3a 74 69 63 6b 24 3d  |="actors":tick$=|
00008410  22 22 0d 30 48 06 3d 30  0d 30 52 04 0d 30 5c 10  |"".0H.=0.0R..0\.|
00008420  dd 20 a4 6d 65 6e 75 5f  6d 69 73 63 0d 30 66 15  |. .menu_misc.0f.|
00008430  6e 75 6c 6c 20 3d 20 a4  74 69 63 6b 5f 6d 69 73  |null = .tick_mis|
00008440  63 0d 30 70 3c c8 99 20  43 72 65 61 74 65 4d 2c  |c.0p<.. CreateM,|
00008450  30 2c 6d 69 73 63 6d 65  6e 75 2c 6d 6f 75 73 65  |0,miscmenu,mouse|
00008460  78 25 2d 36 34 2c a4 6d  65 6e 75 48 65 69 67 68  |x%-64,.menuHeigh|
00008470  74 28 6d 69 73 63 6d 65  6e 75 2c 31 29 0d 30 7a  |t(miscmenu,1).0z|
00008480  1a 74 68 65 4c 61 73 74  4d 65 6e 75 20 3d 20 6d  |.theLastMenu = m|
00008490  69 73 63 6d 65 6e 75 0d  30 84 22 63 6c 61 69 6d  |iscmenu.0."claim|
000084a0  6d 65 6e 75 24 3d 22 6d  69 73 63 22 3a 74 69 63  |menu$="misc":tic|
000084b0  6b 24 3d 22 6d 69 73 63  22 0d 30 8e 06 3d 30 0d  |k$="misc".0..=0.|
000084c0  30 98 04 0d 30 a2 10 dd  20 a4 6d 65 6e 75 5f 68  |0...0... .menu_h|
000084d0  65 6c 70 0d 30 ac 06 3d  30 0d 30 b6 04 0d 30 c0  |elp.0..=0.0...0.|
000084e0  04 0d 30 ca 0f dd 20 a4  6d 65 6e 75 5f 65 79 65  |..0... .menu_eye|
000084f0  0d 30 d4 2b c8 99 20 43  72 65 61 74 65 4d 2c 30  |.0.+.. CreateM,0|
00008500  2c 70 69 78 6d 65 6e 75  2c 6d 6f 75 73 65 78 25  |,pixmenu,mousex%|
00008510  2d 36 34 2c 6d 6f 75 73  65 79 25 0d 30 de 19 74  |-64,mousey%.0..t|
00008520  68 65 4c 61 73 74 4d 65  6e 75 20 3d 20 70 69 78  |heLastMenu = pix|
00008530  6d 65 6e 75 0d 30 e8 1d  63 6c 61 69 6d 6d 65 6e  |menu.0..claimmen|
00008540  75 24 3d 22 65 79 65 22  3a 74 69 63 6b 24 3d 22  |u$="eye":tick$="|
00008550  22 0d 30 f2 06 3d 30 0d  30 fc 04 0d 31 06 04 0d  |".0..=0.0...1...|
00008560  31 10 4a f4 20 60 6d 65  6e 75 73 65 6c 65 63 74  |1.J. `menuselect|
00008570  60 20 66 75 6e 63 74 69  6f 6e 73 20 2d 20 63 61  |` functions - ca|
00008580  6c 6c 65 64 20 77 68 65  6e 20 61 20 73 65 6c 65  |lled when a sele|
00008590  63 74 69 6f 6e 20 69 73  20 6d 61 64 65 20 66 72  |ction is made fr|
000085a0  6f 6d 20 61 20 6d 65 6e  75 0d 31 1a 44 f4 20 60  |om a menu.1.D. `|
000085b0  69 74 65 6d 30 25 60 20  69 73 20 74 68 65 20 6e  |item0%` is the n|
000085c0  75 6d 62 65 72 20 6f 66  20 73 65 6c 65 63 74 69  |umber of selecti|
000085d0  6f 6e 20 66 72 6f 6d 20  66 69 72 73 74 20 6d 65  |on from first me|
000085e0  6e 75 20 28 30 2c 31 2c  32 2e 2e 2e 29 0d 31 24  |nu (0,1,2...).1$|
000085f0  45 f4 20 60 69 74 65 6d  31 25 60 20 69 73 20 74  |E. `item1%` is t|
00008600  68 65 20 6e 75 6d 62 65  72 20 6f 66 20 73 65 6c  |he number of sel|
00008610  65 63 74 69 6f 6e 20 66  72 6f 6d 20 73 65 63 6f  |ection from seco|
00008620  6e 64 20 6d 65 6e 75 20  28 30 2c 31 2c 32 2e 2e  |nd menu (0,1,2..|
00008630  2e 29 0d 31 2e 04 0d 31  38 12 dd 20 a4 6d 65 6e  |.).1...18.. .men|
00008640  75 73 65 6c 65 63 74 5f  0d 31 42 06 3d 30 0d 31  |uselect_.1B.=0.1|
00008650  4c 04 0d 31 56 04 0d 31  60 19 dd 20 a4 6d 65 6e  |L..1V..1`.. .men|
00008660  75 73 65 6c 65 63 74 5f  6d 65 73 73 61 67 65 0d  |uselect_message.|
00008670  31 6a 11 ea 20 63 68 61  6e 67 65 64 5f 6d 73 67  |1j.. changed_msg|
00008680  0d 31 74 04 0d 31 7e 0f  c8 8e 20 69 74 65 6d 30  |.1t..1~... item0|
00008690  25 20 ca 0d 31 88 0a 20  20 c9 20 2d 31 0d 31 92  |% ..1..  . -1.1.|
000086a0  21 20 20 c9 20 30 2c 31  3a 6f 76 65 72 77 72 69  |!  . 0,1:overwri|
000086b0  74 65 3d ac 20 6f 76 65  72 77 72 69 74 65 0d 31  |te=. overwrite.1|
000086c0  9c 26 20 20 c9 20 32 3a  f2 63 75 74 28 6d 61 72  |.&  . 2:.cut(mar|
000086d0  6b 28 30 29 2c 6d 61 72  6b 28 31 29 2c 70 69 63  |k(0),mark(1),pic|
000086e0  62 75 66 29 0d 31 a6 27  20 20 c9 20 33 3a f2 63  |buf).1.'  . 3:.c|
000086f0  6f 70 79 28 6d 61 72 6b  28 30 29 2c 6d 61 72 6b  |opy(mark(0),mark|
00008700  28 31 29 2c 70 69 63 62  75 66 29 0d 31 b0 22 20  |(1),picbuf).1." |
00008710  20 c9 20 34 3a f2 70 61  73 74 65 28 74 65 78 74  | . 4:.paste(text|
00008720  5f 70 74 72 25 2c 70 69  63 62 75 66 29 0d 31 ba  |_ptr%,picbuf).1.|
00008730  13 20 20 c9 20 35 3a f2  70 72 65 76 5f 6d 73 67  |.  . 5:.prev_msg|
00008740  0d 31 c4 13 20 20 c9 20  36 3a f2 6e 65 78 74 5f  |.1..  . 6:.next_|
00008750  6d 73 67 0d 31 ce 14 20  20 c9 20 37 3a f2 66 69  |msg.1..  . 7:.fi|
00008760  72 73 74 5f 6d 73 67 0d  31 d8 13 20 20 c9 20 38  |rst_msg.1..  . 8|
00008770  3a f2 6c 61 73 74 5f 6d  73 67 0d 31 e2 1f 20 20  |:.last_msg.1..  |
00008780  c9 20 39 3a f2 67 6f 74  6f 5f 6d 73 67 28 bb 28  |. 9:.goto_msg(.(|
00008790  24 6d 5f 6d 73 67 25 29  29 0d 31 ec 0a 20 20 c9  |$m_msg%)).1..  .|
000087a0  20 31 30 0d 31 f6 13 20  20 e7 20 69 74 65 6d 31  | 10.1..  . item1|
000087b0  25 3e 2d 31 20 8c 0d 32  00 14 20 20 20 20 e7 20  |%>-1 ..2..    . |
000087c0  69 74 65 6d 31 25 3d 30  20 8c 0d 32 0a 19 20 20  |item1%=0 ..2..  |
000087d0  20 20 20 20 e3 20 49 25  3d 30 20 b8 20 6d 61 78  |    . I%=0 . max|
000087e0  73 77 25 0d 32 14 1d 20  20 20 20 20 20 20 20 73  |sw%.2..        s|
000087f0  77 69 74 63 68 5f 76 61  6c 73 28 49 25 29 3d 30  |witch_vals(I%)=0|
00008800  0d 32 1e 0e 20 20 20 20  20 20 ed 20 49 25 0d 32  |.2..      . I%.2|
00008810  28 09 20 20 20 20 cd 0d  32 32 37 20 20 20 20 73  |(.    ..227    s|
00008820  77 69 74 63 68 5f 76 61  6c 73 28 69 74 65 6d 31  |witch_vals(item1|
00008830  25 29 3d bb 28 24 28 73  77 64 61 74 61 25 2b 31  |%)=.($(swdata%+1|
00008840  32 2a 28 69 74 65 6d 31  25 2d 31 29 29 29 0d 32  |2*(item1%-1))).2|
00008850  3c 37 20 20 20 20 e7 20  69 74 65 6d 31 25 3e 73  |<7    . item1%>s|
00008860  77 69 74 63 68 5f 76 61  6c 73 28 30 29 20 8c 20  |witch_vals(0) . |
00008870  73 77 69 74 63 68 5f 76  61 6c 73 28 30 29 3d 69  |switch_vals(0)=i|
00008880  74 65 6d 31 25 0d 32 46  36 20 20 20 20 f4 20 73  |tem1%.2F6    . s|
00008890  77 69 74 63 68 5f 76 61  6c 73 28 30 29 20 73 74  |witch_vals(0) st|
000088a0  6f 72 65 73 20 74 68 65  20 6e 75 6d 62 65 72 20  |ores the number |
000088b0  6f 66 20 73 77 69 74 63  68 65 73 0d 32 50 07 20  |of switches.2P. |
000088c0  20 cd 0d 32 5a 0a 20 20  c9 20 31 31 0d 32 64 0d  | ..2Z.  . 11.2d.|
000088d0  20 20 2a 46 58 33 2c 31  30 0d 32 6e 16 20 20 f2  |  *FX3,10.2n.  .|
000088e0  70 72 69 6e 74 5f 6d 73  67 28 6d 70 74 72 29 0d  |print_msg(mptr).|
000088f0  32 78 0c 20 20 2a 46 58  33 2c 30 0d 32 82 05 cb  |2x.  *FX3,0.2...|
00008900  0d 32 8c 17 f2 66 6f 72  63 65 52 28 74 65 78 74  |.2...forceR(text|
00008910  68 61 6e 64 6c 65 29 0d  32 96 13 e7 20 63 68 61  |handle).2... cha|
00008920  6e 67 65 64 5f 6d 73 67  20 8c 0d 32 a0 1b 74 65  |nged_msg ..2..te|
00008930  78 74 5f 72 6f 77 25 3d  30 3a 74 65 78 74 5f 63  |xt_row%=0:text_c|
00008940  6f 6c 25 3d 31 0d 32 aa  10 f2 63 75 72 73 6f 72  |ol%=1.2...cursor|
00008950  28 31 2c 30 29 0d 32 b4  05 cd 0d 32 be 13 f4 20  |(1,0).2....2... |
00008960  63 6c 61 69 6d 6d 65 6e  75 24 3d 22 22 0d 32 c8  |claimmenu$="".2.|
00008970  06 3d 30 0d 32 d2 04 0d  32 dc 19 dd 20 f2 63 75  |.=0.2...2... .cu|
00008980  74 28 73 74 61 72 74 2c  65 6e 64 2c 62 75 66 29  |t(start,end,buf)|
00008990  0d 32 e6 1c e7 20 6d 72  6b 3c 32 20 8c 20 85 20  |.2... mrk<2 . . |
000089a0  31 2c 65 72 72 6f 72 24  28 32 39 29 0d 32 f0 51  |1,error$(29).2.Q|
000089b0  e7 20 65 6e 64 3c 73 74  61 72 74 20 8c 20 c8 94  |. end<start . ..|
000089c0  20 73 74 61 72 74 2c 65  6e 64 3a c8 94 20 63 6f  | start,end:.. co|
000089d0  6c 28 30 29 2c 63 6f 6c  28 31 29 3a c8 94 20 72  |l(0),col(1):.. r|
000089e0  6f 77 28 30 29 2c 72 6f  77 28 31 29 3a c8 94 20  |ow(0),row(1):.. |
000089f0  61 73 63 28 30 29 2c 61  73 63 28 31 29 0d 32 fa  |asc(0),asc(1).2.|
00008a00  17 63 6c 69 70 6c 65 6e  3d 65 6e 64 2d 73 74 61  |.cliplen=end-sta|
00008a10  72 74 2b 31 0d 33 04 1c  f2 6d 6f 76 65 28 73 74  |rt+1.3...move(st|
00008a20  61 72 74 2c 62 75 66 2c  63 6c 69 70 6c 65 6e 29  |art,buf,cliplen)|
00008a30  0d 33 0e 26 f4 20 53 59  53 22 57 69 6d 70 5f 43  |.3.&. SYS"Wimp_C|
00008a40  6c 6f 73 65 44 6f 77 6e  22 3a 4d 4f 44 45 20 31  |loseDown":MODE 1|
00008a50  32 3a 53 54 4f 50 0d 33  18 3b f2 6d 6f 76 65 28  |2:STOP.3.;.move(|
00008a60  65 6e 64 2b 31 2c 73 74  61 72 74 2c 74 65 78 74  |end+1,start,text|
00008a70  5f 65 6e 64 25 2d 65 6e  64 29 3a f4 20 77 61 73  |_end%-end):. was|
00008a80  20 2b 31 20 75 6e 74 69  6c 20 31 36 2e 36 2e 38  | +1 until 16.6.8|
00008a90  39 0d 33 22 26 3f 62 75  66 3d 61 73 63 28 30 29  |9.3"&?buf=asc(0)|
00008aa0  3a 62 75 66 3f 28 63 6c  69 70 6c 65 6e 2d 31 29  |:buf?(cliplen-1)|
00008ab0  3d 61 73 63 28 31 29 0d  33 2c 1f 74 65 78 74 5f  |=asc(1).3,.text_|
00008ac0  65 6e 64 25 3d 74 65 78  74 5f 65 6e 64 25 2d 63  |end%=text_end%-c|
00008ad0  6c 69 70 6c 65 6e 0d 33  36 1d e7 20 61 73 63 28  |liplen.36.. asc(|
00008ae0  31 29 3d 30 20 8c 20 74  65 78 74 5f 65 6e 64 25  |1)=0 . text_end%|
00008af0  2b 3d 31 0d 33 40 2b f4  20 52 65 73 74 6f 72 65  |+=1.3@+. Restore|
00008b00  20 65 6e 64 20 6d 61 72  6b 65 72 20 69 66 20 69  | end marker if i|
00008b10  74 20 68 61 73 20 62 65  65 6e 20 63 75 74 0d 33  |t has been cut.3|
00008b20  4a 33 e7 20 74 65 78 74  5f 65 6e 64 25 3c 74 65  |J3. text_end%<te|
00008b30  78 74 5f 62 6c 6f 63 6b  25 20 8c 20 74 65 78 74  |xt_block% . text|
00008b40  5f 65 6e 64 25 3d 74 65  78 74 5f 62 6c 6f 63 6b  |_end%=text_block|
00008b50  25 0d 33 54 10 3f 74 65  78 74 5f 65 6e 64 25 3d  |%.3T.?text_end%=|
00008b60  30 0d 33 5e 1b 6c 61 73  74 5f 72 6f 77 25 3d a4  |0.3^.last_row%=.|
00008b70  66 69 6e 64 5f 6c 61 73  74 72 6f 77 0d 33 68 16  |find_lastrow.3h.|
00008b80  e3 20 49 25 3d 30 20 b8  20 6c 61 73 74 5f 72 6f  |. I%=0 . last_ro|
00008b90  77 25 0d 33 72 1e 74 65  78 74 5f 72 6f 77 6c 65  |w%.3r.text_rowle|
00008ba0  6e 25 28 49 25 29 3d a9  a4 72 6f 77 28 49 25 29  |n%(I%)=..row(I%)|
00008bb0  0d 33 7c 05 ed 0d 33 86  13 6d 72 6b 3d 30 3a 6d  |.3|...3..mrk=0:m|
00008bc0  61 72 6b 28 29 3d 2b 30  0d 33 90 2f e7 20 74 65  |ark()=+0.3./. te|
00008bd0  78 74 5f 72 6f 77 25 3e  6c 61 73 74 5f 72 6f 77  |xt_row%>last_row|
00008be0  25 20 8c 20 74 65 78 74  5f 72 6f 77 25 3d 6c 61  |% . text_row%=la|
00008bf0  73 74 5f 72 6f 77 25 0d  33 9a 4d e7 20 74 65 78  |st_row%.3.M. tex|
00008c00  74 5f 63 6f 6c 25 3e 74  65 78 74 5f 72 6f 77 6c  |t_col%>text_rowl|
00008c10  65 6e 25 28 74 65 78 74  5f 72 6f 77 25 29 20 8c  |en%(text_row%) .|
00008c20  20 74 65 78 74 5f 63 6f  6c 25 3d 74 65 78 74 5f  | text_col%=text_|
00008c30  72 6f 77 6c 65 6e 25 28  74 65 78 74 5f 72 6f 77  |rowlen%(text_row|
00008c40  25 29 2b 31 0d 33 a4 2c  f2 6c 6f 63 61 74 65 5f  |%)+1.3.,.locate_|
00008c50  70 74 72 3a f2 63 75 72  73 6f 72 28 74 65 78 74  |ptr:.cursor(text|
00008c60  5f 63 6f 6c 25 2c 74 65  78 74 5f 72 6f 77 25 29  |_col%,text_row%)|
00008c70  0d 33 ae 1a 64 61 74 61  5f 73 61 76 65 64 3d a3  |.3..data_saved=.|
00008c80  3a 74 65 78 74 5f 6f 6b  3d a3 0d 33 b8 05 e1 0d  |:text_ok=..3....|
00008c90  33 c2 04 0d 33 cc 1a dd  20 f2 63 6f 70 79 28 73  |3...3... .copy(s|
00008ca0  74 61 72 74 2c 65 6e 64  2c 62 75 66 29 0d 33 d6  |tart,end,buf).3.|
00008cb0  1c e7 20 6d 72 6b 3c 32  20 8c 20 85 20 31 2c 65  |.. mrk<2 . . 1,e|
00008cc0  72 72 6f 72 24 28 32 39  29 0d 33 e0 51 e7 20 65  |rror$(29).3.Q. e|
00008cd0  6e 64 3c 73 74 61 72 74  20 8c 20 c8 94 20 73 74  |nd<start . .. st|
00008ce0  61 72 74 2c 65 6e 64 3a  c8 94 20 63 6f 6c 28 30  |art,end:.. col(0|
00008cf0  29 2c 63 6f 6c 28 31 29  3a c8 94 20 72 6f 77 28  |),col(1):.. row(|
00008d00  30 29 2c 72 6f 77 28 31  29 3a c8 94 20 61 73 63  |0),row(1):.. asc|
00008d10  28 30 29 2c 61 73 63 28  31 29 0d 33 ea 17 63 6c  |(0),asc(1).3..cl|
00008d20  69 70 6c 65 6e 3d 65 6e  64 2b 31 2d 73 74 61 72  |iplen=end+1-star|
00008d30  74 0d 33 f4 1c f2 6d 6f  76 65 28 73 74 61 72 74  |t.3...move(start|
00008d40  2c 62 75 66 2c 63 6c 69  70 6c 65 6e 29 0d 33 fe  |,buf,cliplen).3.|
00008d50  26 3f 62 75 66 3d 61 73  63 28 30 29 3a 62 75 66  |&?buf=asc(0):buf|
00008d60  3f 28 63 6c 69 70 6c 65  6e 2d 31 29 3d 61 73 63  |?(cliplen-1)=asc|
00008d70  28 31 29 0d 34 08 2d 3f  73 74 61 72 74 3d 61 73  |(1).4.-?start=as|
00008d80  63 28 30 29 3a 3f 65 6e  64 3d 61 73 63 28 31 29  |c(0):?end=asc(1)|
00008d90  3a 6d 72 6b 3d 30 3a 6d  61 72 6b 28 29 3d 2b 30  |:mrk=0:mark()=+0|
00008da0  0d 34 12 05 e1 0d 34 1c  04 0d 34 26 15 dd 20 f2  |.4....4...4&.. .|
00008db0  70 61 73 74 65 28 74 6f  2c 66 72 6f 6d 29 0d 34  |paste(to,from).4|
00008dc0  30 20 e7 20 63 6c 69 70  6c 65 6e 3d 30 20 8c 20  |0 . cliplen=0 . |
00008dd0  85 20 31 2c 65 72 72 6f  72 24 28 33 30 29 0d 34  |. 1,error$(30).4|
00008de0  3a 27 f2 6d 6f 76 65 28  74 6f 2c 74 6f 2b 63 6c  |:'.move(to,to+cl|
00008df0  69 70 6c 65 6e 2c 74 65  78 74 5f 65 6e 64 25 2d  |iplen,text_end%-|
00008e00  74 6f 2b 31 29 0d 34 44  1a f2 6d 6f 76 65 28 66  |to+1).4D..move(f|
00008e10  72 6f 6d 2c 74 6f 2c 63  6c 69 70 6c 65 6e 29 0d  |rom,to,cliplen).|
00008e20  34 4e 16 74 65 78 74 5f  65 6e 64 25 2b 3d 63 6c  |4N.text_end%+=cl|
00008e30  69 70 6c 65 6e 0d 34 58  1b 6c 61 73 74 5f 72 6f  |iplen.4X.last_ro|
00008e40  77 25 3d a4 66 69 6e 64  5f 6c 61 73 74 72 6f 77  |w%=.find_lastrow|
00008e50  0d 34 62 16 e3 20 49 25  3d 30 20 b8 20 6c 61 73  |.4b.. I%=0 . las|
00008e60  74 5f 72 6f 77 25 0d 34  6c 1e 74 65 78 74 5f 72  |t_row%.4l.text_r|
00008e70  6f 77 6c 65 6e 25 28 49  25 29 3d a9 a4 72 6f 77  |owlen%(I%)=..row|
00008e80  28 49 25 29 0d 34 76 05  ed 0d 34 80 2c f2 6c 6f  |(I%).4v...4.,.lo|
00008e90  63 61 74 65 5f 70 74 72  3a f2 63 75 72 73 6f 72  |cate_ptr:.cursor|
00008ea0  28 74 65 78 74 5f 63 6f  6c 25 2c 74 65 78 74 5f  |(text_col%,text_|
00008eb0  72 6f 77 25 29 0d 34 8a  1a 64 61 74 61 5f 73 61  |row%).4..data_sa|
00008ec0  76 65 64 3d a3 3a 74 65  78 74 5f 6f 6b 3d a3 0d  |ved=.:text_ok=..|
00008ed0  34 94 05 e1 0d 34 9e 04  0d 34 a8 19 dd 20 a4 6d  |4....4...4... .m|
00008ee0  65 6e 75 73 65 6c 65 63  74 5f 70 72 6f 67 72 61  |enuselect_progra|
00008ef0  6d 0d 34 b2 0d 65 72 72  66 6c 61 67 3d a3 0d 34  |m.4..errflag=..4|
00008f00  bc 1b e7 20 69 74 65 6d  30 25 3e 34 20 80 20 69  |... item0%>4 . i|
00008f10  74 65 6d 30 25 3c 39 20  8c 0d 34 c6 13 f2 72 65  |tem0%<9 ..4...re|
00008f20  6d 6f 76 65 5f 6d 61 72  6b 65 72 73 0d 34 d0 1d  |move_markers.4..|
00008f30  e7 20 ac 20 74 65 78 74  5f 6f 6b 20 8c 20 f2 73  |. . text_ok . .s|
00008f40  74 6f 72 65 5f 70 72 6f  67 0d 34 da 15 70 72 67  |tore_prog.4..prg|
00008f50  5f 73 65 6c 25 3d 69 74  65 6d 30 25 2d 33 0d 34  |_sel%=item0%-3.4|
00008f60  e4 1b 74 65 78 74 5f 72  6f 77 25 3d 30 3a 74 65  |..text_row%=0:te|
00008f70  78 74 5f 63 6f 6c 25 3d  31 0d 34 ee 10 f2 63 75  |xt_col%=1.4...cu|
00008f80  72 73 6f 72 28 31 2c 30  29 0d 34 f8 05 cd 0d 35  |rsor(1,0).4....5|
00008f90  02 04 0d 35 0c 0f c8 8e  20 69 74 65 6d 30 25 20  |...5.... item0% |
00008fa0  ca 0d 35 16 1f c9 20 30  2c 31 3a 6f 76 65 72 77  |..5... 0,1:overw|
00008fb0  72 69 74 65 3d ac 20 6f  76 65 72 77 72 69 74 65  |rite=. overwrite|
00008fc0  0d 35 20 24 c9 20 32 3a  f2 63 75 74 28 6d 61 72  |.5 $. 2:.cut(mar|
00008fd0  6b 28 30 29 2c 6d 61 72  6b 28 31 29 2c 70 69 63  |k(0),mark(1),pic|
00008fe0  62 75 66 29 0d 35 2a 25  c9 20 33 3a f2 63 6f 70  |buf).5*%. 3:.cop|
00008ff0  79 28 6d 61 72 6b 28 30  29 2c 6d 61 72 6b 28 31  |y(mark(0),mark(1|
00009000  29 2c 70 69 63 62 75 66  29 0d 35 34 20 c9 20 34  |),picbuf).54 . 4|
00009010  3a f2 70 61 73 74 65 28  74 65 78 74 5f 70 74 72  |:.paste(text_ptr|
00009020  25 2c 70 69 63 62 75 66  29 0d 35 3e 13 c9 20 35  |%,picbuf).5>.. 5|
00009030  3a 70 72 6f 67 76 61 6c  24 3d 22 22 0d 35 48 17  |:progval$="".5H.|
00009040  c9 20 36 3a 70 72 6f 67  76 61 6c 24 3d 24 70 72  |. 6:progval$=$pr|
00009050  6f 63 25 0d 35 52 20 c9  20 37 3a 70 72 6f 67 76  |oc%.5R . 7:progv|
00009060  61 6c 24 3d a4 74 6f 55  70 70 65 72 28 24 64 65  |al$=.toUpper($de|
00009070  66 25 29 0d 35 5c 17 c9  20 38 3a 70 72 6f 67 76  |f%).5\.. 8:progv|
00009080  61 6c 24 3d 24 65 78 69  74 25 0d 35 66 17 c9 20  |al$=$exit%.5f.. |
00009090  39 3a f2 70 72 69 6e 74  5f 70 72 6f 67 5f 73 65  |9:.print_prog_se|
000090a0  67 0d 35 70 0f c9 20 31  30 3a f2 6c 69 73 74 6f  |g.5p.. 10:.listo|
000090b0  0d 35 7a 05 cb 0d 35 84  04 0d 35 8e 1d e7 20 28  |.5z...5...5... (|
000090c0  69 74 65 6d 30 25 3e 34  20 80 20 69 74 65 6d 30  |item0%>4 . item0|
000090d0  25 3c 39 29 20 8c 0d 35  98 12 20 e7 20 ac 20 65  |%<9) ..5.. . . e|
000090e0  72 72 66 6c 61 67 20 8c  0d 35 a2 1e 20 20 f2 6c  |rrflag ..5..  .l|
000090f0  69 73 74 28 69 74 65 6d  30 25 2d 33 2c 70 72 6f  |ist(item0%-3,pro|
00009100  67 76 61 6c 24 29 0d 35  ac 3d 20 20 f2 72 65 74  |gval$).5.=  .ret|
00009110  69 74 6c 65 5f 74 65 78  74 28 22 50 52 4f 47 52  |itle_text("PROGR|
00009120  41 4d 3a 20 22 2b 70 72  6f 67 24 28 70 72 67 5f  |AM: "+prog$(prg_|
00009130  73 65 6c 25 29 2b 22 20  22 2b 70 72 6f 67 76 61  |sel%)+" "+progva|
00009140  6c 24 29 0d 35 b6 19 20  20 f2 66 6f 72 63 65 52  |l$).5..  .forceR|
00009150  28 74 65 78 74 68 61 6e  64 6c 65 29 0d 35 c0 06  |(texthandle).5..|
00009160  20 cd 0d 35 ca 05 cd 0d  35 d4 1d e7 20 28 69 74  | ..5....5... (it|
00009170  65 6d 30 25 3e 31 20 80  20 69 74 65 6d 30 25 3c  |em0%>1 . item0%<|
00009180  35 29 20 8c 0d 35 de 17  f2 66 6f 72 63 65 52 28  |5) ..5...forceR(|
00009190  74 65 78 74 68 61 6e 64  6c 65 29 0d 35 e8 05 cd  |texthandle).5...|
000091a0  0d 35 f2 11 e7 20 69 74  65 6d 30 25 3d 31 30 20  |.5... item0%=10 |
000091b0  8c 0d 35 fc 1d e7 20 ac  20 74 65 78 74 5f 6f 6b  |..5... . text_ok|
000091c0  20 8c 20 f2 73 74 6f 72  65 5f 70 72 6f 67 0d 36  | . .store_prog.6|
000091d0  06 11 e7 20 ac 20 65 72  72 66 6c 61 67 20 8c 0d  |... . errflag ..|
000091e0  36 10 1b 74 65 78 74 5f  72 6f 77 25 3d 30 3a 74  |6..text_row%=0:t|
000091f0  65 78 74 5f 63 6f 6c 25  3d 31 0d 36 1a 10 f2 63  |ext_col%=1.6...c|
00009200  75 72 73 6f 72 28 31 2c  30 29 0d 36 24 1c f2 6c  |ursor(1,0).6$..l|
00009210  69 73 74 28 70 72 67 5f  73 65 6c 25 2c 70 72 6f  |ist(prg_sel%,pro|
00009220  67 76 61 6c 24 29 0d 36  2e 17 f2 66 6f 72 63 65  |gval$).6...force|
00009230  52 28 74 65 78 74 68 61  6e 64 6c 65 29 0d 36 38  |R(texthandle).68|
00009240  05 cd 0d 36 42 05 cd 0d  36 4c 06 3d 30 0d 36 56  |...6B...6L.=0.6V|
00009250  04 0d 36 60 17 dd 20 a4  6d 65 6e 75 73 65 6c 65  |..6`.. .menusele|
00009260  63 74 5f 76 6f 63 61 62  0d 36 6a 36 f4 20 4d 61  |ct_vocab.6j6. Ma|
00009270  6b 65 20 61 20 73 65 6c  65 63 74 69 6f 6e 20 66  |ke a selection f|
00009280  72 6f 6d 20 74 68 65 20  76 6f 63 61 62 75 6c 61  |rom the vocabula|
00009290  72 79 20 65 64 69 74 6f  72 20 6d 65 6e 75 0d 36  |ry editor menu.6|
000092a0  74 0f c8 8e 20 69 74 65  6d 30 25 20 ca 0d 36 7e  |t... item0% ..6~|
000092b0  1f c9 20 30 2c 31 3a 6f  76 65 72 77 72 69 74 65  |.. 0,1:overwrite|
000092c0  3d ac 20 6f 76 65 72 77  72 69 74 65 0d 36 88 24  |=. overwrite.6.$|
000092d0  c9 20 32 3a f2 63 75 74  28 6d 61 72 6b 28 30 29  |. 2:.cut(mark(0)|
000092e0  2c 6d 61 72 6b 28 31 29  2c 70 69 63 62 75 66 29  |,mark(1),picbuf)|
000092f0  0d 36 92 25 c9 20 33 3a  f2 63 6f 70 79 28 6d 61  |.6.%. 3:.copy(ma|
00009300  72 6b 28 30 29 2c 6d 61  72 6b 28 31 29 2c 70 69  |rk(0),mark(1),pi|
00009310  63 62 75 66 29 0d 36 9c  20 c9 20 34 3a f2 70 61  |cbuf).6. . 4:.pa|
00009320  73 74 65 28 74 65 78 74  5f 70 74 72 25 2c 70 69  |ste(text_ptr%,pi|
00009330  63 62 75 66 29 0d 36 a6  15 c9 20 35 2c 36 2c 37  |cbuf).6... 5,6,7|
00009340  2c 38 2c 39 2c 31 30 2c  31 31 0d 36 b0 24 f2 72  |,8,9,10,11.6.$.r|
00009350  65 6d 6f 76 65 5f 6d 61  72 6b 65 72 73 3a f4 20  |emove_markers:. |
00009360  41 64 64 65 64 20 32 33  2e 30 38 2e 38 39 0d 36  |Added 23.08.89.6|
00009370  ba 1e e7 20 ac 20 74 65  78 74 5f 6f 6b 20 8c 20  |... . text_ok . |
00009380  f2 73 74 6f 72 65 5f 76  6f 63 61 62 0d 36 c4 11  |.store_vocab.6..|
00009390  e7 20 ac 20 65 72 72 66  6c 61 67 20 8c 0d 36 ce  |. . errflag ..6.|
000093a0  16 76 6f 63 5f 73 65 63  74 25 3d 69 74 65 6d 30  |.voc_sect%=item0|
000093b0  25 2d 34 0d 36 d8 1a f2  6c 69 73 74 5f 76 6f 63  |%-4.6...list_voc|
000093c0  61 62 28 76 6f 63 5f 73  65 63 74 25 29 0d 36 e2  |ab(voc_sect%).6.|
000093d0  1b 74 65 78 74 5f 72 6f  77 25 3d 30 3a 74 65 78  |.text_row%=0:tex|
000093e0  74 5f 63 6f 6c 25 3d 31  0d 36 ec 10 f2 63 75 72  |t_col%=1.6...cur|
000093f0  73 6f 72 28 31 2c 30 29  0d 36 f6 31 f2 72 65 74  |sor(1,0).6.1.ret|
00009400  69 74 6c 65 5f 74 65 78  74 28 22 56 4f 43 41 42  |itle_text("VOCAB|
00009410  55 4c 41 52 59 3a 20 22  2b 76 6f 63 24 28 76 6f  |ULARY: "+voc$(vo|
00009420  63 5f 73 65 63 74 25 29  29 0d 37 00 05 cd 0d 37  |c_sect%)).7....7|
00009430  0a 18 c9 20 31 32 3a f2  70 72 69 6e 74 5f 70 72  |... 12:.print_pr|
00009440  6f 67 5f 73 65 67 0d 37  14 05 cb 0d 37 1e 0f c8  |og_seg.7....7...|
00009450  8e 20 69 74 65 6d 30 25  20 ca 0d 37 28 1b c9 20  |. item0% ..7(.. |
00009460  32 2c 33 2c 34 2c 35 2c  36 2c 37 2c 38 2c 39 2c  |2,3,4,5,6,7,8,9,|
00009470  31 30 2c 31 31 0d 37 32  17 f2 66 6f 72 63 65 52  |10,11.72..forceR|
00009480  28 74 65 78 74 68 61 6e  64 6c 65 29 0d 37 3c 05  |(texthandle).7<.|
00009490  cb 0d 37 46 13 f4 20 63  6c 61 69 6d 6d 65 6e 75  |..7F.. claimmenu|
000094a0  24 3d 22 22 0d 37 50 06  3d 30 0d 37 5a 04 0d 37  |$="".7P.=0.7Z..7|
000094b0  64 1a dd 20 a4 6d 65 6e  75 73 65 6c 65 63 74 5f  |d.. .menuselect_|
000094c0  65 78 69 74 65 64 69 74  0d 37 6e 0b 78 65 72 72  |exitedit.7n.xerr|
000094d0  25 3d a3 0d 37 78 15 e7  20 6f 6c 64 72 6d 69 63  |%=..7x.. oldrmic|
000094e0  6f 6e 25 3c 3e 30 20 8c  0d 37 82 29 20 20 70 74  |on%<>0 ..7.)  pt|
000094f0  72 25 3d 28 72 64 61 74  61 25 2b 72 70 74 72 2a  |r%=(rdata%+rptr*|
00009500  72 5f 6c 65 6e 2b 6f 6c  64 72 6d 69 63 6f 6e 25  |r_len+oldrmicon%|
00009510  29 0d 37 8c 12 20 20 66  6c 61 67 73 25 3d 3f 70  |).7..  flags%=?p|
00009520  74 72 25 0d 37 96 1b 20  20 63 6c 5f 64 6f 6f 72  |tr%.7..  cl_door|
00009530  25 3d 66 6c 61 67 73 25  20 80 20 26 34 30 0d 37  |%=flags% . &40.7|
00009540  a0 1b 20 20 6f 70 5f 64  6f 6f 72 25 3d 66 6c 61  |..  op_door%=fla|
00009550  67 73 25 20 80 20 26 32  30 0d 37 aa 1b 20 20 6c  |gs% . &20.7..  l|
00009560  6b 5f 64 6f 6f 72 25 3d  66 6c 61 67 73 25 20 80  |k_door%=flags% .|
00009570  20 26 31 30 0d 37 b4 1c  20 20 75 6e 6c 6b 5f 64  | &10.7..  unlk_d|
00009580  6f 6f 72 25 3d 66 6c 61  67 73 25 20 80 20 26 38  |oor%=flags% . &8|
00009590  0d 37 be 25 20 20 e7 20  63 6c 5f 64 6f 6f 72 25  |.7.%  . cl_door%|
000095a0  20 80 20 69 74 65 6d 30  25 3d 32 20 8c 20 78 65  | . item0%=2 . xe|
000095b0  72 72 25 3d b9 0d 37 c8  25 20 20 e7 20 6f 70 5f  |rr%=..7.%  . op_|
000095c0  64 6f 6f 72 25 20 80 20  69 74 65 6d 30 25 3d 31  |door% . item0%=1|
000095d0  20 8c 20 78 65 72 72 25  3d b9 0d 37 d2 25 20 20  | . xerr%=..7.%  |
000095e0  e7 20 6f 70 5f 64 6f 6f  72 25 20 80 20 69 74 65  |. op_door% . ite|
000095f0  6d 30 25 3d 33 20 8c 20  78 65 72 72 25 3d b9 0d  |m0%=3 . xerr%=..|
00009600  37 dc 27 20 20 e7 20 75  6e 6c 6b 5f 64 6f 6f 72  |7.'  . unlk_door|
00009610  25 20 80 20 69 74 65 6d  30 25 3d 33 20 8c 20 78  |% . item0%=3 . x|
00009620  65 72 72 25 3d b9 0d 37  e6 25 20 20 e7 20 6c 6b  |err%=..7.%  . lk|
00009630  5f 64 6f 6f 72 25 20 80  20 69 74 65 6d 30 25 3d  |_door% . item0%=|
00009640  34 20 8c 20 78 65 72 72  25 3d b9 0d 37 f0 25 20  |4 . xerr%=..7.% |
00009650  20 e7 20 6c 6b 5f 64 6f  6f 72 25 20 80 20 69 74  | . lk_door% . it|
00009660  65 6d 30 25 3d 32 20 8c  20 78 65 72 72 25 3d b9  |em0%=2 . xerr%=.|
00009670  0d 37 fa 0f 20 20 e7 20  78 65 72 72 25 20 8c 0d  |.7..  . xerr% ..|
00009680  38 04 0b 20 20 20 20 ef  20 37 0d 38 0e 07 20 20  |8..    . 7.8..  |
00009690  cc 0d 38 18 23 20 20 3f  70 74 72 25 3d 3f 70 74  |..8.#  ?ptr%=?pt|
000096a0  72 25 20 82 20 28 26 38  30 20 3e 3e 20 69 74 65  |r% . (&80 >> ite|
000096b0  6d 30 25 29 0d 38 22 1f  20 20 e7 20 ac 20 6c 6b  |m0%).8".  . . lk|
000096c0  5f 64 6f 6f 72 25 20 80  20 69 74 65 6d 30 25 3d  |_door% . item0%=|
000096d0  33 20 8c 0d 38 2c 2b 20  20 20 20 3f 70 74 72 25  |3 ..8,+    ?ptr%|
000096e0  3d 3f 70 74 72 25 20 80  20 25 31 31 30 31 31 31  |=?ptr% . %110111|
000096f0  31 31 20 84 20 25 30 31  30 30 30 30 30 30 0d 38  |11 . %01000000.8|
00009700  36 07 20 20 cd 0d 38 40  1d 20 20 e7 20 6c 6b 5f  |6.  ..8@.  . lk_|
00009710  64 6f 6f 72 25 20 80 20  69 74 65 6d 30 25 3d 31  |door% . item0%=1|
00009720  20 8c 0d 38 4a 1f 20 20  20 20 3f 70 74 72 25 3d  | ..8J.    ?ptr%=|
00009730  3f 70 74 72 25 20 80 20  25 31 31 31 30 31 31 31  |?ptr% . %1110111|
00009740  31 0d 38 54 07 20 20 cd  0d 38 5e 07 20 20 cd 0d  |1.8T.  ..8^.  ..|
00009750  38 68 12 20 20 64 61 74  61 5f 73 61 76 65 64 3d  |8h.  data_saved=|
00009760  a3 0d 38 72 05 cd 0d 38  7c 13 f4 20 63 6c 61 69  |..8r...8|.. clai|
00009770  6d 6d 65 6e 75 24 3d 22  22 0d 38 86 06 3d 30 0d  |mmenu$="".8..=0.|
00009780  38 90 04 0d 38 9a 18 dd  20 a4 6d 65 6e 75 73 65  |8...8... .menuse|
00009790  6c 65 63 74 5f 64 69 73  6b 33 35 0d 38 a4 0f c8  |lect_disk35.8...|
000097a0  8e 20 69 74 65 6d 30 25  20 ca 0d 38 ae 09 20 20  |. item0% ..8..  |
000097b0  c9 20 30 0d 38 b8 28 20  20 20 20 70 61 74 68 24  |. 0.8.(    path$|
000097c0  3d a4 67 65 74 69 63 6f  6e 64 61 74 61 28 73 61  |=.geticondata(sa|
000097d0  76 65 68 61 6e 64 6c 65  2c 32 29 0d 38 c2 24 20  |vehandle,2).8.$ |
000097e0  20 20 20 c8 99 20 22 4f  53 5f 46 69 6c 65 22 2c  |   .. "OS_File",|
000097f0  35 2c 70 61 74 68 24 20  b8 20 66 74 79 70 65 0d  |5,path$ . ftype.|
00009800  38 cc 65 20 20 20 20 e7  20 66 74 79 70 65 3d 30  |8.e    . ftype=0|
00009810  20 8c 20 f2 73 61 76 65  5f 61 6c 6c 28 70 61 74  | . .save_all(pat|
00009820  68 24 29 20 8b 20 f2 65  6e 73 75 72 65 28 69 74  |h$) . .ensure(it|
00009830  65 6d 30 25 2c 22 54 68  69 73 20 66 69 6c 65 20  |em0%,"This file |
00009840  65 78 69 73 74 73 2e 20  44 6f 20 79 6f 75 20 77  |exists. Do you w|
00009850  61 6e 74 20 74 6f 20 72  65 70 6c 61 63 65 20 69  |ant to replace i|
00009860  74 3f 22 29 0d 38 d6 09  20 20 c9 20 31 0d 38 e0  |t?").8..  . 1.8.|
00009870  2a 20 20 20 20 f2 6c 6f  61 64 5f 62 69 74 73 28  |*    .load_bits(|
00009880  a4 67 65 74 69 63 6f 6e  64 61 74 61 28 73 65 74  |.geticondata(set|
00009890  75 70 68 2c 32 29 29 0d  38 ea 1b 20 20 20 20 f2  |uph,2)).8..    .|
000098a0  73 65 74 75 70 5f 64 69  73 6b 28 69 74 65 6d 30  |setup_disk(item0|
000098b0  25 29 0d 38 f4 05 cb 0d  38 fe 26 69 63 6f 6e 25  |%).8....8.&icon%|
000098c0  28 64 69 73 6b 69 63 6f  6e 29 3d 2d 31 3a f4 20  |(diskicon)=-1:. |
000098d0  63 6c 61 69 6d 6d 65 6e  75 24 3d 22 22 0d 39 08  |claimmenu$="".9.|
000098e0  06 3d 30 0d 39 12 04 0d  39 1c 04 0d 39 26 04 0d  |.=0.9...9...9&..|
000098f0  39 30 1a dd 20 a4 6d 65  6e 75 73 65 6c 65 63 74  |90.. .menuselect|
00009900  5f 6f 62 6a 65 63 74 65  64 0d 39 3a 2b 6f 6c 64  |_objected.9:+old|
00009910  5f 66 6c 61 67 73 25 3d  bb 28 a4 67 65 74 69 63  |_flags%=.(.getic|
00009920  6f 6e 64 61 74 61 28 6f  62 6a 68 61 6e 64 6c 65  |ondata(objhandle|
00009930  2c 38 29 29 0d 39 44 2b  6e 65 77 5f 66 6c 61 67  |,8)).9D+new_flag|
00009940  73 25 3d 6f 6c 64 5f 66  6c 61 67 73 25 20 82 20  |s%=old_flags% . |
00009950  28 26 38 30 20 3e 3e 20  69 74 65 6d 30 25 29 0d  |(&80 >> item0%).|
00009960  39 4e 30 f2 63 68 61 6e  67 65 69 63 6f 6e 28 6f  |9N0.changeicon(o|
00009970  62 6a 68 61 6e 64 6c 65  2c 38 2c c3 28 6e 65 77  |bjhandle,8,.(new|
00009980  5f 66 6c 61 67 73 25 29  2c 64 75 6d 6d 79 29 0d  |_flags%),dummy).|
00009990  39 58 13 f4 20 63 6c 61  69 6d 6d 65 6e 75 24 3d  |9X.. claimmenu$=|
000099a0  22 22 0d 39 62 06 3d 30  0d 39 6c 04 0d 39 76 1b  |"".9b.=0.9l..9v.|
000099b0  dd 20 a4 6d 65 6e 75 73  65 6c 65 63 74 5f 63 6f  |. .menuselect_co|
000099c0  6e 74 61 69 6e 65 72 0d  39 80 0f c8 8e 20 69 74  |ntainer.9.... it|
000099d0  65 6d 30 25 20 ca 0d 39  8a 07 c9 20 30 0d 39 94  |em0% ..9... 0.9.|
000099e0  19 63 6f 6e 74 61 69 6e  65 72 3d ac 20 63 6f 6e  |.container=. con|
000099f0  74 61 69 6e 65 72 0d 39  9e 11 e7 20 63 6f 6e 74  |tainer.9... cont|
00009a00  61 69 6e 65 72 20 8c 0d  39 a8 2e f2 63 68 61 6e  |ainer ..9...chan|
00009a10  67 65 69 63 6f 6e 28 6f  62 6a 68 61 6e 64 6c 65  |geicon(objhandle|
00009a20  2c 32 36 2c 22 53 49 5a  45 20 3c 43 3e 22 2c 64  |,26,"SIZE <C>",d|
00009a30  75 6d 6d 79 29 0d 39 b2  05 cc 0d 39 bc 2a f2 63  |ummy).9....9.*.c|
00009a40  68 61 6e 67 65 69 63 6f  6e 28 6f 62 6a 68 61 6e  |hangeicon(objhan|
00009a50  64 6c 65 2c 32 36 2c 22  53 49 5a 45 22 2c 64 75  |dle,26,"SIZE",du|
00009a60  6d 6d 79 29 0d 39 c6 05  cd 0d 39 d0 07 c9 20 31  |mmy).9....9... 1|
00009a70  0d 39 da 1b 63 6f 6e 74  5f 72 6f 6f 6d 3d bb 28  |.9..cont_room=.(|
00009a80  24 63 6f 6e 74 72 6f 6f  6d 25 29 0d 39 e4 05 cb  |$controom%).9...|
00009a90  0d 39 ee 16 f4 20 64 61  74 61 5f 73 61 76 65 64  |.9... data_saved|
00009aa0  3d 46 41 4c 53 45 0d 39  f8 13 f4 20 63 6c 61 69  |=FALSE.9... clai|
00009ab0  6d 6d 65 6e 75 24 3d 22  22 0d 3a 02 06 3d 30 0d  |mmenu$="".:..=0.|
00009ac0  3a 0c 04 0d 3a 16 1a dd  20 a4 6d 65 6e 75 73 65  |:...:... .menuse|
00009ad0  6c 65 63 74 5f 72 6f 6f  6d 65 64 69 74 0d 3a 20  |lect_roomedit.: |
00009ae0  2d 6f 6c 64 5f 66 6c 61  67 73 25 3d bb 28 a4 67  |-old_flags%=.(.g|
00009af0  65 74 69 63 6f 6e 64 61  74 61 28 72 6f 6f 6d 68  |eticondata(roomh|
00009b00  61 6e 64 6c 65 2c 33 34  29 29 0d 3a 2a 2b 6e 65  |andle,34)).:*+ne|
00009b10  77 5f 66 6c 61 67 73 25  3d 6f 6c 64 5f 66 6c 61  |w_flags%=old_fla|
00009b20  67 73 25 20 82 20 28 26  38 30 20 3e 3e 20 69 74  |gs% . (&80 >> it|
00009b30  65 6d 30 25 29 0d 3a 34  32 f2 63 68 61 6e 67 65  |em0%).:42.change|
00009b40  69 63 6f 6e 28 72 6f 6f  6d 68 61 6e 64 6c 65 2c  |icon(roomhandle,|
00009b50  33 34 2c c3 28 6e 65 77  5f 66 6c 61 67 73 25 29  |34,.(new_flags%)|
00009b60  2c 64 75 6d 6d 79 29 0d  3a 3e 13 f4 20 63 6c 61  |,dummy).:>.. cla|
00009b70  69 6d 6d 65 6e 75 24 3d  22 22 0d 3a 48 06 3d 30  |immenu$="".:H.=0|
00009b80  0d 3a 52 04 0d 3a 5c 15  dd 20 a4 6d 65 6e 75 73  |.:R..:\.. .menus|
00009b90  65 6c 65 63 74 5f 6b 65  79 0d 3a 66 0f c8 8e 20  |elect_key.:f... |
00009ba0  69 74 65 6d 30 25 20 ca  0d 3a 70 15 20 20 c9 20  |item0% ..:p.  . |
00009bb0  30 3a f2 70 72 69 6e 74  5f 6f 62 6a 73 0d 3a 7a  |0:.print_objs.:z|
00009bc0  24 20 20 c9 20 31 3a f2  69 6d 70 6f 72 74 5f 6f  |$  . 1:.import_o|
00009bd0  62 6a 28 22 4f 2e 22 2b  24 69 6d 70 6f 72 74 25  |bj("O."+$import%|
00009be0  29 0d 3a 84 05 cb 0d 3a  8e 13 f4 20 63 6c 61 69  |).:....:... clai|
00009bf0  6d 6d 65 6e 75 24 3d 22  22 0d 3a 98 06 3d 30 0d  |mmenu$="".:..=0.|
00009c00  3a a2 04 0d 3a ac 16 dd  20 a4 6d 65 6e 75 73 65  |:...:... .menuse|
00009c10  6c 65 63 74 5f 64 6f 6f  72 0d 3a b6 0f c8 8e 20  |lect_door.:.... |
00009c20  69 74 65 6d 30 25 20 ca  0d 3a c0 16 20 20 c9 20  |item0% ..:..  . |
00009c30  30 3a f2 70 72 69 6e 74  5f 72 6f 6f 6d 73 0d 3a  |0:.print_rooms.:|
00009c40  ca 26 20 20 c9 20 31 3a  f2 69 6d 70 6f 72 74 5f  |.&  . 1:.import_|
00009c50  72 6f 6f 6d 73 28 22 52  2e 22 2b 24 69 6d 70 6f  |rooms("R."+$impo|
00009c60  72 74 25 29 0d 3a d4 05  cb 0d 3a de 13 f4 20 63  |rt%).:....:... c|
00009c70  6c 61 69 6d 6d 65 6e 75  24 3d 22 22 0d 3a e8 06  |laimmenu$="".:..|
00009c80  3d 30 0d 3a f2 04 0d 3a  fc 17 dd 20 a4 6d 65 6e  |=0.:...:... .men|
00009c90  75 73 65 6c 65 63 74 5f  71 75 69 6c 6c 0d 3b 06  |uselect_quill.;.|
00009ca0  0f c8 8e 20 69 74 65 6d  30 25 20 ca 0d 3b 10 15  |... item0% ..;..|
00009cb0  20 20 c9 20 30 3a f2 70  72 69 6e 74 5f 74 65 78  |  . 0:.print_tex|
00009cc0  74 0d 3b 1a 25 20 20 c9  20 31 3a f2 69 6d 70 6f  |t.;.%  . 1:.impo|
00009cd0  72 74 5f 74 65 78 74 28  22 54 2e 22 2b 24 69 6d  |rt_text("T."+$im|
00009ce0  70 6f 72 74 25 29 0d 3b  24 26 20 20 20 20 20 20  |port%).;$&      |
00009cf0  20 20 20 f2 6c 6f 61 64  5f 64 69 63 74 28 22 44  |   .load_dict("D|
00009d00  2e 22 2b 24 69 6d 70 6f  72 74 25 29 0d 3b 2e 05  |."+$import%).;..|
00009d10  cb 0d 3b 38 13 f4 20 63  6c 61 69 6d 6d 65 6e 75  |..;8.. claimmenu|
00009d20  24 3d 22 22 0d 3b 42 06  3d 30 0d 3b 4c 04 0d 3b  |$="".;B.=0.;L..;|
00009d30  56 19 dd 20 a4 6d 65 6e  75 73 65 6c 65 63 74 5f  |V.. .menuselect_|
00009d40  6c 69 73 74 69 6e 67 0d  3b 60 0f c8 8e 20 69 74  |listing.;`... it|
00009d50  65 6d 30 25 20 ca 0d 3b  6a 18 20 20 c9 20 30 3a  |em0% ..;j.  . 0:|
00009d60  f2 70 72 69 6e 74 5f 70  72 6f 67 72 61 6d 0d 3b  |.print_program.;|
00009d70  74 1c 20 20 c9 20 31 3a  f2 63 6f 6e 76 65 72 74  |t.  . 1:.convert|
00009d80  28 24 69 6d 70 6f 72 74  25 29 0d 3b 7e 0e 20 20  |($import%).;~.  |
00009d90  c9 20 32 3a f2 72 75 6e  0d 3b 88 05 cb 0d 3b 92  |. 2:.run.;....;.|
00009da0  13 f4 20 63 6c 61 69 6d  6d 65 6e 75 24 3d 22 22  |.. claimmenu$=""|
00009db0  0d 3b 9c 06 3d 30 0d 3b  a6 04 0d 3b b0 19 dd 20  |.;..=0.;...;... |
00009dc0  a4 6d 65 6e 75 73 65 6c  65 63 74 5f 63 68 61 72  |.menuselect_char|
00009dd0  64 65 73 0d 3b ba 32 f4  20 57 68 65 6e 20 60 6d  |des.;.2. When `m|
00009de0  65 6e 75 60 20 69 73 20  63 6c 69 63 6b 65 64 20  |enu` is clicked |
00009df0  6f 6e 20 74 68 65 20 60  63 68 61 72 64 65 73 60  |on the `chardes`|
00009e00  20 69 63 6f 6e 0d 3b c4  0f c8 8e 20 69 74 65 6d  | icon.;.... item|
00009e10  30 25 20 ca 0d 3b ce 35  c9 20 30 3a f2 73 61 76  |0% ..;.5. 0:.sav|
00009e20  65 5f 63 68 61 72 73 28  22 3c 55 73 65 72 73 24  |e_chars("<Users$|
00009e30  52 65 73 6f 75 72 63 65  73 3e 2e 22 2b 24 66 69  |Resources>."+$fi|
00009e40  6c 65 6e 61 6d 65 32 25  29 0d 3b d8 07 c9 20 31  |lename2%).;... 1|
00009e50  0d 3b e2 2c ff 28 22 50  52 49 4e 54 20 3c 41 6c  |.;.,.("PRINT <Al|
00009e60  70 73 24 52 65 73 6f 75  72 63 65 73 3e 2e 22 2b  |ps$Resources>."+|
00009e70  24 66 69 6c 65 6e 61 6d  65 32 25 29 0d 3b ec 1a  |$filename2%).;..|
00009e80  f2 64 69 73 70 6c 61 79  5f 63 68 72 28 63 75 72  |.display_chr(cur|
00009e90  5f 63 68 72 25 29 0d 3b  f6 22 c8 99 20 46 6f 72  |_chr%).;.".. For|
00009ea0  63 65 52 2c 2d 31 2c 30  2c 30 2c 73 63 72 77 2b  |ceR,-1,0,0,scrw+|
00009eb0  31 2c 73 63 72 68 2b 31  0d 3c 00 05 cb 0d 3c 0a  |1,scrh+1.<....<.|
00009ec0  13 f4 20 63 6c 61 69 6d  6d 65 6e 75 24 3d 22 22  |.. claimmenu$=""|
00009ed0  0d 3c 14 06 3d 30 0d 3c  1e 04 0d 3c 28 18 dd 20  |.<..=0.<...<(.. |
00009ee0  a4 6d 65 6e 75 73 65 6c  65 63 74 5f 63 68 72 64  |.menuselect_chrd|
00009ef0  65 66 0d 3c 32 4b f4 20  57 68 65 6e 20 62 75 74  |ef.<2K. When but|
00009f00  74 6f 6e 20 69 73 20 63  6c 69 63 6b 65 64 20 6f  |ton is clicked o|
00009f10  6e 20 74 68 65 20 60 53  45 4c 45 43 54 60 20 69  |n the `SELECT` i|
00009f20  63 6f 6e 20 69 6e 20 74  68 65 20 63 68 61 72 20  |con in the char |
00009f30  64 65 73 69 67 6e 20 77  69 6e 64 6f 77 0d 3c 3c  |design window.<<|
00009f40  14 63 68 72 25 3d 97 28  24 63 68 61 72 6e 75 6d  |.chr%=.($charnum|
00009f50  29 0d 3c 46 20 e7 20 63  68 72 25 3e 33 31 20 80  |).<F . chr%>31 .|
00009f60  20 63 68 72 25 3c 3d 6d  61 78 5f 63 68 72 25 20  | chr%<=max_chr% |
00009f70  8c 0d 3c 50 13 20 20 63  75 72 5f 63 68 72 25 3d  |..<P.  cur_chr%=|
00009f80  63 68 72 25 0d 3c 5a 2e  20 20 f2 63 68 61 6e 67  |chr%.<Z.  .chang|
00009f90  65 69 63 6f 6e 28 64 65  73 69 67 6e 2c 36 34 2c  |eicon(design,64,|
00009fa0  bd 28 63 75 72 5f 63 68  72 25 29 2c 69 63 6f 6e  |.(cur_chr%),icon|
00009fb0  25 29 0d 3c 64 1c 20 20  f2 64 69 73 70 6c 61 79  |%).<d.  .display|
00009fc0  5f 63 68 72 28 63 75 72  5f 63 68 72 25 29 0d 3c  |_chr(cur_chr%).<|
00009fd0  6e 05 cd 0d 3c 78 13 f4  20 63 6c 61 69 6d 6d 65  |n...<x.. claimme|
00009fe0  6e 75 24 3d 22 22 0d 3c  82 06 3d 30 0d 3c 8c 04  |nu$="".<..=0.<..|
00009ff0  0d 3c 96 1c dd 20 a4 6d  65 6e 75 73 65 6c 65 63  |.<... .menuselec|
0000a000  74 5f 76 6f 63 61 62 75  6c 61 72 79 0d 3c a0 2d  |t_vocabulary.<.-|
0000a010  f4 20 57 68 65 6e 20 53  45 4c 45 43 54 20 70 72  |. When SELECT pr|
0000a020  65 73 73 65 64 20 69 6e  20 73 6d 61 6c 6c 20 76  |essed in small v|
0000a030  6f 63 61 62 20 6d 65 6e  75 0d 3c aa 0f c8 8e 20  |ocab menu.<.... |
0000a040  69 74 65 6d 30 25 20 ca  0d 3c b4 14 c9 20 30 3a  |item0% ..<... 0:|
0000a050  f2 70 72 69 6e 74 5f 76  6f 63 61 62 0d 3c be 05  |.print_vocab.<..|
0000a060  cb 0d 3c c8 13 f4 20 63  6c 61 69 6d 6d 65 6e 75  |..<... claimmenu|
0000a070  24 3d 22 22 0d 3c d2 06  3d 30 0d 3c dc 04 0d 3c  |$="".<..=0.<...<|
0000a080  e6 18 dd 20 a4 6d 65 6e  75 73 65 6c 65 63 74 5f  |... .menuselect_|
0000a090  61 63 74 6f 72 73 0d 3c  f0 32 f4 20 53 45 4c 45  |actors.<.2. SELE|
0000a0a0  43 54 20 70 72 65 73 73  65 64 20 69 6e 20 73 6d  |CT pressed in sm|
0000a0b0  61 6c 6c 20 27 66 61 63  65 27 20 6d 65 6e 75 20  |all 'face' menu |
0000a0c0  28 41 63 74 6f 72 73 29  0d 3c fa 0f c8 8e 20 69  |(Actors).<.... i|
0000a0d0  74 65 6d 30 25 20 ca 0d  3d 04 15 c9 20 30 3a f2  |tem0% ..=... 0:.|
0000a0e0  70 72 69 6e 74 5f 61 63  74 6f 72 73 0d 3d 0e 05  |print_actors.=..|
0000a0f0  cb 0d 3d 18 13 f4 20 63  6c 61 69 6d 6d 65 6e 75  |..=... claimmenu|
0000a100  24 3d 22 22 0d 3d 22 06  3d 30 0d 3d 2c 04 0d 3d  |$="".=".=0.=,..=|
0000a110  36 15 dd 20 a4 6d 65 6e  75 73 65 6c 65 63 74 5f  |6.. .menuselect_|
0000a120  65 79 65 0d 3d 40 33 f4  20 53 45 4c 45 43 54 20  |eye.=@3. SELECT |
0000a130  70 72 65 73 73 65 64 20  69 6e 20 73 6d 61 6c 6c  |pressed in small|
0000a140  20 27 65 79 65 27 20 6d  65 6e 75 20 28 50 69 63  | 'eye' menu (Pic|
0000a150  74 75 72 65 73 29 0d 3d  4a 0f c8 8e 20 69 74 65  |tures).=J... ite|
0000a160  6d 30 25 20 ca 0d 3d 54  12 c9 20 30 3a f2 70 72  |m0% ..=T.. 0:.pr|
0000a170  69 6e 74 5f 70 69 78 0d  3d 5e 05 cb 0d 3d 68 13  |int_pix.=^...=h.|
0000a180  f4 20 63 6c 61 69 6d 6d  65 6e 75 24 3d 22 22 0d  |. claimmenu$="".|
0000a190  3d 72 06 3d 30 0d 3d 7c  04 0d 3d 86 16 dd 20 a4  |=r.=0.=|..=... .|
0000a1a0  6d 65 6e 75 73 65 6c 65  63 74 5f 6d 69 73 63 0d  |menuselect_misc.|
0000a1b0  3d 90 0f c8 8e 20 69 74  65 6d 30 25 20 ca 0d 3d  |=.... item0% ..=|
0000a1c0  9a 10 20 c9 20 31 3a 20  f4 20 71 75 69 74 0d 3d  |.. . 1: . quit.=|
0000a1d0  a4 0e 20 20 f2 71 75 69  74 28 34 29 0d 3d ae 06  |..  .quit(4).=..|
0000a1e0  20 cb 0d 3d b8 19 69 63  6f 6e 25 28 54 48 45 6d  | ..=..icon%(THEm|
0000a1f0  69 73 63 69 63 6f 6e 29  3d 2d 31 0d 3d c2 06 3d  |iscicon)=-1.=..=|
0000a200  30 0d 3d cc 04 0d 3d d6  04 0d 3d e0 44 f4 20 2d  |0.=...=...=.D. -|
0000a210  2d 2d 2d 2d 2d 20 55 74  69 6c 69 74 79 20 70 72  |----- Utility pr|
0000a220  6f 63 65 64 75 72 65 73  20 61 6e 64 20 66 75 6e  |ocedures and fun|
0000a230  63 74 69 6f 6e 73 20 66  6f 72 20 65 61 63 68 20  |ctions for each |
0000a240  65 64 69 74 6f 72 20 2d  2d 2d 2d 2d 2d 0d 3d ea  |editor ------.=.|
0000a250  04 0d 3d f4 30 f4 20 2d  2d 2d 2d 2d 2d 20 43 68  |..=.0. ------ Ch|
0000a260  61 72 61 63 74 65 72 20  64 65 73 69 67 6e 65 72  |aracter designer|
0000a270  20 75 74 69 6c 69 74 69  65 73 20 2d 2d 2d 2d 2d  | utilities -----|
0000a280  2d 0d 3d fe 04 0d 3e 08  14 dd 20 f2 77 72 69 74  |-.=...>... .writ|
0000a290  65 5f 63 68 72 28 43 25  29 0d 3e 12 0b ef 20 32  |e_chr(C%).>... 2|
0000a2a0  33 2c 43 25 0d 3e 1c 10  e3 20 72 6f 77 25 3d 30  |3,C%.>... row%=0|
0000a2b0  20 b8 20 37 0d 3e 26 0f  72 6f 77 5f 76 61 6c 75  | . 7.>&.row_valu|
0000a2c0  65 3d 30 0d 3e 30 10 e3  20 63 6f 6c 25 3d 30 20  |e=0.>0.. col%=0 |
0000a2d0  b8 20 37 0d 3e 3a 2d 64  75 6d 6d 79 3d bb 28 a4  |. 7.>:-dummy=.(.|
0000a2e0  67 65 74 69 63 6f 6e 64  61 74 61 28 64 65 73 69  |geticondata(desi|
0000a2f0  67 6e 2c 72 6f 77 25 2a  38 2b 63 6f 6c 25 29 29  |gn,row%*8+col%))|
0000a300  0d 3e 44 15 62 69 74 3d  66 6c 61 67 73 25 20 3e  |.>D.bit=flags% >|
0000a310  3e 3e 20 32 38 0d 3e 4e  2c e7 20 62 69 74 3d 37  |>> 28.>N,. bit=7|
0000a320  20 8c 20 72 6f 77 5f 76  61 6c 75 65 3d 72 6f 77  | . row_value=row|
0000a330  5f 76 61 6c 75 65 2b 32  5e 28 37 2d 63 6f 6c 25  |_value+2^(7-col%|
0000a340  29 0d 3e 58 0a ed 20 63  6f 6c 25 0d 3e 62 0f ef  |).>X.. col%.>b..|
0000a350  20 72 6f 77 5f 76 61 6c  75 65 0d 3e 6c 0a ed 20  | row_value.>l.. |
0000a360  72 6f 77 25 0d 3e 76 05  e1 0d 3e 80 04 0d 3e 8a  |row%.>v...>...>.|
0000a370  16 dd 20 f2 64 69 73 70  6c 61 79 5f 63 68 72 28  |.. .display_chr(|
0000a380  43 25 29 0d 3e 94 10 3f  6f 73 5f 62 6c 6f 63 6b  |C%).>..?os_block|
0000a390  3d 43 25 0d 3e 9e 1c c8  99 20 22 4f 53 5f 57 6f  |=C%.>.... "OS_Wo|
0000a3a0  72 64 22 2c 26 41 2c 6f  73 5f 62 6c 6f 63 6b 0d  |rd",&A,os_block.|
0000a3b0  3e a8 0e e3 20 52 25 3d  31 20 b8 20 38 0d 3e b2  |>... R%=1 . 8.>.|
0000a3c0  19 72 6f 77 5f 76 61 6c  75 65 3d 52 25 3f 6f 73  |.row_value=R%?os|
0000a3d0  5f 62 6c 6f 63 6b 0d 3e  bc 0e e3 20 43 25 3d 30  |_block.>... C%=0|
0000a3e0  20 b8 20 37 0d 3e c6 1c  62 69 74 3d 72 6f 77 5f  | . 7.>..bit=row_|
0000a3f0  76 61 6c 75 65 20 81 20  32 5e 28 37 2d 43 25 29  |value . 2^(7-C%)|
0000a400  0d 3e d0 22 72 6f 77 5f  76 61 6c 75 65 3d 72 6f  |.>."row_value=ro|
0000a410  77 5f 76 61 6c 75 65 20  83 20 32 5e 28 37 2d 43  |w_value . 2^(7-C|
0000a420  25 29 0d 3e da 71 e7 20  62 69 74 3e 30 20 f2 73  |%).>.q. bit>0 .s|
0000a430  65 74 5f 69 63 6f 6e 28  64 65 73 69 67 6e 2c 28  |et_icon(design,(|
0000a440  52 25 2d 31 29 2a 38 2b  43 25 2c 26 37 30 30 30  |R%-1)*8+C%,&7000|
0000a450  30 30 30 30 2c 26 46 30  30 30 30 30 30 30 29 20  |0000,&F0000000) |
0000a460  8b 20 f2 73 65 74 5f 69  63 6f 6e 28 64 65 73 69  |. .set_icon(desi|
0000a470  67 6e 2c 28 52 25 2d 31  29 2a 38 2b 43 25 2c 26  |gn,(R%-1)*8+C%,&|
0000a480  32 30 30 30 30 30 30 30  2c 26 46 30 30 30 30 30  |20000000,&F00000|
0000a490  30 30 29 0d 3e e4 08 ed  20 43 25 0d 3e ee 08 ed  |00).>... C%.>...|
0000a4a0  20 52 25 0d 3e f8 05 e1  0d 3f 02 04 0d 3f 0c 15  | R%.>....?...?..|
0000a4b0  dd 20 f2 73 61 76 65 5f  63 68 61 72 73 28 66 24  |. .save_chars(f$|
0000a4c0  29 0d 3f 16 0c 66 25 3d  ae 28 66 24 29 0d 3f 20  |).?..f%=.(f$).? |
0000a4d0  17 e3 20 63 68 25 3d 33  32 20 b8 20 6d 61 78 5f  |.. ch%=32 . max_|
0000a4e0  63 68 72 25 0d 3f 2a 14  d5 23 66 25 2c 32 33 3a  |chr%.?*..#f%,23:|
0000a4f0  d5 23 66 25 2c 63 68 25  0d 3f 34 11 3f 6f 73 5f  |.#f%,ch%.?4.?os_|
0000a500  62 6c 6f 63 6b 3d 63 68  25 0d 3f 3e 1c c8 99 20  |block=ch%.?>... |
0000a510  22 4f 53 5f 57 6f 72 64  22 2c 26 41 2c 6f 73 5f  |"OS_Word",&A,os_|
0000a520  62 6c 6f 63 6b 0d 3f 48  0e e3 20 49 25 3d 31 20  |block.?H.. I%=1 |
0000a530  b8 20 38 0d 3f 52 14 d5  23 66 25 2c 49 25 3f 6f  |. 8.?R..#f%,I%?o|
0000a540  73 5f 62 6c 6f 63 6b 0d  3f 5c 08 ed 20 49 25 0d  |s_block.?\.. I%.|
0000a550  3f 66 09 ed 20 63 68 25  0d 3f 70 08 d9 23 66 25  |?f.. ch%.?p..#f%|
0000a560  0d 3f 7a 20 ff 28 22 53  45 54 54 59 50 45 20 22  |.?z .("SETTYPE "|
0000a570  2b 66 24 2b 22 20 42 42  43 20 46 6f 6e 74 22 29  |+f$+" BBC Font")|
0000a580  0d 3f 84 05 e1 0d 3f 8e  04 0d 3f 98 13 dd 20 f2  |.?....?...?... .|
0000a590  73 61 76 65 5f 70 61 6c  28 66 24 29 0d 3f a2 12  |save_pal(f$).?..|
0000a5a0  ea 20 63 68 25 2c 63 6f  6c 31 2c 72 67 62 0d 3f  |. ch%,col1,rgb.?|
0000a5b0  ac 10 f2 72 65 61 64 50  61 6c 65 74 74 65 0d 3f  |...readPalette.?|
0000a5c0  b6 0c 63 68 25 3d ae 20  66 24 0d 3f c0 10 e3 20  |..ch%=. f$.?... |
0000a5d0  63 6f 6c 3d 30 20 b8 20  31 39 0d 3f ca 0f e3 20  |col=0 . 19.?... |
0000a5e0  72 67 62 3d 31 20 b8 20  33 0d 3f d4 16 d5 23 63  |rgb=1 . 3.?...#c|
0000a5f0  68 25 2c 72 67 62 28 63  6f 6c 2c 72 67 62 29 0d  |h%,rgb(col,rgb).|
0000a600  3f de 09 ed 20 72 67 62  0d 3f e8 09 ed 20 63 6f  |?... rgb.?... co|
0000a610  6c 0d 3f f2 09 d9 23 63  68 25 0d 3f fc 1a ff 20  |l.?...#ch%.?... |
0000a620  22 53 45 54 54 59 50 45  20 22 2b 66 24 2b 22 20  |"SETTYPE "+f$+" |
0000a630  46 45 44 22 0d 40 06 05  e1 0d 40 10 04 0d 40 1a  |FED".@....@...@.|
0000a640  04 0d 40 24 04 0d 40 2e  29 f4 20 2d 2d 2d 2d 2d  |..@$..@.). -----|
0000a650  2d 20 54 65 78 74 20 65  64 69 74 6f 72 20 75 74  |- Text editor ut|
0000a660  69 6c 69 74 69 65 73 20  2d 2d 2d 2d 2d 2d 0d 40  |ilities ------.@|
0000a670  38 04 0d 40 42 0b dd 20  f2 6c 65 66 74 0d 40 4c  |8..@B.. .left.@L|
0000a680  14 e7 20 74 65 78 74 5f  63 6f 6c 25 3c 3e 31 20  |.. text_col%<>1 |
0000a690  8c 0d 40 56 12 20 20 74  65 78 74 5f 70 74 72 25  |..@V.  text_ptr%|
0000a6a0  2d 3d 31 0d 40 60 12 20  20 74 65 78 74 5f 63 6f  |-=1.@`.  text_co|
0000a6b0  6c 25 2d 3d 31 0d 40 6a  05 cc 0d 40 74 16 20 20  |l%-=1.@j...@t.  |
0000a6c0  e7 20 74 65 78 74 5f 72  6f 77 25 3c 3e 30 20 8c  |. text_row%<>0 .|
0000a6d0  0d 40 7e 14 20 20 20 20  74 65 78 74 5f 72 6f 77  |.@~.    text_row|
0000a6e0  25 2d 3d 31 0d 40 88 2b  20 20 20 20 74 65 78 74  |%-=1.@.+    text|
0000a6f0  5f 63 6f 6c 25 3d 74 65  78 74 5f 72 6f 77 6c 65  |_col%=text_rowle|
0000a700  6e 25 28 74 65 78 74 5f  72 6f 77 25 29 2b 31 0d  |n%(text_row%)+1.|
0000a710  40 92 3e 20 20 20 20 e7  20 74 65 78 74 5f 72 6f  |@.>    . text_ro|
0000a720  77 6c 65 6e 25 28 74 65  78 74 5f 72 6f 77 25 29  |wlen%(text_row%)|
0000a730  3c 74 65 78 74 5f 6d 61  78 6c 6c 65 6e 25 20 8c  |<text_maxllen% .|
0000a740  20 74 65 78 74 5f 70 74  72 25 2d 3d 31 0d 40 9c  | text_ptr%-=1.@.|
0000a750  19 20 20 20 20 f2 67 65  74 77 28 74 65 78 74 68  |.    .getw(texth|
0000a760  61 6e 64 6c 65 29 0d 40  a6 3d 20 20 20 20 62 6c  |andle).@.=    bl|
0000a770  6f 63 6b 21 32 30 3d 28  74 65 78 74 5f 63 6f 6c  |ock!20=(text_col|
0000a780  25 2d 31 29 2a 63 68 58  25 2d 28 78 31 25 2d 78  |%-1)*chX%-(x1%-x|
0000a790  30 25 29 3a c8 99 20 4f  70 65 6e 57 2c 2c 62 6c  |0%):.. OpenW,,bl|
0000a7a0  6f 63 6b 0d 40 b0 07 20  20 cc 0d 40 ba 0b 20 20  |ock.@..  ..@..  |
0000a7b0  20 20 ef 20 37 0d 40 c4  07 20 20 cd 0d 40 ce 05  |  . 7.@..  ..@..|
0000a7c0  cd 0d 40 d8 17 f2 63 68  65 63 6b 5f 73 63 72 6f  |..@...check_scro|
0000a7d0  6c 6c 5f 72 69 67 68 74  0d 40 e2 05 e1 0d 40 ec  |ll_right.@....@.|
0000a7e0  04 0d 40 f6 0f dd 20 f2  6c 65 66 74 5f 65 6e 64  |..@... .left_end|
0000a7f0  0d 41 00 1c 74 65 78 74  5f 70 74 72 25 2d 3d 28  |.A..text_ptr%-=(|
0000a800  74 65 78 74 5f 63 6f 6c  25 2d 31 29 0d 41 0a 0f  |text_col%-1).A..|
0000a810  74 65 78 74 5f 63 6f 6c  25 3d 31 0d 41 14 15 f2  |text_col%=1.A...|
0000a820  67 65 74 77 28 74 65 78  74 68 61 6e 64 6c 65 29  |getw(texthandle)|
0000a830  0d 41 1e 1e 62 6c 6f 63  6b 21 32 30 3d 30 3a c8  |.A..block!20=0:.|
0000a840  99 20 4f 70 65 6e 57 2c  2c 62 6c 6f 63 6b 0d 41  |. OpenW,,block.A|
0000a850  28 05 e1 0d 41 32 04 0d  41 3c 0c dd 20 f2 72 69  |(...A2..A<.. .ri|
0000a860  67 68 74 0d 41 46 41 e7  20 74 65 78 74 5f 72 6f  |ght.AFA. text_ro|
0000a870  77 25 3d 6c 61 73 74 5f  72 6f 77 25 20 80 20 74  |w%=last_row% . t|
0000a880  65 78 74 5f 63 6f 6c 25  3d 74 65 78 74 5f 72 6f  |ext_col%=text_ro|
0000a890  77 6c 65 6e 25 28 74 65  78 74 5f 72 6f 77 25 29  |wlen%(text_row%)|
0000a8a0  2b 31 20 8c 0d 41 50 09  20 20 ef 20 37 0d 41 5a  |+1 ..AP.  . 7.AZ|
0000a8b0  05 cc 0d 41 64 30 20 20  f4 20 54 68 69 73 20 27  |...Ad0  . This '|
0000a8c0  3c 27 20 77 61 73 20 63  68 61 6e 67 65 64 20 74  |<' was changed t|
0000a8d0  6f 20 27 3c 3d 27 20 6f  6e 20 32 33 2e 30 38 2e  |o '<=' on 23.08.|
0000a8e0  38 39 0d 41 6e 2f 20 20  e7 20 74 65 78 74 5f 63  |89.An/  . text_c|
0000a8f0  6f 6c 25 3c 3d 74 65 78  74 5f 6d 61 78 6c 6c 65  |ol%<=text_maxlle|
0000a900  6e 25 20 8c 20 74 65 78  74 5f 70 74 72 25 2b 3d  |n% . text_ptr%+=|
0000a910  31 0d 41 78 12 20 20 74  65 78 74 5f 63 6f 6c 25  |1.Ax.  text_col%|
0000a920  2b 3d 31 0d 41 82 44 20  20 e7 20 74 65 78 74 5f  |+=1.A.D  . text_|
0000a930  63 6f 6c 25 3e 74 65 78  74 5f 72 6f 77 6c 65 6e  |col%>text_rowlen|
0000a940  25 28 74 65 78 74 5f 72  6f 77 25 29 2b 31 20 80  |%(text_row%)+1 .|
0000a950  20 74 65 78 74 5f 72 6f  77 25 3c 3e 6c 61 73 74  | text_row%<>last|
0000a960  5f 72 6f 77 25 20 8c 0d  41 8c 20 20 20 20 20 74  |_row% ..A.     t|
0000a970  65 78 74 5f 63 6f 6c 25  3d 31 3a 74 65 78 74 5f  |ext_col%=1:text_|
0000a980  72 6f 77 25 2b 3d 31 0d  41 96 19 20 20 20 20 f2  |row%+=1.A..    .|
0000a990  67 65 74 77 28 74 65 78  74 68 61 6e 64 6c 65 29  |getw(texthandle)|
0000a9a0  0d 41 a0 22 20 20 20 20  62 6c 6f 63 6b 21 32 30  |.A."    block!20|
0000a9b0  3d 30 3a c8 99 20 4f 70  65 6e 57 2c 2c 62 6c 6f  |=0:.. OpenW,,blo|
0000a9c0  63 6b 0d 41 aa 07 20 20  cd 0d 41 b4 05 cd 0d 41  |ck.A..  ..A....A|
0000a9d0  be 16 f2 63 68 65 63 6b  5f 73 63 72 6f 6c 6c 5f  |...check_scroll_|
0000a9e0  6c 65 66 74 0d 41 c8 05  e1 0d 41 d2 04 0d 41 dc  |left.A....A...A.|
0000a9f0  10 dd 20 f2 72 69 67 68  74 5f 65 6e 64 0d 41 e6  |.. .right_end.A.|
0000aa00  34 74 65 78 74 5f 70 74  72 25 2b 3d 28 74 65 78  |4text_ptr%+=(tex|
0000aa10  74 5f 72 6f 77 6c 65 6e  25 28 74 65 78 74 5f 72  |t_rowlen%(text_r|
0000aa20  6f 77 25 29 2d 74 65 78  74 5f 63 6f 6c 25 29 2b  |ow%)-text_col%)+|
0000aa30  31 0d 41 f0 27 74 65 78  74 5f 63 6f 6c 25 3d 74  |1.A.'text_col%=t|
0000aa40  65 78 74 5f 72 6f 77 6c  65 6e 25 28 74 65 78 74  |ext_rowlen%(text|
0000aa50  5f 72 6f 77 25 29 2b 31  0d 41 fa 15 f2 67 65 74  |_row%)+1.A...get|
0000aa60  77 28 74 65 78 74 68 61  6e 64 6c 65 29 0d 42 04  |w(texthandle).B.|
0000aa70  42 62 6c 6f 63 6b 21 32  30 3d 28 74 65 78 74 5f  |Bblock!20=(text_|
0000aa80  63 6f 6c 25 2d 31 29 2a  63 68 58 25 2d 28 78 31  |col%-1)*chX%-(x1|
0000aa90  25 2d 78 30 25 29 2b 63  68 58 25 20 81 20 32 3a  |%-x0%)+chX% . 2:|
0000aaa0  c8 99 20 4f 70 65 6e 57  2c 2c 62 6c 6f 63 6b 0d  |.. OpenW,,block.|
0000aab0  42 0e 38 f4 20 49 46 20  74 65 78 74 5f 63 6f 6c  |B.8. IF text_col|
0000aac0  25 3e 74 65 78 74 5f 6d  61 78 6c 6c 65 6e 25 20  |%>text_maxllen% |
0000aad0  74 65 78 74 5f 63 6f 6c  25 3d 74 65 78 74 5f 6d  |text_col%=text_m|
0000aae0  61 78 6c 6c 65 6e 25 0d  42 18 05 e1 0d 42 22 04  |axllen%.B....B".|
0000aaf0  0d 42 2c 0b dd 20 f2 64  6f 77 6e 0d 42 36 35 e7  |.B,.. .down.B65.|
0000ab00  20 74 65 78 74 5f 72 6f  77 25 3d 74 65 78 74 5f  | text_row%=text_|
0000ab10  6d 61 78 72 6f 77 73 25  20 84 20 74 65 78 74 5f  |maxrows% . text_|
0000ab20  72 6f 77 25 3d 6c 61 73  74 5f 72 6f 77 25 20 8c  |row%=last_row% .|
0000ab30  0d 42 40 09 20 20 ef 20  37 0d 42 4a 05 cc 0d 42  |.B@.  . 7.BJ...B|
0000ab40  54 12 20 20 74 65 78 74  5f 72 6f 77 25 2b 3d 31  |T.  text_row%+=1|
0000ab50  0d 42 5e 18 20 20 6f 6c  64 5f 63 6f 6c 25 3d 74  |.B^.  old_col%=t|
0000ab60  65 78 74 5f 63 6f 6c 25  0d 42 68 2b 20 20 e7 20  |ext_col%.Bh+  . |
0000ab70  74 65 78 74 5f 72 6f 77  6c 65 6e 25 28 74 65 78  |text_rowlen%(tex|
0000ab80  74 5f 72 6f 77 25 29 3c  74 65 78 74 5f 63 6f 6c  |t_row%)<text_col|
0000ab90  25 20 8c 0d 42 72 2b 20  20 20 20 74 65 78 74 5f  |% ..Br+    text_|
0000aba0  63 6f 6c 25 3d 74 65 78  74 5f 72 6f 77 6c 65 6e  |col%=text_rowlen|
0000abb0  25 28 74 65 78 74 5f 72  6f 77 25 29 2b 31 0d 42  |%(text_row%)+1.B|
0000abc0  7c 07 20 20 cd 0d 42 86  3f 20 20 74 65 78 74 5f  ||.  ..B.?  text_|
0000abd0  70 74 72 25 2b 3d 28 74  65 78 74 5f 72 6f 77 6c  |ptr%+=(text_rowl|
0000abe0  65 6e 25 28 74 65 78 74  5f 72 6f 77 25 2d 31 29  |en%(text_row%-1)|
0000abf0  2d 6f 6c 64 5f 63 6f 6c  25 2b 74 65 78 74 5f 63  |-old_col%+text_c|
0000ac00  6f 6c 25 29 0d 42 90 3c  20 20 e7 20 74 65 78 74  |ol%).B.<  . text|
0000ac10  5f 72 6f 77 6c 65 6e 25  28 74 65 78 74 5f 72 6f  |_rowlen%(text_ro|
0000ac20  77 25 2d 31 29 3c 74 65  78 74 5f 6d 61 78 6c 6c  |w%-1)<text_maxll|
0000ac30  65 6e 25 20 74 65 78 74  5f 70 74 72 25 2b 3d 31  |en% text_ptr%+=1|
0000ac40  0d 42 9a 05 cd 0d 42 a4  14 f2 63 68 65 63 6b 5f  |.B....B...check_|
0000ac50  73 63 72 6f 6c 6c 5f 75  70 0d 42 ae 05 e1 0d 42  |scroll_up.B....B|
0000ac60  b8 04 0d 42 c2 09 dd 20  f2 75 70 0d 42 cc 14 e7  |...B... .up.B...|
0000ac70  20 74 65 78 74 5f 72 6f  77 25 3c 3e 30 20 8c 0d  | text_row%<>0 ..|
0000ac80  42 d6 12 20 20 74 65 78  74 5f 72 6f 77 25 2d 3d  |B..  text_row%-=|
0000ac90  31 0d 42 e0 18 20 20 6f  6c 64 5f 63 6f 6c 25 3d  |1.B..  old_col%=|
0000aca0  74 65 78 74 5f 63 6f 6c  25 0d 42 ea 2b 20 20 e7  |text_col%.B.+  .|
0000acb0  20 74 65 78 74 5f 72 6f  77 6c 65 6e 25 28 74 65  | text_rowlen%(te|
0000acc0  78 74 5f 72 6f 77 25 29  3c 74 65 78 74 5f 63 6f  |xt_row%)<text_co|
0000acd0  6c 25 20 8c 0d 42 f4 2b  20 20 20 20 74 65 78 74  |l% ..B.+    text|
0000ace0  5f 63 6f 6c 25 3d 74 65  78 74 5f 72 6f 77 6c 65  |_col%=text_rowle|
0000acf0  6e 25 28 74 65 78 74 5f  72 6f 77 25 29 2b 31 0d  |n%(text_row%)+1.|
0000ad00  42 fe 07 20 20 cd 0d 43  08 3f 20 20 74 65 78 74  |B..  ..C.?  text|
0000ad10  5f 70 74 72 25 2d 3d 28  6f 6c 64 5f 63 6f 6c 25  |_ptr%-=(old_col%|
0000ad20  2b 28 74 65 78 74 5f 72  6f 77 6c 65 6e 25 28 74  |+(text_rowlen%(t|
0000ad30  65 78 74 5f 72 6f 77 25  29 2d 74 65 78 74 5f 63  |ext_row%)-text_c|
0000ad40  6f 6c 25 29 29 0d 43 12  3a 20 20 e7 20 74 65 78  |ol%)).C.:  . tex|
0000ad50  74 5f 72 6f 77 6c 65 6e  25 28 74 65 78 74 5f 72  |t_rowlen%(text_r|
0000ad60  6f 77 25 29 3c 74 65 78  74 5f 6d 61 78 6c 6c 65  |ow%)<text_maxlle|
0000ad70  6e 25 20 74 65 78 74 5f  70 74 72 25 2d 3d 31 0d  |n% text_ptr%-=1.|
0000ad80  43 1c 05 cc 0d 43 26 09  20 20 ef 20 37 0d 43 30  |C....C&.  . 7.C0|
0000ad90  05 cd 0d 43 3a 16 f2 63  68 65 63 6b 5f 73 63 72  |...C:..check_scr|
0000ada0  6f 6c 6c 5f 64 6f 77 6e  0d 43 44 05 e1 0d 43 4e  |oll_down.CD...CN|
0000adb0  04 0d 43 58 0e dd 20 f2  6e 65 77 6c 69 6e 65 0d  |..CX.. .newline.|
0000adc0  43 62 16 6f 6c 64 5f 63  6f 6c 25 3d 74 65 78 74  |Cb.old_col%=text|
0000add0  5f 63 6f 6c 25 0d 43 6c  14 f2 69 6e 73 65 72 74  |_col%.Cl..insert|
0000ade0  5f 63 68 61 72 28 31 33  29 0d 43 76 10 74 65 78  |_char(13).Cv.tex|
0000adf0  74 5f 72 6f 77 25 2b 3d  31 0d 43 80 0f 74 65 78  |t_row%+=1.C..tex|
0000ae00  74 5f 63 6f 6c 25 3d 31  0d 43 8a 44 f2 75 70 64  |t_col%=1.C.D.upd|
0000ae10  61 74 65 28 74 65 78 74  68 61 6e 64 6c 65 2c 73  |ate(texthandle,s|
0000ae20  63 78 25 2c 73 63 79 25  2d 28 79 31 25 2d 79 30  |cx%,scy%-(y1%-y0|
0000ae30  25 29 2c 73 63 78 25 2b  28 78 31 25 2d 78 30 25  |%),scx%+(x1%-x0%|
0000ae40  29 2b 63 68 58 25 2c 73  63 79 25 29 0d 43 94 19  |)+chX%,scy%).C..|
0000ae50  64 75 6d 6d 79 3d a4 72  65 64 72 61 77 5f 74 65  |dummy=.redraw_te|
0000ae60  78 74 28 b9 29 0d 43 9e  14 f2 63 68 65 63 6b 5f  |xt(.).C...check_|
0000ae70  73 63 72 6f 6c 6c 5f 75  70 0d 43 a8 05 e1 0d 43  |scroll_up.C....C|
0000ae80  b2 04 0d 43 bc 18 dd 20  f2 69 6e 73 65 72 74 5f  |...C... .insert_|
0000ae90  63 68 61 72 28 63 68 72  25 29 0d 43 c6 11 ea 20  |char(chr%).C... |
0000aea0  66 6c 61 67 31 2c 66 6c  61 67 32 0d 43 d0 53 e7  |flag1,flag2.C.S.|
0000aeb0  20 74 65 78 74 5f 70 74  72 25 3e 74 65 78 74 5f  | text_ptr%>text_|
0000aec0  65 6e 64 25 20 8c 20 e3  20 49 25 3d 74 65 78 74  |end% . . I%=text|
0000aed0  5f 65 6e 64 25 20 b8 20  74 65 78 74 5f 70 74 72  |_end% . text_ptr|
0000aee0  25 3a 3f 49 25 3d 33 32  3a ed 3a 74 65 78 74 5f  |%:?I%=32:.:text_|
0000aef0  65 6e 64 25 3d 74 65 78  74 5f 70 74 72 25 0d 43  |end%=text_ptr%.C|
0000af00  da 45 e7 20 74 65 78 74  5f 70 74 72 25 3d 74 65  |.E. text_ptr%=te|
0000af10  78 74 5f 65 6e 64 25 20  84 20 74 65 78 74 5f 72  |xt_end% . text_r|
0000af20  6f 77 6c 65 6e 25 28 74  65 78 74 5f 72 6f 77 25  |owlen%(text_row%|
0000af30  29 3c 74 65 78 74 5f 6d  61 78 6c 6c 65 6e 25 2d  |)<text_maxllen%-|
0000af40  31 20 8c 0d 43 e4 13 20  20 72 65 64 72 61 77 5f  |1 ..C..  redraw_|
0000af50  61 6c 6c 25 3d a3 0d 43  ee 05 cc 0d 43 f8 13 20  |all%=..C....C.. |
0000af60  20 72 65 64 72 61 77 5f  61 6c 6c 25 3d b9 0d 44  | redraw_all%=..D|
0000af70  02 05 cd 0d 44 0c 04 0d  44 16 34 f2 6d 6f 76 65  |....D...D.4.move|
0000af80  28 74 65 78 74 5f 70 74  72 25 2c 74 65 78 74 5f  |(text_ptr%,text_|
0000af90  70 74 72 25 2b 31 2c 74  65 78 74 5f 65 6e 64 25  |ptr%+1,text_end%|
0000afa0  2d 74 65 78 74 5f 70 74  72 25 29 0d 44 20 24 e7  |-text_ptr%).D $.|
0000afb0  20 74 65 78 74 5f 70 74  72 25 3c 6d 61 72 6b 28  | text_ptr%<mark(|
0000afc0  30 29 20 8c 20 6d 61 72  6b 28 30 29 2b 3d 31 0d  |0) . mark(0)+=1.|
0000afd0  44 2a 24 e7 20 74 65 78  74 5f 70 74 72 25 3c 6d  |D*$. text_ptr%<m|
0000afe0  61 72 6b 28 31 29 20 8c  20 6d 61 72 6b 28 31 29  |ark(1) . mark(1)|
0000aff0  2b 3d 31 0d 44 34 3a 3f  74 65 78 74 5f 70 74 72  |+=1.D4:?text_ptr|
0000b000  25 3d 63 68 72 25 3a 74  65 78 74 5f 70 74 72 25  |%=chr%:text_ptr%|
0000b010  2b 3d 31 3a 74 65 78 74  5f 65 6e 64 25 2b 3d 31  |+=1:text_end%+=1|
0000b020  3a 3f 74 65 78 74 5f 65  6e 64 25 3d 30 0d 44 3e  |:?text_end%=0.D>|
0000b030  04 0d 44 48 3a e7 20 74  65 78 74 5f 72 6f 77 6c  |..DH:. text_rowl|
0000b040  65 6e 25 28 74 65 78 74  5f 72 6f 77 25 29 3c 74  |en%(text_row%)<t|
0000b050  65 78 74 5f 6d 61 78 6c  6c 65 6e 25 2d 31 20 80  |ext_maxllen%-1 .|
0000b060  20 63 68 72 25 3c 3e 31  33 20 8c 0d 44 52 32 f4  | chr%<>13 ..DR2.|
0000b070  20 54 68 65 20 27 2d 31  27 20 61 62 6f 76 65 20  | The '-1' above |
0000b080  61 64 64 65 64 20 32 39  2e 30 38 2e 38 39 20 74  |added 29.08.89 t|
0000b090  6f 20 66 69 78 20 62 75  67 20 38 61 2e 0d 44 5c  |o fix bug 8a..D\|
0000b0a0  1e 74 65 78 74 5f 72 6f  77 6c 65 6e 25 28 74 65  |.text_rowlen%(te|
0000b0b0  78 74 5f 72 6f 77 25 29  2b 3d 31 0d 44 66 05 cc  |xt_row%)+=1.Df..|
0000b0c0  0d 44 70 1b 6c 61 73 74  5f 72 6f 77 25 3d a4 66  |.Dp.last_row%=.f|
0000b0d0  69 6e 64 5f 6c 61 73 74  72 6f 77 0d 44 7a 1e e3  |ind_lastrow.Dz..|
0000b0e0  20 52 25 3d 74 65 78 74  5f 72 6f 77 25 20 b8 20  | R%=text_row% . |
0000b0f0  6c 61 73 74 5f 72 6f 77  25 0d 44 84 21 20 20 74  |last_row%.D.!  t|
0000b100  65 78 74 5f 72 6f 77 6c  65 6e 25 28 52 25 29 3d  |ext_rowlen%(R%)=|
0000b110  a9 20 a4 72 6f 77 28 52  25 29 0d 44 8e 05 ed 0d  |. .row(R%).D....|
0000b120  44 98 05 cd 0d 44 a2 04  0d 44 ac 13 e7 20 72 65  |D....D...D... re|
0000b130  64 72 61 77 5f 61 6c 6c  25 20 8c 0d 44 b6 53 f2  |draw_all% ..D.S.|
0000b140  75 70 64 61 74 65 28 74  65 78 74 68 61 6e 64 6c  |update(texthandl|
0000b150  65 2c 30 2c 2d 28 6c 61  73 74 5f 72 6f 77 25 2b  |e,0,-(last_row%+|
0000b160  31 29 2a 6c 73 59 25 2c  73 63 78 25 2b 28 78 31  |1)*lsY%,scx%+(x1|
0000b170  25 2d 78 30 25 29 2b 63  68 58 25 2c 2d 28 74 65  |%-x0%)+chX%,-(te|
0000b180  78 74 5f 72 6f 77 25 29  2a 6c 73 59 25 29 0d 44  |xt_row%)*lsY%).D|
0000b190  c0 05 cc 0d 44 ca 1f e7  20 74 65 78 74 5f 63 6f  |....D... text_co|
0000b1a0  6c 25 3e 74 65 78 74 5f  6d 61 78 6c 6c 65 6e 25  |l%>text_maxllen%|
0000b1b0  20 8c 0d 44 d4 53 f2 75  70 64 61 74 65 28 74 65  | ..D.S.update(te|
0000b1c0  78 74 68 61 6e 64 6c 65  2c 30 2c 2d 28 74 65 78  |xthandle,0,-(tex|
0000b1d0  74 5f 72 6f 77 25 29 2a  6c 73 59 25 2c 73 63 78  |t_row%)*lsY%,scx|
0000b1e0  25 2b 28 78 31 25 2d 78  30 25 29 2b 63 68 58 25  |%+(x1%-x0%)+chX%|
0000b1f0  2c 2d 28 74 65 78 74 5f  72 6f 77 25 2d 31 29 2a  |,-(text_row%-1)*|
0000b200  6c 73 59 25 29 0d 44 de  05 cc 0d 44 e8 64 f2 75  |lsY%).D....D.d.u|
0000b210  70 64 61 74 65 28 74 65  78 74 68 61 6e 64 6c 65  |pdate(texthandle|
0000b220  2c 63 68 58 25 2a 28 74  65 78 74 5f 63 6f 6c 25  |,chX%*(text_col%|
0000b230  2d 31 29 2c 2d 28 74 65  78 74 5f 72 6f 77 25 2b  |-1),-(text_row%+|
0000b240  31 29 2a 6c 73 59 25 2c  73 63 78 25 2b 28 78 31  |1)*lsY%,scx%+(x1|
0000b250  25 2d 78 30 25 29 2b 63  68 58 25 2c 2d 28 74 65  |%-x0%)+chX%,-(te|
0000b260  78 74 5f 72 6f 77 25 29  2a 6c 73 59 25 29 0d 44  |xt_row%)*lsY%).D|
0000b270  f2 05 cd 0d 44 fc 05 cd  0d 45 06 04 0d 45 10 1f  |....D....E...E..|
0000b280  e7 20 74 65 78 74 5f 63  6f 6c 25 3e 74 65 78 74  |. text_col%>text|
0000b290  5f 6d 61 78 6c 6c 65 6e  25 20 8c 0d 45 1a 1e 20  |_maxllen% ..E.. |
0000b2a0  20 74 65 78 74 5f 63 6f  6c 25 3d 32 3a 74 65 78  | text_col%=2:tex|
0000b2b0  74 5f 72 6f 77 25 2b 3d  31 0d 45 24 2f 20 20 e7  |t_row%+=1.E$/  .|
0000b2c0  20 74 65 78 74 5f 72 6f  77 25 3e 6c 61 73 74 5f  | text_row%>last_|
0000b2d0  72 6f 77 25 20 6c 61 73  74 5f 72 6f 77 25 3d 74  |row% last_row%=t|
0000b2e0  65 78 74 5f 72 6f 77 25  0d 45 2e 0d 20 20 66 6c  |ext_row%.E..  fl|
0000b2f0  61 67 31 3d b9 0d 45 38  05 cc 0d 45 42 12 20 20  |ag1=..E8...EB.  |
0000b300  74 65 78 74 5f 63 6f 6c  25 2b 3d 31 0d 45 4c 21  |text_col%+=1.EL!|
0000b310  20 20 e7 20 74 65 78 74  5f 63 6f 6c 25 3e 74 65  |  . text_col%>te|
0000b320  78 74 5f 6d 61 78 6c 6c  65 6e 25 20 8c 0d 45 56  |xt_maxllen% ..EV|
0000b330  20 20 20 20 20 74 65 78  74 5f 63 6f 6c 25 3d 31  |     text_col%=1|
0000b340  3a 74 65 78 74 5f 72 6f  77 25 2b 3d 31 0d 45 60  |:text_row%+=1.E`|
0000b350  31 20 20 20 20 e7 20 74  65 78 74 5f 72 6f 77 25  |1    . text_row%|
0000b360  3e 6c 61 73 74 5f 72 6f  77 25 20 6c 61 73 74 5f  |>last_row% last_|
0000b370  72 6f 77 25 3d 74 65 78  74 5f 72 6f 77 25 0d 45  |row%=text_row%.E|
0000b380  6a 0f 20 20 20 20 66 6c  61 67 31 3d b9 0d 45 74  |j.    flag1=..Et|
0000b390  07 20 20 cd 0d 45 7e 05  cd 0d 45 88 04 0d 45 92  |.  ..E~...E...E.|
0000b3a0  23 64 75 6d 6d 79 3d a4  72 65 64 72 61 77 5f 74  |#dummy=.redraw_t|
0000b3b0  65 78 74 28 72 65 64 72  61 77 5f 61 6c 6c 25 29  |ext(redraw_all%)|
0000b3c0  0d 45 9c 27 f2 63 68 65  63 6b 5f 73 63 72 6f 6c  |.E.'.check_scrol|
0000b3d0  6c 5f 6c 65 66 74 3a f2  63 68 65 63 6b 5f 73 63  |l_left:.check_sc|
0000b3e0  72 6f 6c 6c 5f 75 70 0d  45 a6 0d e7 20 66 6c 61  |roll_up.E... fla|
0000b3f0  67 31 20 8c 0d 45 b0 17  20 20 f2 67 65 74 77 28  |g1 ..E..  .getw(|
0000b400  74 65 78 74 68 61 6e 64  6c 65 29 0d 45 ba 20 20  |texthandle).E.  |
0000b410  20 62 6c 6f 63 6b 21 32  30 3d 30 3a c8 99 20 4f  | block!20=0:.. O|
0000b420  70 65 6e 57 2c 2c 62 6c  6f 63 6b 0d 45 c4 05 cd  |penW,,block.E...|
0000b430  0d 45 ce 05 e1 0d 45 d8  04 0d 45 e2 1b dd 20 f2  |.E....E...E... .|
0000b440  6f 76 65 72 77 72 69 74  65 5f 63 68 61 72 28 63  |overwrite_char(c|
0000b450  68 72 25 29 0d 45 ec 3e  e7 20 74 65 78 74 5f 63  |hr%).E.>. text_c|
0000b460  6f 6c 25 3e 74 65 78 74  5f 72 6f 77 6c 65 6e 25  |ol%>text_rowlen%|
0000b470  28 74 65 78 74 5f 72 6f  77 25 29 20 8c 20 f2 69  |(text_row%) . .i|
0000b480  6e 73 65 72 74 5f 63 68  61 72 28 63 68 72 25 29  |nsert_char(chr%)|
0000b490  3a e1 0d 45 f6 88 e7 20  74 65 78 74 5f 70 74 72  |:..E... text_ptr|
0000b4a0  25 3d 6d 61 72 6b 28 30  29 20 8c 20 c8 94 20 6d  |%=mark(0) . .. m|
0000b4b0  61 72 6b 28 30 29 2c 6d  61 72 6b 28 31 29 3a c8  |ark(0),mark(1):.|
0000b4c0  94 20 61 73 63 28 30 29  2c 61 73 63 28 31 29 3a  |. asc(0),asc(1):|
0000b4d0  c8 94 20 63 68 72 28 30  29 2c 63 68 72 28 31 29  |.. chr(0),chr(1)|
0000b4e0  3a 6d 72 6b 2d 3d 31 3a  6d 61 72 6b 28 31 29 3d  |:mrk-=1:mark(1)=|
0000b4f0  30 20 8b 20 e7 20 74 65  78 74 5f 70 74 72 25 3d  |0 . . text_ptr%=|
0000b500  6d 61 72 6b 28 31 29 20  8c 20 6d 72 6b 2d 3d 31  |mark(1) . mrk-=1|
0000b510  3a 6d 61 72 6b 28 31 29  3d 30 0d 46 00 13 3f 74  |:mark(1)=0.F..?t|
0000b520  65 78 74 5f 70 74 72 25  3d 63 68 72 25 0d 46 0a  |ext_ptr%=chr%.F.|
0000b530  10 74 65 78 74 5f 70 74  72 25 2b 3d 31 0d 46 14  |.text_ptr%+=1.F.|
0000b540  2d e7 20 74 65 78 74 5f  70 74 72 25 3e 74 65 78  |-. text_ptr%>tex|
0000b550  74 5f 65 6e 64 25 20 74  65 78 74 5f 65 6e 64 25  |t_end% text_end%|
0000b560  3d 74 65 78 74 5f 70 74  72 25 0d 46 1e 10 3f 74  |=text_ptr%.F..?t|
0000b570  65 78 74 5f 65 6e 64 25  3d 30 0d 46 28 64 f2 75  |ext_end%=0.F(d.u|
0000b580  70 64 61 74 65 28 74 65  78 74 68 61 6e 64 6c 65  |pdate(texthandle|
0000b590  2c 63 68 58 25 2a 28 74  65 78 74 5f 63 6f 6c 25  |,chX%*(text_col%|
0000b5a0  2d 31 29 2c 2d 28 74 65  78 74 5f 72 6f 77 25 2b  |-1),-(text_row%+|
0000b5b0  31 29 2a 6c 73 59 25 2c  73 63 78 25 2b 28 78 31  |1)*lsY%,scx%+(x1|
0000b5c0  25 2d 78 30 25 29 2b 63  68 58 25 2c 2d 28 74 65  |%-x0%)+chX%,-(te|
0000b5d0  78 74 5f 72 6f 77 25 29  2a 6c 73 59 25 29 0d 46  |xt_row%)*lsY%).F|
0000b5e0  32 19 64 75 6d 6d 79 3d  a4 72 65 64 72 61 77 5f  |2.dummy=.redraw_|
0000b5f0  74 65 78 74 28 b9 29 0d  46 3c 10 74 65 78 74 5f  |text(.).F<.text_|
0000b600  63 6f 6c 25 2b 3d 31 0d  46 46 38 e7 20 74 65 78  |col%+=1.FF8. tex|
0000b610  74 5f 63 6f 6c 25 3e 74  65 78 74 5f 6d 61 78 6c  |t_col%>text_maxl|
0000b620  6c 65 6e 25 20 8c 20 74  65 78 74 5f 63 6f 6c 25  |len% . text_col%|
0000b630  3d 31 3a 74 65 78 74 5f  72 6f 77 25 2b 3d 31 0d  |=1:text_row%+=1.|
0000b640  46 50 04 0d 46 5a 1b 6c  61 73 74 5f 72 6f 77 25  |FP..FZ.last_row%|
0000b650  3d a4 66 69 6e 64 5f 6c  61 73 74 72 6f 77 0d 46  |=.find_lastrow.F|
0000b660  64 04 0d 46 6e 1e e3 20  52 25 3d 74 65 78 74 5f  |d..Fn.. R%=text_|
0000b670  72 6f 77 25 20 b8 20 6c  61 73 74 5f 72 6f 77 25  |row% . last_row%|
0000b680  0d 46 78 21 20 20 74 65  78 74 5f 72 6f 77 6c 65  |.Fx!  text_rowle|
0000b690  6e 25 28 52 25 29 3d a9  20 a4 72 6f 77 28 52 25  |n%(R%)=. .row(R%|
0000b6a0  29 0d 46 82 05 ed 0d 46  8c 05 e1 0d 46 96 04 0d  |).F....F....F...|
0000b6b0  46 a0 12 dd 20 f2 64 65  6c 65 74 65 5f 63 68 61  |F... .delete_cha|
0000b6c0  72 0d 46 aa 25 e7 20 74  65 78 74 5f 63 6f 6c 25  |r.F.%. text_col%|
0000b6d0  3d 31 20 80 20 74 65 78  74 5f 72 6f 77 25 3d 30  |=1 . text_row%=0|
0000b6e0  20 ef 20 37 3a e1 0d 46  b4 24 e7 20 74 65 78 74  | . 7:..F.$. text|
0000b6f0  5f 70 74 72 25 3c 6d 61  72 6b 28 30 29 20 8c 20  |_ptr%<mark(0) . |
0000b700  6d 61 72 6b 28 30 29 2d  3d 31 0d 46 be 24 e7 20  |mark(0)-=1.F.$. |
0000b710  74 65 78 74 5f 70 74 72  25 3c 6d 61 72 6b 28 31  |text_ptr%<mark(1|
0000b720  29 20 8c 20 6d 61 72 6b  28 31 29 2d 3d 31 0d 46  |) . mark(1)-=1.F|
0000b730  c8 1d 74 65 78 74 5f 70  74 72 25 2d 3d 31 3a 74  |..text_ptr%-=1:t|
0000b740  65 78 74 5f 65 6e 64 25  2d 3d 31 0d 46 d2 88 e7  |ext_end%-=1.F...|
0000b750  20 74 65 78 74 5f 70 74  72 25 3d 6d 61 72 6b 28  | text_ptr%=mark(|
0000b760  30 29 20 8c 20 c8 94 20  6d 61 72 6b 28 30 29 2c  |0) . .. mark(0),|
0000b770  6d 61 72 6b 28 31 29 3a  c8 94 20 61 73 63 28 30  |mark(1):.. asc(0|
0000b780  29 2c 61 73 63 28 31 29  3a c8 94 20 63 68 72 28  |),asc(1):.. chr(|
0000b790  30 29 2c 63 68 72 28 31  29 3a 6d 72 6b 2d 3d 31  |0),chr(1):mrk-=1|
0000b7a0  3a 6d 61 72 6b 28 31 29  3d 30 20 8b 20 e7 20 74  |:mark(1)=0 . . t|
0000b7b0  65 78 74 5f 70 74 72 25  3d 6d 61 72 6b 28 31 29  |ext_ptr%=mark(1)|
0000b7c0  20 8c 20 6d 72 6b 2d 3d  31 3a 6d 61 72 6b 28 31  | . mrk-=1:mark(1|
0000b7d0  29 3d 30 0d 46 dc 41 74  65 78 74 5f 63 6f 6c 25  |)=0.F.Atext_col%|
0000b7e0  2d 3d 31 3a 74 68 69 73  5f 72 6f 77 25 3d 74 65  |-=1:this_row%=te|
0000b7f0  78 74 5f 72 6f 77 25 3a  f4 20 74 65 78 74 5f 72  |xt_row%:. text_r|
0000b800  6f 77 6c 65 6e 25 28 74  65 78 74 5f 72 6f 77 25  |owlen%(text_row%|
0000b810  29 2d 3d 31 0d 46 e6 09  63 72 25 3d a3 0d 46 f0  |)-=1.F..cr%=..F.|
0000b820  13 e7 20 74 65 78 74 5f  63 6f 6c 25 3c 31 20 8c  |.. text_col%<1 .|
0000b830  0d 46 fa 0b 20 20 63 72  25 3d b9 0d 47 04 29 20  |.F..  cr%=..G.) |
0000b840  20 74 65 78 74 5f 63 6f  6c 25 3d 74 65 78 74 5f  | text_col%=text_|
0000b850  72 6f 77 6c 65 6e 25 28  74 65 78 74 5f 72 6f 77  |rowlen%(text_row|
0000b860  25 2d 31 29 0d 47 0e 22  20 20 e7 20 3f 74 65 78  |%-1).G."  . ?tex|
0000b870  74 5f 70 74 72 25 3d 31  33 20 74 65 78 74 5f 63  |t_ptr%=13 text_c|
0000b880  6f 6c 25 2b 3d 31 0d 47  18 12 20 20 74 65 78 74  |ol%+=1.G..  text|
0000b890  5f 72 6f 77 25 2d 3d 31  0d 47 22 05 cd 0d 47 2c  |_row%-=1.G"...G,|
0000b8a0  36 f2 6d 6f 76 65 28 74  65 78 74 5f 70 74 72 25  |6.move(text_ptr%|
0000b8b0  2b 31 2c 74 65 78 74 5f  70 74 72 25 2c 74 65 78  |+1,text_ptr%,tex|
0000b8c0  74 5f 65 6e 64 25 2d 74  65 78 74 5f 70 74 72 25  |t_end%-text_ptr%|
0000b8d0  2b 31 29 0d 47 36 04 0d  47 40 35 e7 20 74 65 78  |+1).G6..G@5. tex|
0000b8e0  74 5f 72 6f 77 6c 65 6e  25 28 74 68 69 73 5f 72  |t_rowlen%(this_r|
0000b8f0  6f 77 25 29 3c 74 65 78  74 5f 6d 61 78 6c 6c 65  |ow%)<text_maxlle|
0000b900  6e 25 20 80 20 ac 20 63  72 25 20 8c 0d 47 4a 1e  |n% . . cr% ..GJ.|
0000b910  74 65 78 74 5f 72 6f 77  6c 65 6e 25 28 74 68 69  |text_rowlen%(thi|
0000b920  73 5f 72 6f 77 25 29 2d  3d 31 0d 47 54 05 cc 0d  |s_row%)-=1.GT...|
0000b930  47 5e 1b 6c 61 73 74 5f  72 6f 77 25 3d a4 66 69  |G^.last_row%=.fi|
0000b940  6e 64 5f 6c 61 73 74 72  6f 77 0d 47 68 1e e3 20  |nd_lastrow.Gh.. |
0000b950  52 25 3d 74 65 78 74 5f  72 6f 77 25 20 b8 20 6c  |R%=text_row% . l|
0000b960  61 73 74 5f 72 6f 77 25  0d 47 72 21 20 20 74 65  |ast_row%.Gr!  te|
0000b970  78 74 5f 72 6f 77 6c 65  6e 25 28 52 25 29 3d a9  |xt_rowlen%(R%)=.|
0000b980  20 a4 72 6f 77 28 52 25  29 0d 47 7c 05 ed 0d 47  | .row(R%).G|...G|
0000b990  86 05 cd 0d 47 90 15 f2  67 65 74 77 28 74 65 78  |....G...getw(tex|
0000b9a0  74 68 61 6e 64 6c 65 29  0d 47 9a 50 e7 20 28 74  |thandle).G.P. (t|
0000b9b0  65 78 74 5f 70 74 72 25  3d 74 65 78 74 5f 65 6e  |ext_ptr%=text_en|
0000b9c0  64 25 20 84 20 74 65 78  74 5f 72 6f 77 6c 65 6e  |d% . text_rowlen|
0000b9d0  25 28 74 65 78 74 5f 72  6f 77 25 29 3c 74 65 78  |%(text_row%)<tex|
0000b9e0  74 5f 6d 61 78 6c 6c 65  6e 25 2d 31 29 20 20 80  |t_maxllen%-1)  .|
0000b9f0  20 ac 20 63 72 25 20 8c  0d 47 a4 64 f2 75 70 64  | . cr% ..G.d.upd|
0000ba00  61 74 65 28 74 65 78 74  68 61 6e 64 6c 65 2c 63  |ate(texthandle,c|
0000ba10  68 58 25 2a 28 74 65 78  74 5f 63 6f 6c 25 2d 31  |hX%*(text_col%-1|
0000ba20  29 2c 2d 28 74 65 78 74  5f 72 6f 77 25 2b 31 29  |),-(text_row%+1)|
0000ba30  2a 6c 73 59 25 2c 73 63  78 25 2b 28 78 31 25 2d  |*lsY%,scx%+(x1%-|
0000ba40  78 30 25 29 2b 63 68 58  25 2c 2d 28 74 65 78 74  |x0%)+chX%,-(text|
0000ba50  5f 72 6f 77 25 29 2a 6c  73 59 25 29 0d 47 ae 12  |_row%)*lsY%).G..|
0000ba60  20 20 43 25 3d 74 65 78  74 5f 63 6f 6c 25 0d 47  |  C%=text_col%.G|
0000ba70  b8 05 cc 0d 47 c2 53 f2  75 70 64 61 74 65 28 74  |....G.S.update(t|
0000ba80  65 78 74 68 61 6e 64 6c  65 2c 30 2c 2d 28 6c 61  |exthandle,0,-(la|
0000ba90  73 74 5f 72 6f 77 25 2b  32 29 2a 6c 73 59 25 2c  |st_row%+2)*lsY%,|
0000baa0  73 63 78 25 2b 28 78 31  25 2d 78 30 25 29 2b 63  |scx%+(x1%-x0%)+c|
0000bab0  68 58 25 2c 2d 28 74 65  78 74 5f 72 6f 77 25 29  |hX%,-(text_row%)|
0000bac0  2a 6c 73 59 25 29 0d 47  cc 4a f4 20 20 50 52 4f  |*lsY%).G.J.  PRO|
0000bad0  43 75 70 64 61 74 65 28  74 65 78 74 68 61 6e 64  |Cupdate(texthand|
0000bae0  6c 65 2c 73 63 78 25 2c  73 63 79 25 2d 28 79 31  |le,scx%,scy%-(y1|
0000baf0  25 2d 79 30 25 29 2c 73  63 78 25 2b 28 78 31 25  |%-y0%),scx%+(x1%|
0000bb00  2d 78 30 25 29 2b 63 68  58 25 2c 73 63 79 25 29  |-x0%)+chX%,scy%)|
0000bb10  0d 47 d6 05 cd 0d 47 e0  04 0d 47 ea 19 64 75 6d  |.G....G...G..dum|
0000bb20  6d 79 3d a4 72 65 64 72  61 77 5f 74 65 78 74 28  |my=.redraw_text(|
0000bb30  b9 29 0d 47 f4 0b e7 20  63 72 25 20 8c 0d 47 fe  |.).G... cr% ..G.|
0000bb40  15 f2 67 65 74 77 28 74  65 78 74 68 61 6e 64 6c  |..getw(texthandl|
0000bb50  65 29 0d 48 08 39 62 6c  6f 63 6b 21 32 30 3d 28  |e).H.9block!20=(|
0000bb60  74 65 78 74 5f 63 6f 6c  25 2d 31 29 2a 63 68 58  |text_col%-1)*chX|
0000bb70  25 2d 28 78 31 25 2d 78  30 25 29 3a c8 99 20 4f  |%-(x1%-x0%):.. O|
0000bb80  70 65 6e 57 2c 2c 62 6c  6f 63 6b 0d 48 12 05 cd  |penW,,block.H...|
0000bb90  0d 48 1c 05 e1 0d 48 26  04 0d 48 30 12 dd 20 f2  |.H....H&..H0.. .|
0000bba0  69 6e 73 65 72 74 5f 6c  69 6e 65 0d 48 3a 24 e7  |insert_line.H:$.|
0000bbb0  20 6c 61 73 74 5f 72 6f  77 25 3d 74 65 78 74 5f  | last_row%=text_|
0000bbc0  6d 61 78 72 6f 77 73 25  20 8c 20 ef 37 3a e1 0d  |maxrows% . .7:..|
0000bbd0  48 44 1f 66 72 6f 6d 25  3d 74 65 78 74 5f 70 74  |HD.from%=text_pt|
0000bbe0  72 25 2d 74 65 78 74 5f  63 6f 6c 25 2b 31 0d 48  |r%-text_col%+1.H|
0000bbf0  4e 20 e7 20 66 72 6f 6d  25 3c 6d 61 72 6b 28 30  |N . from%<mark(0|
0000bc00  29 20 8c 20 6d 61 72 6b  28 30 29 2b 3d 31 0d 48  |) . mark(0)+=1.H|
0000bc10  58 20 e7 20 66 72 6f 6d  25 3c 6d 61 72 6b 28 31  |X . from%<mark(1|
0000bc20  29 20 8c 20 6d 61 72 6b  28 31 29 2b 3d 31 0d 48  |) . mark(1)+=1.H|
0000bc30  62 2a f2 6d 6f 76 65 28  66 72 6f 6d 25 2c 66 72  |b*.move(from%,fr|
0000bc40  6f 6d 25 2b 31 2c 74 65  78 74 5f 65 6e 64 25 2d  |om%+1,text_end%-|
0000bc50  66 72 6f 6d 25 2b 31 29  0d 48 6c 0d 3f 66 72 6f  |from%+1).Hl.?fro|
0000bc60  6d 25 3d 31 33 0d 48 76  27 e3 20 52 25 3d 6c 61  |m%=13.Hv'. R%=la|
0000bc70  73 74 5f 72 6f 77 25 2b  31 20 b8 20 74 65 78 74  |st_row%+1 . text|
0000bc80  5f 72 6f 77 25 2b 31 20  88 20 2d 31 0d 48 80 27  |_row%+1 . -1.H.'|
0000bc90  74 65 78 74 5f 72 6f 77  6c 65 6e 25 28 52 25 29  |text_rowlen%(R%)|
0000bca0  3d 74 65 78 74 5f 72 6f  77 6c 65 6e 25 28 52 25  |=text_rowlen%(R%|
0000bcb0  2d 31 29 0d 48 8a 05 ed  0d 48 94 1d 74 65 78 74  |-1).H....H..text|
0000bcc0  5f 72 6f 77 6c 65 6e 25  28 74 65 78 74 5f 72 6f  |_rowlen%(text_ro|
0000bcd0  77 25 29 3d 30 0d 48 9e  1d 74 65 78 74 5f 65 6e  |w%)=0.H..text_en|
0000bce0  64 25 2b 3d 31 3a 6c 61  73 74 5f 72 6f 77 25 2b  |d%+=1:last_row%+|
0000bcf0  3d 31 0d 48 a8 1a 74 65  78 74 5f 70 74 72 25 2d  |=1.H..text_ptr%-|
0000bd00  3d 74 65 78 74 5f 63 6f  6c 25 2d 31 0d 48 b2 0f  |=text_col%-1.H..|
0000bd10  74 65 78 74 5f 63 6f 6c  25 3d 31 0d 48 bc 55 f2  |text_col%=1.H.U.|
0000bd20  75 70 64 61 74 65 28 74  65 78 74 68 61 6e 64 6c  |update(texthandl|
0000bd30  65 2c 73 63 78 25 2c 73  63 79 25 2d 28 79 31 25  |e,scx%,scy%-(y1%|
0000bd40  2d 79 30 25 29 2c 73 63  78 25 2b 28 78 31 25 2d  |-y0%),scx%+(x1%-|
0000bd50  78 30 25 29 2b 63 68 58  25 2c 73 63 79 25 2d 28  |x0%)+chX%,scy%-(|
0000bd60  74 65 78 74 5f 72 6f 77  25 29 2a 6c 73 59 25 29  |text_row%)*lsY%)|
0000bd70  0d 48 c6 19 64 75 6d 6d  79 3d a4 72 65 64 72 61  |.H..dummy=.redra|
0000bd80  77 5f 74 65 78 74 28 b9  29 0d 48 d0 05 e1 0d 48  |w_text(.).H....H|
0000bd90  da 04 0d 48 e4 12 dd 20  f2 64 65 6c 65 74 65 5f  |...H... .delete_|
0000bda0  6c 69 6e 65 0d 48 ee 0d  ea 20 63 72 25 2c 74 6f  |line.H... cr%,to|
0000bdb0  25 0d 48 f8 13 f2 72 65  6d 6f 76 65 5f 6d 61 72  |%.H...remove_mar|
0000bdc0  6b 65 72 73 0d 49 02 3c  6e 65 78 74 5f 6c 69 6e  |kers.I.<next_lin|
0000bdd0  65 25 3d 74 65 78 74 5f  70 74 72 25 2b 74 65 78  |e%=text_ptr%+tex|
0000bde0  74 5f 72 6f 77 6c 65 6e  25 28 74 65 78 74 5f 72  |t_rowlen%(text_r|
0000bdf0  6f 77 25 29 2d 74 65 78  74 5f 63 6f 6c 25 2b 31  |ow%)-text_col%+1|
0000be00  0d 49 0c 2a 74 65 78 74  5f 70 74 72 25 2d 3d 28  |.I.*text_ptr%-=(|
0000be10  74 65 78 74 5f 63 6f 6c  25 2d 31 29 3a 74 6f 25  |text_col%-1):to%|
0000be20  3d 74 65 78 74 5f 70 74  72 25 0d 49 16 41 e7 20  |=text_ptr%.I.A. |
0000be30  3f 28 74 65 78 74 5f 70  74 72 25 2b 74 65 78 74  |?(text_ptr%+text|
0000be40  5f 72 6f 77 6c 65 6e 25  28 74 65 78 74 5f 72 6f  |_rowlen%(text_ro|
0000be50  77 25 29 29 3d 31 33 20  6e 65 78 74 5f 6c 69 6e  |w%))=13 next_lin|
0000be60  65 25 2b 3d 31 3a 63 72  25 3d b9 0d 49 20 2e f2  |e%+=1:cr%=..I ..|
0000be70  6d 6f 76 65 28 6e 65 78  74 5f 6c 69 6e 65 25 2c  |move(next_line%,|
0000be80  74 6f 25 2c 74 65 78 74  5f 65 6e 64 25 2d 6e 65  |to%,text_end%-ne|
0000be90  78 74 5f 6c 69 6e 65 25  29 0d 49 2a 26 74 65 78  |xt_line%).I*&tex|
0000bea0  74 5f 65 6e 64 25 2d 3d  74 65 78 74 5f 72 6f 77  |t_end%-=text_row|
0000beb0  6c 65 6e 25 28 74 65 78  74 5f 72 6f 77 25 29 0d  |len%(text_row%).|
0000bec0  49 34 16 e7 20 63 72 25  20 74 65 78 74 5f 65 6e  |I4.. cr% text_en|
0000bed0  64 25 2d 3d 31 0d 49 3e  31 e7 20 74 65 78 74 5f  |d%-=1.I>1. text_|
0000bee0  65 6e 64 25 3c 74 65 78  74 5f 62 6c 6f 63 6b 25  |end%<text_block%|
0000bef0  20 74 65 78 74 5f 65 6e  64 25 3d 74 65 78 74 5f  | text_end%=text_|
0000bf00  62 6c 6f 63 6b 25 0d 49  48 10 3f 74 65 78 74 5f  |block%.IH.?text_|
0000bf10  65 6e 64 25 3d 30 0d 49  52 0f 74 65 78 74 5f 63  |end%=0.IR.text_c|
0000bf20  6f 6c 25 3d 31 0d 49 5c  1b 6c 61 73 74 5f 72 6f  |ol%=1.I\.last_ro|
0000bf30  77 25 3d a4 66 69 6e 64  5f 6c 61 73 74 72 6f 77  |w%=.find_lastrow|
0000bf40  0d 49 66 04 0d 49 70 1e  e3 20 52 25 3d 74 65 78  |.If..Ip.. R%=tex|
0000bf50  74 5f 72 6f 77 25 20 b8  20 6c 61 73 74 5f 72 6f  |t_row% . last_ro|
0000bf60  77 25 0d 49 7a 21 20 20  74 65 78 74 5f 72 6f 77  |w%.Iz!  text_row|
0000bf70  6c 65 6e 25 28 52 25 29  3d a9 20 a4 72 6f 77 28  |len%(R%)=. .row(|
0000bf80  52 25 29 0d 49 84 05 ed  0d 49 8e 04 0d 49 98 5a  |R%).I....I...I.Z|
0000bf90  f4 20 50 52 4f 43 75 70  64 61 74 65 28 74 65 78  |. PROCupdate(tex|
0000bfa0  74 68 61 6e 64 6c 65 2c  73 63 78 25 2c 73 63 79  |thandle,scx%,scy|
0000bfb0  25 2d 28 79 31 25 2d 79  30 25 29 2c 73 63 78 25  |%-(y1%-y0%),scx%|
0000bfc0  2b 28 78 31 25 2d 78 30  25 29 2b 63 68 58 25 2c  |+(x1%-x0%)+chX%,|
0000bfd0  73 63 79 25 2d 28 74 65  78 74 5f 72 6f 77 25 29  |scy%-(text_row%)|
0000bfe0  2a 6c 73 59 25 29 0d 49  a2 44 f2 75 70 64 61 74  |*lsY%).I.D.updat|
0000bff0  65 28 74 65 78 74 68 61  6e 64 6c 65 2c 73 63 78  |e(texthandle,scx|
0000c000  25 2c 73 63 79 25 2d 28  79 31 25 2d 79 30 25 29  |%,scy%-(y1%-y0%)|
0000c010  2c 73 63 78 25 2b 28 78  31 25 2d 78 30 25 29 2b  |,scx%+(x1%-x0%)+|
0000c020  63 68 58 25 2c 73 63 79  25 29 0d 49 ac 19 64 75  |chX%,scy%).I..du|
0000c030  6d 6d 79 3d a4 72 65 64  72 61 77 5f 74 65 78 74  |mmy=.redraw_text|
0000c040  28 b9 29 0d 49 b6 05 e1  0d 49 c0 04 0d 49 ca 15  |(.).I....I...I..|
0000c050  dd 20 f2 69 6e 73 74 61  6c 6c 5f 74 65 78 74 65  |. .install_texte|
0000c060  64 0d 49 d4 15 74 65 78  74 5f 6d 61 78 72 6f 77  |d.I..text_maxrow|
0000c070  73 25 3d 35 30 30 0d 49  de 19 74 65 78 74 5f 62  |s%=500.I..text_b|
0000c080  6c 6f 63 6b 73 69 7a 65  25 3d 32 30 30 30 30 0d  |locksize%=20000.|
0000c090  49 e8 14 74 65 78 74 5f  6f 72 69 67 69 6e 61 6c  |I..text_original|
0000c0a0  25 3d b9 0d 49 f2 21 de  20 74 65 78 74 5f 72 6f  |%=..I.!. text_ro|
0000c0b0  77 6c 65 6e 25 28 74 65  78 74 5f 6d 61 78 72 6f  |wlen%(text_maxro|
0000c0c0  77 73 25 29 0d 49 fc 2d  de 20 64 65 66 61 75 6c  |ws%).I.-. defaul|
0000c0d0  74 5f 74 65 78 74 5f 62  6c 6f 63 6b 25 20 74 65  |t_text_block% te|
0000c0e0  78 74 5f 62 6c 6f 63 6b  73 69 7a 65 25 2b 33 30  |xt_blocksize%+30|
0000c0f0  30 0d 4a 06 23 74 65 78  74 5f 62 6c 6f 63 6b 25  |0.J.#text_block%|
0000c100  3d 64 65 66 61 75 6c 74  5f 74 65 78 74 5f 62 6c  |=default_text_bl|
0000c110  6f 63 6b 25 0d 4a 10 1d  64 75 6d 6d 79 5f 73 70  |ock%.J..dummy_sp|
0000c120  63 3d 32 37 3a 64 75 6d  6d 79 5f 63 72 3d 32 35  |c=27:dummy_cr=25|
0000c130  33 0d 4a 1a 21 ef 32 33  2c 64 75 6d 6d 79 5f 73  |3.J.!.23,dummy_s|
0000c140  70 63 2c 30 2c 30 2c 30  2c 30 2c 30 2c 30 2c 30  |pc,0,0,0,0,0,0,0|
0000c150  2c 30 0d 4a 24 20 ef 32  33 2c 64 75 6d 6d 79 5f  |,0.J$ .23,dummy_|
0000c160  63 72 2c 30 2c 30 2c 30  2c 30 2c 30 2c 30 2c 30  |cr,0,0,0,0,0,0,0|
0000c170  2c 30 0d 4a 2e 0f 74 65  78 74 5f 72 6f 77 25 3d  |,0.J..text_row%=|
0000c180  30 0d 4a 38 0f 74 65 78  74 5f 63 6f 6c 25 3d 31  |0.J8.text_col%=1|
0000c190  0d 4a 42 0f 6c 61 73 74  5f 72 6f 77 25 3d 30 0d  |.JB.last_row%=0.|
0000c1a0  4a 4c 0f 74 65 78 74 5f  63 75 72 25 3d b9 0d 4a  |JL.text_cur%=..J|
0000c1b0  56 0f 6f 76 65 72 77 72  69 74 65 3d a3 0d 4a 60  |V.overwrite=..J`|
0000c1c0  0d 74 61 62 5f 73 65 74  3d 35 0d 4a 6a 19 74 65  |.tab_set=5.Jj.te|
0000c1d0  78 74 5f 70 74 72 25 3d  74 65 78 74 5f 62 6c 6f  |xt_ptr%=text_blo|
0000c1e0  63 6b 25 0d 4a 74 19 74  65 78 74 5f 65 6e 64 25  |ck%.Jt.text_end%|
0000c1f0  3d 74 65 78 74 5f 62 6c  6f 63 6b 25 0d 4a 7e 12  |=text_block%.J~.|
0000c200  3f 74 65 78 74 5f 62 6c  6f 63 6b 25 3d 30 0d 4a  |?text_block%=0.J|
0000c210  88 4f 6d 72 6b 3d 30 3a  de 20 6d 61 72 6b 28 31  |.Omrk=0:. mark(1|
0000c220  29 2c 72 6f 77 28 31 29  2c 63 6f 6c 28 31 29 2c  |),row(1),col(1),|
0000c230  63 68 72 28 31 29 2c 61  73 63 28 31 29 3a 63 68  |chr(1),asc(1):ch|
0000c240  72 28 30 29 3d 32 35 34  3a 63 68 72 28 31 29 3d  |r(0)=254:chr(1)=|
0000c250  32 35 35 3a 63 6c 69 70  6c 65 6e 3d 30 0d 4a 92  |255:cliplen=0.J.|
0000c260  05 e1 0d 4a 9c 04 0d 4a  a6 15 dd 20 f2 72 65 6d  |...J...J... .rem|
0000c270  6f 76 65 5f 6d 61 72 6b  65 72 73 0d 4a b0 08 ea  |ove_markers.J...|
0000c280  20 49 25 0d 4a ba 0d e7  20 6d 72 6b 3e 30 20 8c  | I%.J... mrk>0 .|
0000c290  0d 4a c4 0a 6d 72 6b 2d  3d 31 0d 4a ce 10 e3 20  |.J..mrk-=1.J... |
0000c2a0  49 25 3d 30 20 b8 20 6d  72 6b 0d 4a d8 20 3f 6d  |I%=0 . mrk.J. ?m|
0000c2b0  61 72 6b 28 49 25 29 3d  61 73 63 28 49 25 29 3a  |ark(I%)=asc(I%):|
0000c2c0  6d 61 72 6b 28 49 25 29  3d 30 0d 4a e2 05 ed 0d  |mark(I%)=0.J....|
0000c2d0  4a ec 09 6d 72 6b 3d 30  0d 4a f6 05 cd 0d 4b 00  |J..mrk=0.J....K.|
0000c2e0  05 e1 0d 4b 0a 04 0d 4b  14 13 dd 20 a4 66 69 6e  |...K...K... .fin|
0000c2f0  64 5f 6c 61 73 74 72 6f  77 0d 4b 1e 0b ea 20 41  |d_lastrow.K... A|
0000c300  25 2c 42 25 0d 4b 28 1f  41 25 3d 74 65 78 74 5f  |%,B%.K(.A%=text_|
0000c310  62 6c 6f 63 6b 25 3a 42  25 3d 74 65 78 74 5f 65  |block%:B%=text_e|
0000c320  6e 64 25 0d 4b 32 0d d6  20 6c 61 73 74 72 6f 77  |nd%.K2.. lastrow|
0000c330  0d 4b 3c 0e 3d 21 72 6f  77 63 6f 75 6e 74 0d 4b  |.K<.=!rowcount.K|
0000c340  46 04 0d 4b 50 10 dd 20  a4 72 6f 77 28 72 6f 77  |F..KP.. .row(row|
0000c350  25 29 0d 4b 5a 0b ea 20  41 25 2c 42 25 0d 4b 64  |%).KZ.. A%,B%.Kd|
0000c360  1a 41 25 3d 74 65 78 74  5f 62 6c 6f 63 6b 25 3a  |.A%=text_block%:|
0000c370  42 25 3d 72 6f 77 25 0d  4b 6e 09 d6 20 72 6f 77  |B%=row%.Kn.. row|
0000c380  0d 4b 78 10 3d 24 6c 69  6e 65 62 75 66 66 65 72  |.Kx.=$linebuffer|
0000c390  0d 4b 82 04 0d 4b 8c 04  0d 4b 96 2b f4 20 2d 2d  |.K...K...K.+. --|
0000c3a0  2d 2d 2d 2d 20 4f 62 6a  65 63 74 20 65 64 69 74  |---- Object edit|
0000c3b0  6f 72 20 75 74 69 6c 69  74 69 65 73 20 2d 2d 2d  |or utilities ---|
0000c3c0  2d 2d 2d 0d 4b a0 04 0d  4b aa 10 dd 20 f2 66 69  |---.K...K... .fi|
0000c3d0  72 73 74 5f 6f 62 6a 0d  4b b4 14 f2 73 74 6f 72  |rst_obj.K...stor|
0000c3e0  65 5f 6f 62 6a 28 6f 70  74 72 29 0d 4b be 0a 6f  |e_obj(optr).K..o|
0000c3f0  70 74 72 3d 31 0d 4b c8  13 f2 72 65 73 74 6f 72  |ptr=1.K...restor|
0000c400  65 5f 6f 62 6a 28 31 29  0d 4b d2 05 e1 0d 4b dc  |e_obj(1).K....K.|
0000c410  04 0d 4b e6 0f dd 20 f2  6c 61 73 74 5f 6f 62 6a  |..K... .last_obj|
0000c420  0d 4b f0 14 f2 73 74 6f  72 65 5f 6f 62 6a 28 6f  |.K...store_obj(o|
0000c430  70 74 72 29 0d 4b fa 14  6f 70 74 72 3d 6c 61 73  |ptr).K..optr=las|
0000c440  74 5f 6f 62 6a 65 63 74  0d 4c 04 16 f2 72 65 73  |t_object.L...res|
0000c450  74 6f 72 65 5f 6f 62 6a  28 6f 70 74 72 29 0d 4c  |tore_obj(optr).L|
0000c460  0e 05 e1 0d 4c 18 04 0d  4c 22 0f dd 20 f2 6e 65  |....L...L".. .ne|
0000c470  78 74 5f 6f 62 6a 0d 4c  2c 14 f2 73 74 6f 72 65  |xt_obj.L,..store|
0000c480  5f 6f 62 6a 28 6f 70 74  72 29 0d 4c 36 0b 6f 70  |_obj(optr).L6.op|
0000c490  74 72 2b 3d 31 0d 4c 40  1d e7 20 6f 70 74 72 3e  |tr+=1.L@.. optr>|
0000c4a0  6d 61 78 6f 62 73 20 6f  70 74 72 3d 6d 61 78 6f  |maxobs optr=maxo|
0000c4b0  62 73 0d 4c 4a 16 f2 72  65 73 74 6f 72 65 5f 6f  |bs.LJ..restore_o|
0000c4c0  62 6a 28 6f 70 74 72 29  0d 4c 54 05 e1 0d 4c 5e  |bj(optr).LT...L^|
0000c4d0  04 0d 4c 68 0f dd 20 f2  70 72 65 76 5f 6f 62 6a  |..Lh.. .prev_obj|
0000c4e0  0d 4c 72 14 f2 73 74 6f  72 65 5f 6f 62 6a 28 6f  |.Lr..store_obj(o|
0000c4f0  70 74 72 29 0d 4c 7c 0b  6f 70 74 72 2d 3d 31 0d  |ptr).L|.optr-=1.|
0000c500  4c 86 13 e7 20 6f 70 74  72 3c 31 20 6f 70 74 72  |L... optr<1 optr|
0000c510  3d 31 0d 4c 90 16 f2 72  65 73 74 6f 72 65 5f 6f  |=1.L...restore_o|
0000c520  62 6a 28 6f 70 74 72 29  0d 4c 9a 05 e1 0d 4c a4  |bj(optr).L....L.|
0000c530  04 0d 4c ae 16 dd 20 f2  66 77 64 5f 6f 62 6a 28  |..L... .fwd_obj(|
0000c540  74 69 6d 65 73 25 29 0d  4c b8 14 f2 73 74 6f 72  |times%).L...stor|
0000c550  65 5f 6f 62 6a 28 6f 70  74 72 29 0d 4c c2 2c 6f  |e_obj(optr).L.,o|
0000c560  70 74 72 2b 3d 74 69 6d  65 73 25 3a e7 20 6f 70  |ptr+=times%:. op|
0000c570  74 72 3e 6d 61 78 6f 62  73 20 8c 20 6f 70 74 72  |tr>maxobs . optr|
0000c580  3d 6d 61 78 6f 62 73 0d  4c cc 16 f2 72 65 73 74  |=maxobs.L...rest|
0000c590  6f 72 65 5f 6f 62 6a 28  6f 70 74 72 29 0d 4c d6  |ore_obj(optr).L.|
0000c5a0  05 e1 0d 4c e0 04 0d 4c  ea 19 dd 20 f2 72 65 77  |...L...L... .rew|
0000c5b0  69 6e 64 5f 6f 62 6a 28  74 69 6d 65 73 25 29 0d  |ind_obj(times%).|
0000c5c0  4c f4 14 f2 73 74 6f 72  65 5f 6f 62 6a 28 6f 70  |L...store_obj(op|
0000c5d0  74 72 29 0d 4c fe 22 6f  70 74 72 2d 3d 74 69 6d  |tr).L."optr-=tim|
0000c5e0  65 73 25 3a e7 20 6f 70  74 72 3c 31 20 8c 20 6f  |es%:. optr<1 . o|
0000c5f0  70 74 72 3d 31 0d 4d 08  16 f2 72 65 73 74 6f 72  |ptr=1.M...restor|
0000c600  65 5f 6f 62 6a 28 6f 70  74 72 29 0d 4d 12 05 e1  |e_obj(optr).M...|
0000c610  0d 4d 1c 04 0d 4d 26 14  dd 20 f2 73 74 6f 72 65  |.M...M&.. .store|
0000c620  5f 6f 62 6a 28 6f 25 29  0d 4d 30 47 f4 20 54 68  |_obj(o%).M0G. Th|
0000c630  69 73 20 72 65 61 64 73  20 74 68 65 20 6f 62 6a  |is reads the obj|
0000c640  65 63 74 20 64 61 74 61  20 66 72 6f 6d 20 74 68  |ect data from th|
0000c650  65 20 77 72 69 74 65 61  62 6c 65 20 69 63 6f 6e  |e writeable icon|
0000c660  73 20 69 6e 20 74 68 65  20 77 69 6e 64 6f 77 0d  |s in the window.|
0000c670  4d 3a 37 f4 20 61 6e 64  20 73 74 6f 72 65 73 20  |M:7. and stores |
0000c680  69 74 20 69 6e 20 74 68  65 20 6f 62 6a 65 63 74  |it in the object|
0000c690  20 64 61 74 61 20 61 72  65 61 20 28 6f 64 61 74  | data area (odat|
0000c6a0  61 25 2e 2e 2e 29 0d 4d  44 0d ea 20 6f 6c 64 64  |a%...).MD.. oldd|
0000c6b0  61 74 61 0d 4d 4e 10 70  74 72 3d 6f 25 2a 6f 5f  |ata.MN.ptr=o%*o_|
0000c6c0  6c 65 6e 0d 4d 58 04 0d  4d 62 0f e3 20 49 25 3d  |len.MX..Mb.. I%=|
0000c6d0  38 20 b8 20 31 35 0d 4d  6c 2c 20 20 69 63 6f 6e  |8 . 15.Ml,  icon|
0000c6e0  64 61 74 61 3d bb 28 a4  67 65 74 69 63 6f 6e 64  |data=.(.geticond|
0000c6f0  61 74 61 28 6f 62 6a 68  61 6e 64 6c 65 2c 49 25  |ata(objhandle,I%|
0000c700  29 29 0d 4d 76 0d 20 20  c8 8e 20 49 25 20 ca 0d  |)).Mv.  .. I% ..|
0000c710  4d 80 15 20 20 20 20 c9  20 31 30 2c 31 31 2c 31  |M..    . 10,11,1|
0000c720  32 2c 31 33 0d 4d 8a 20  20 20 20 20 f4 20 54 68  |2,13.M.     . Th|
0000c730  65 20 64 6f 75 62 6c 65  2d 62 79 74 65 20 76 61  |e double-byte va|
0000c740  6c 75 65 73 0d 4d 94 31  20 20 20 20 6f 6c 64 64  |lues.M.1    oldd|
0000c750  61 74 61 3d 3f 28 6f 64  61 74 61 25 2b 70 74 72  |ata=?(odata%+ptr|
0000c760  29 2b 3f 28 6f 64 61 74  61 25 2b 70 74 72 2b 31  |)+?(odata%+ptr+1|
0000c770  29 2a 32 35 36 0d 4d 9e  2a 20 20 20 20 e7 20 69  |)*256.M.*    . i|
0000c780  63 6f 6e 64 61 74 61 3c  3e 6f 6c 64 64 61 74 61  |condata<>olddata|
0000c790  20 8c 20 64 61 74 61 5f  73 61 76 65 64 3d a3 0d  | . data_saved=..|
0000c7a0  4d a8 24 20 20 20 20 3f  28 6f 64 61 74 61 25 2b  |M.$    ?(odata%+|
0000c7b0  70 74 72 29 3d 69 63 6f  6e 64 61 74 61 20 83 20  |ptr)=icondata . |
0000c7c0  32 35 36 0d 4d b2 26 20  20 20 20 3f 28 6f 64 61  |256.M.&    ?(oda|
0000c7d0  74 61 25 2b 70 74 72 2b  31 29 3d 69 63 6f 6e 64  |ta%+ptr+1)=icond|
0000c7e0  61 74 61 20 81 20 32 35  36 0d 4d bc 0e 20 20 20  |ata . 256.M..   |
0000c7f0  20 70 74 72 2b 3d 32 0d  4d c6 13 20 20 20 20 c9  | ptr+=2.M..    .|
0000c800  20 38 2c 39 2c 31 34 2c  31 35 0d 4d d0 20 20 20  | 8,9,14,15.M.   |
0000c810  20 20 f4 20 54 68 65 20  73 69 6e 67 6c 65 2d 62  |  . The single-b|
0000c820  79 74 65 20 76 61 6c 75  65 73 0d 4d da 1d 20 20  |yte values.M..  |
0000c830  20 20 6f 6c 64 64 61 74  61 3d 3f 28 6f 64 61 74  |  olddata=?(odat|
0000c840  61 25 2b 70 74 72 29 0d  4d e4 30 20 20 20 20 e7  |a%+ptr).M.0    .|
0000c850  20 6f 6c 64 64 61 74 61  3c 3e 69 63 6f 6e 64 61  | olddata<>iconda|
0000c860  74 61 20 83 20 32 35 36  20 8c 20 64 61 74 61 5f  |ta . 256 . data_|
0000c870  73 61 76 65 64 3d a3 0d  4d ee 2b 20 20 20 20 3f  |saved=..M.+    ?|
0000c880  28 6f 64 61 74 61 25 2b  70 74 72 29 3d 69 63 6f  |(odata%+ptr)=ico|
0000c890  6e 64 61 74 61 20 83 20  32 35 36 3a 70 74 72 2b  |ndata . 256:ptr+|
0000c8a0  3d 31 0d 4d f8 07 20 20  cb 0d 4e 02 05 ed 0d 4e  |=1.M..  ..N....N|
0000c8b0  0c 11 e7 20 63 6f 6e 74  61 69 6e 65 72 20 8c 0d  |... container ..|
0000c8c0  4e 16 4a 3f 28 6f 64 61  74 61 25 2b 70 74 72 29  |N.J?(odata%+ptr)|
0000c8d0  3d 3f 28 6f 64 61 74 61  25 2b 70 74 72 29 20 84  |=?(odata%+ptr) .|
0000c8e0  20 25 31 30 30 30 30 30  30 30 3a 70 74 72 2b 3d  | %10000000:ptr+=|
0000c8f0  31 3a 3f 28 6f 64 61 74  61 25 2b 70 74 72 29 3d  |1:?(odata%+ptr)=|
0000c900  63 6f 6e 74 5f 72 6f 6f  6d 0d 4e 20 05 cc 0d 4e  |cont_room.N ...N|
0000c910  2a 42 3f 28 6f 64 61 74  61 25 2b 70 74 72 29 3d  |*B?(odata%+ptr)=|
0000c920  3f 28 6f 64 61 74 61 25  2b 70 74 72 29 20 80 20  |?(odata%+ptr) . |
0000c930  25 30 31 31 31 31 31 31  31 3a 70 74 72 2b 3d 31  |%01111111:ptr+=1|
0000c940  3a 3f 28 6f 64 61 74 61  25 2b 70 74 72 29 3d 30  |:?(odata%+ptr)=0|
0000c950  0d 4e 34 05 cd 0d 4e 3e  05 e1 0d 4e 48 04 0d 4e  |.N4...N>...NH..N|
0000c960  52 16 dd 20 f2 72 65 73  74 6f 72 65 5f 6f 62 6a  |R.. .restore_obj|
0000c970  28 6f 25 29 0d 4e 5c 48  f4 20 54 68 69 73 20 72  |(o%).N\H. This r|
0000c980  65 61 64 73 20 74 68 65  20 64 61 74 61 20 66 6f  |eads the data fo|
0000c990  72 20 6f 62 6a 65 63 74  20 6f 25 20 66 72 6f 6d  |r object o% from|
0000c9a0  20 6d 65 6d 6f 72 79 20  61 6e 64 20 75 70 64 61  | memory and upda|
0000c9b0  74 65 73 20 74 68 65 20  69 63 6f 6e 0d 4e 66 3b  |tes the icon.Nf;|
0000c9c0  f4 20 63 6f 6e 74 65 6e  74 73 2c 20 65 6e 73 75  |. contents, ensu|
0000c9d0  72 69 6e 67 20 74 68 65  20 77 69 6e 64 6f 77 20  |ring the window |
0000c9e0  72 65 66 6c 65 63 74 73  20 74 68 65 20 6e 65 77  |reflects the new|
0000c9f0  20 76 61 6c 75 65 73 0d  4e 70 04 0d 4e 7a 10 70  | values.Np..Nz.p|
0000ca00  74 72 3d 6f 25 2a 6f 5f  6c 65 6e 0d 4e 84 28 f2  |tr=o%*o_len.N.(.|
0000ca10  63 68 61 6e 67 65 69 63  6f 6e 28 6f 62 6a 68 61  |changeicon(objha|
0000ca20  6e 64 6c 65 2c 37 2c c3  28 6f 25 29 2c 69 63 6f  |ndle,7,.(o%),ico|
0000ca30  6e 25 29 0d 4e 8e 0f e3  20 49 25 3d 38 20 b8 20  |n%).N... I%=8 . |
0000ca40  31 35 0d 4e 98 0d 20 20  c8 8e 20 49 25 20 ca 0d  |15.N..  .. I% ..|
0000ca50  4e a2 47 20 20 20 20 c9  20 31 30 2c 31 31 2c 31  |N.G    . 10,11,1|
0000ca60  32 2c 31 33 3a 64 61 74  61 24 3d c3 28 3f 28 6f  |2,13:data$=.(?(o|
0000ca70  64 61 74 61 25 2b 70 74  72 29 2b 32 35 36 2a 3f  |data%+ptr)+256*?|
0000ca80  28 6f 64 61 74 61 25 2b  70 74 72 2b 31 29 29 3a  |(odata%+ptr+1)):|
0000ca90  70 74 72 2b 3d 32 0d 4e  ac 31 20 20 20 20 c9 20  |ptr+=2.N.1    . |
0000caa0  38 2c 39 2c 31 34 2c 31  35 3a 64 61 74 61 24 3d  |8,9,14,15:data$=|
0000cab0  c3 28 3f 28 6f 64 61 74  61 25 2b 70 74 72 29 29  |.(?(odata%+ptr))|
0000cac0  3a 70 74 72 2b 3d 31 0d  4e b6 07 20 20 cb 0d 4e  |:ptr+=1.N..  ..N|
0000cad0  c0 1c 20 20 e7 20 64 61  74 61 24 3d 22 22 20 8c  |..  . data$="" .|
0000cae0  20 64 61 74 61 24 3d 22  30 22 0d 4e ca 2e 20 20  | data$="0".N..  |
0000caf0  f2 63 68 61 6e 67 65 69  63 6f 6e 28 6f 62 6a 68  |.changeicon(objh|
0000cb00  61 6e 64 6c 65 2c 49 25  2c 64 61 74 61 24 2c 6e  |andle,I%,data$,n|
0000cb10  65 77 69 63 6f 6e 25 29  0d 4e d4 08 ed 20 49 25  |ewicon%).N... I%|
0000cb20  0d 4e de 04 0d 4e e8 23  73 74 6f 72 65 3d 73 6d  |.N...N.#store=sm|
0000cb30  61 6c 6c 5f 61 72 65 61  25 3a 63 6f 6c 25 3d 31  |all_area%:col%=1|
0000cb40  3a 72 6f 77 25 3d 30 0d  4e f2 29 f2 66 69 6c 6c  |:row%=0.N.).fill|
0000cb50  28 73 6d 61 6c 6c 5f 61  72 65 61 25 2c 73 6d 61  |(small_area%,sma|
0000cb60  6c 6c 5f 61 72 65 61 73  69 7a 65 25 2c 31 33 29  |ll_areasize%,13)|
0000cb70  0d 4e fc 0b 70 72 69 6e  74 3d a3 0d 4f 06 21 f2  |.N..print=..O.!.|
0000cb80  70 76 6f 6b 28 a4 66 69  6e 64 6e 6f 75 6e 28 6f  |pvok(.findnoun(o|
0000cb90  25 2c 76 6f 69 64 29 2c  31 2c a3 29 0d 4f 10 33  |%,void),1,.).O.3|
0000cba0  f2 63 68 61 6e 67 65 69  63 6f 6e 28 6f 62 6a 68  |.changeicon(objh|
0000cbb0  61 6e 64 6c 65 2c 31 39  2c 24 73 6d 61 6c 6c 5f  |andle,19,$small_|
0000cbc0  61 72 65 61 25 2c 6e 65  77 69 63 6f 6e 25 29 0d  |area%,newicon%).|
0000cbd0  4f 1a 47 e7 20 28 28 3f  28 6f 64 61 74 61 25 2b  |O.G. ((?(odata%+|
0000cbe0  70 74 72 29 20 80 20 25  31 30 30 30 30 30 30 30  |ptr) . %10000000|
0000cbf0  29 20 81 20 31 32 38 29  3e 30 20 8c 20 63 6f 6e  |) . 128)>0 . con|
0000cc00  74 61 69 6e 65 72 3d b9  20 8b 20 63 6f 6e 74 61  |tainer=. . conta|
0000cc10  69 6e 65 72 3d a3 0d 4f  24 0a 70 74 72 2b 3d 31  |iner=..O$.ptr+=1|
0000cc20  0d 4f 2e 33 63 6f 6e 74  5f 72 6f 6f 6d 3d 3f 28  |.O.3cont_room=?(|
0000cc30  6f 64 61 74 61 25 2b 70  74 72 29 3a 24 63 6f 6e  |odata%+ptr):$con|
0000cc40  74 72 6f 6f 6d 25 3d c3  28 63 6f 6e 74 5f 72 6f  |troom%=.(cont_ro|
0000cc50  6f 6d 29 0d 4f 38 69 e7  20 63 6f 6e 74 61 69 6e  |om).O8i. contain|
0000cc60  65 72 20 f2 63 68 61 6e  67 65 69 63 6f 6e 28 6f  |er .changeicon(o|
0000cc70  62 6a 68 61 6e 64 6c 65  2c 32 36 2c 22 53 49 5a  |bjhandle,26,"SIZ|
0000cc80  45 20 3c 43 3e 22 2c 6e  65 77 69 63 6f 6e 25 29  |E <C>",newicon%)|
0000cc90  20 8b 20 f2 63 68 61 6e  67 65 69 63 6f 6e 28 6f  | . .changeicon(o|
0000cca0  62 6a 68 61 6e 64 6c 65  2c 32 36 2c 22 53 49 5a  |bjhandle,26,"SIZ|
0000ccb0  45 22 2c 6e 65 77 69 63  6f 6e 25 29 0d 4f 42 05  |E",newicon%).OB.|
0000ccc0  e1 0d 4f 4c 04 0d 4f 56  04 0d 4f 60 29 f4 20 2d  |..OL..OV..O`). -|
0000ccd0  2d 2d 2d 2d 2d 20 52 6f  6f 6d 20 65 64 69 74 6f  |----- Room edito|
0000cce0  72 20 75 74 69 6c 69 74  69 65 73 20 2d 2d 2d 2d  |r utilities ----|
0000ccf0  2d 2d 0d 4f 6a 04 0d 4f  74 11 dd 20 f2 66 69 72  |--.Oj..Ot.. .fir|
0000cd00  73 74 5f 72 6f 6f 6d 0d  4f 7e 15 f2 73 74 6f 72  |st_room.O~..stor|
0000cd10  65 5f 72 6f 6f 6d 28 72  70 74 72 29 0d 4f 88 0a  |e_room(rptr).O..|
0000cd20  72 70 74 72 3d 31 0d 4f  92 14 f2 72 65 73 74 6f  |rptr=1.O...resto|
0000cd30  72 65 5f 72 6f 6f 6d 28  31 29 0d 4f 9c 05 e1 0d  |re_room(1).O....|
0000cd40  4f a6 04 0d 4f b0 10 dd  20 f2 6c 61 73 74 5f 72  |O...O... .last_r|
0000cd50  6f 6f 6d 0d 4f ba 15 f2  73 74 6f 72 65 5f 72 6f  |oom.O...store_ro|
0000cd60  6f 6d 28 72 70 74 72 29  0d 4f c4 12 72 70 74 72  |om(rptr).O..rptr|
0000cd70  3d 6c 61 73 74 5f 72 6f  6f 6d 0d 4f ce 17 f2 72  |=last_room.O...r|
0000cd80  65 73 74 6f 72 65 5f 72  6f 6f 6d 28 72 70 74 72  |estore_room(rptr|
0000cd90  29 0d 4f d8 05 e1 0d 4f  e2 04 0d 4f ec 10 dd 20  |).O....O...O... |
0000cda0  f2 6e 65 78 74 5f 72 6f  6f 6d 0d 4f f6 15 f2 73  |.next_room.O...s|
0000cdb0  74 6f 72 65 5f 72 6f 6f  6d 28 72 70 74 72 29 0d  |tore_room(rptr).|
0000cdc0  50 00 0b 72 70 74 72 2b  3d 31 0d 50 0a 1d e7 20  |P..rptr+=1.P... |
0000cdd0  72 70 74 72 3e 6d 61 78  72 6d 73 20 72 70 74 72  |rptr>maxrms rptr|
0000cde0  3d 6d 61 78 72 6d 73 0d  50 14 17 f2 72 65 73 74  |=maxrms.P...rest|
0000cdf0  6f 72 65 5f 72 6f 6f 6d  28 72 70 74 72 29 0d 50  |ore_room(rptr).P|
0000ce00  1e 05 e1 0d 50 28 04 0d  50 32 10 dd 20 f2 70 72  |....P(..P2.. .pr|
0000ce10  65 76 5f 72 6f 6f 6d 0d  50 3c 15 f2 73 74 6f 72  |ev_room.P<..stor|
0000ce20  65 5f 72 6f 6f 6d 28 72  70 74 72 29 0d 50 46 0b  |e_room(rptr).PF.|
0000ce30  72 70 74 72 2d 3d 31 0d  50 50 13 e7 20 72 70 74  |rptr-=1.PP.. rpt|
0000ce40  72 3c 31 20 72 70 74 72  3d 31 0d 50 5a 17 f2 72  |r<1 rptr=1.PZ..r|
0000ce50  65 73 74 6f 72 65 5f 72  6f 6f 6d 28 72 70 74 72  |estore_room(rptr|
0000ce60  29 0d 50 64 05 e1 0d 50  6e 04 0d 50 78 17 dd 20  |).Pd...Pn..Px.. |
0000ce70  f2 66 77 64 5f 72 6f 6f  6d 28 74 69 6d 65 73 25  |.fwd_room(times%|
0000ce80  29 0d 50 82 15 f2 73 74  6f 72 65 5f 72 6f 6f 6d  |).P...store_room|
0000ce90  28 72 70 74 72 29 0d 50  8c 2c 72 70 74 72 2b 3d  |(rptr).P.,rptr+=|
0000cea0  74 69 6d 65 73 25 3a e7  20 72 70 74 72 3e 6d 61  |times%:. rptr>ma|
0000ceb0  78 72 6d 73 20 8c 20 72  70 74 72 3d 6d 61 78 72  |xrms . rptr=maxr|
0000cec0  6d 73 0d 50 96 17 f2 72  65 73 74 6f 72 65 5f 72  |ms.P...restore_r|
0000ced0  6f 6f 6d 28 72 70 74 72  29 0d 50 a0 05 e1 0d 50  |oom(rptr).P....P|
0000cee0  aa 04 0d 50 b4 1a dd 20  f2 72 65 77 69 6e 64 5f  |...P... .rewind_|
0000cef0  72 6f 6f 6d 28 74 69 6d  65 73 25 29 0d 50 be 15  |room(times%).P..|
0000cf00  f2 73 74 6f 72 65 5f 72  6f 6f 6d 28 72 70 74 72  |.store_room(rptr|
0000cf10  29 0d 50 c8 22 72 70 74  72 2d 3d 74 69 6d 65 73  |).P."rptr-=times|
0000cf20  25 3a e7 20 72 70 74 72  3c 31 20 8c 20 72 70 74  |%:. rptr<1 . rpt|
0000cf30  72 3d 31 0d 50 d2 17 f2  72 65 73 74 6f 72 65 5f  |r=1.P...restore_|
0000cf40  72 6f 6f 6d 28 72 70 74  72 29 0d 50 dc 05 e1 0d  |room(rptr).P....|
0000cf50  50 e6 04 0d 50 f0 15 dd  20 f2 73 74 6f 72 65 5f  |P...P... .store_|
0000cf60  72 6f 6f 6d 28 72 25 29  0d 50 fa 10 70 74 72 3d  |room(r%).P..ptr=|
0000cf70  72 25 2a 72 5f 6c 65 6e  0d 51 04 10 e3 20 49 25  |r%*r_len.Q... I%|
0000cf80  3d 33 34 20 b8 20 36 39  0d 51 0e 2d 20 20 69 63  |=34 . 69.Q.-  ic|
0000cf90  6f 6e 64 61 74 61 3d bb  28 a4 67 65 74 69 63 6f  |ondata=.(.getico|
0000cfa0  6e 64 61 74 61 28 72 6f  6f 6d 68 61 6e 64 6c 65  |ndata(roomhandle|
0000cfb0  2c 49 25 29 29 0d 51 18  0c 20 20 c8 8e 20 b9 20  |,I%)).Q..  .. . |
0000cfc0  ca 0d 51 22 17 20 20 20  20 c9 20 49 25 3e 33 35  |..Q".    . I%>35|
0000cfd0  20 80 20 49 25 3c 35 34  0d 51 2c 31 20 20 20 20  | . I%<54.Q,1    |
0000cfe0  6f 6c 64 64 61 74 61 3d  3f 28 72 64 61 74 61 25  |olddata=?(rdata%|
0000cff0  2b 70 74 72 29 2b 3f 28  72 64 61 74 61 25 2b 70  |+ptr)+?(rdata%+p|
0000d000  74 72 2b 31 29 2a 32 35  36 0d 51 36 2a 20 20 20  |tr+1)*256.Q6*   |
0000d010  20 e7 20 69 63 6f 6e 64  61 74 61 3c 3e 6f 6c 64  | . icondata<>old|
0000d020  64 61 74 61 20 8c 20 64  61 74 61 5f 73 61 76 65  |data . data_save|
0000d030  64 3d a3 0d 51 40 24 20  20 20 20 3f 28 72 64 61  |d=..Q@$    ?(rda|
0000d040  74 61 25 2b 70 74 72 29  3d 69 63 6f 6e 64 61 74  |ta%+ptr)=icondat|
0000d050  61 20 83 20 32 35 36 0d  51 4a 26 20 20 20 20 3f  |a . 256.QJ&    ?|
0000d060  28 72 64 61 74 61 25 2b  70 74 72 2b 31 29 3d 69  |(rdata%+ptr+1)=i|
0000d070  63 6f 6e 64 61 74 61 20  81 20 32 35 36 0d 51 54  |condata . 256.QT|
0000d080  0e 20 20 20 20 70 74 72  2b 3d 32 0d 51 5e 17 20  |.    ptr+=2.Q^. |
0000d090  20 20 20 c9 20 49 25 3c  33 36 20 84 20 49 25 3e  |   . I%<36 . I%>|
0000d0a0  35 33 0d 51 68 1d 20 20  20 20 6f 6c 64 64 61 74  |53.Qh.    olddat|
0000d0b0  61 3d 3f 28 72 64 61 74  61 25 2b 70 74 72 29 0d  |a=?(rdata%+ptr).|
0000d0c0  51 72 30 20 20 20 20 e7  20 6f 6c 64 64 61 74 61  |Qr0    . olddata|
0000d0d0  3c 3e 69 63 6f 6e 64 61  74 61 20 83 20 32 35 36  |<>icondata . 256|
0000d0e0  20 8c 20 64 61 74 61 5f  73 61 76 65 64 3d a3 0d  | . data_saved=..|
0000d0f0  51 7c 24 20 20 20 20 3f  28 72 64 61 74 61 25 2b  |Q|$    ?(rdata%+|
0000d100  70 74 72 29 3d 69 63 6f  6e 64 61 74 61 20 83 20  |ptr)=icondata . |
0000d110  32 35 36 0d 51 86 0e 20  20 20 20 70 74 72 2b 3d  |256.Q..    ptr+=|
0000d120  31 0d 51 90 07 20 20 cb  0d 51 9a 08 ed 20 49 25  |1.Q..  ..Q... I%|
0000d130  0d 51 a4 2b 69 63 6f 6e  64 61 74 61 3d bb 28 a4  |.Q.+icondata=.(.|
0000d140  67 65 74 69 63 6f 6e 64  61 74 61 28 72 6f 6f 6d  |geticondata(room|
0000d150  68 61 6e 64 6c 65 2c 37  31 29 29 0d 51 ae 23 3f  |handle,71)).Q.#?|
0000d160  28 72 64 61 74 61 25 2b  70 74 72 2b 31 36 29 3d  |(rdata%+ptr+16)=|
0000d170  69 63 6f 6e 64 61 74 61  20 83 20 32 35 36 0d 51  |icondata . 256.Q|
0000d180  b8 23 3f 28 72 64 61 74  61 25 2b 70 74 72 2b 31  |.#?(rdata%+ptr+1|
0000d190  37 29 3d 69 63 6f 6e 64  61 74 61 20 81 20 32 35  |7)=icondata . 25|
0000d1a0  36 0d 51 c2 05 e1 0d 51  cc 04 0d 51 d6 17 dd 20  |6.Q....Q...Q... |
0000d1b0  f2 72 65 73 74 6f 72 65  5f 72 6f 6f 6d 28 72 25  |.restore_room(r%|
0000d1c0  29 0d 51 e0 10 70 74 72  3d 72 25 2a 72 5f 6c 65  |).Q..ptr=r%*r_le|
0000d1d0  6e 0d 51 ea 2a f2 63 68  61 6e 67 65 69 63 6f 6e  |n.Q.*.changeicon|
0000d1e0  28 72 6f 6f 6d 68 61 6e  64 6c 65 2c 33 33 2c c3  |(roomhandle,33,.|
0000d1f0  28 72 25 29 2c 69 63 6f  6e 25 29 0d 51 f4 10 e3  |(r%),icon%).Q...|
0000d200  20 49 25 3d 33 34 20 b8  20 36 39 0d 51 fe 0c 20  | I%=34 . 69.Q.. |
0000d210  20 c8 8e 20 b9 20 ca 0d  52 08 17 20 20 20 20 c9  | .. . ..R..    .|
0000d220  20 49 25 3e 33 35 20 80  20 49 25 3c 35 34 0d 52  | I%>35 . I%<54.R|
0000d230  12 39 20 20 20 20 64 61  74 61 24 3d c3 28 3f 28  |.9    data$=.(?(|
0000d240  72 64 61 74 61 25 2b 70  74 72 29 2b 32 35 36 2a  |rdata%+ptr)+256*|
0000d250  3f 28 72 64 61 74 61 25  2b 70 74 72 2b 31 29 29  |?(rdata%+ptr+1))|
0000d260  3a 70 74 72 2b 3d 32 0d  52 1c 17 20 20 20 20 c9  |:ptr+=2.R..    .|
0000d270  20 49 25 3c 33 36 20 84  20 49 25 3e 35 33 0d 52  | I%<36 . I%>53.R|
0000d280  26 25 20 20 20 20 64 61  74 61 24 3d c3 28 3f 28  |&%    data$=.(?(|
0000d290  72 64 61 74 61 25 2b 70  74 72 29 29 3a 70 74 72  |rdata%+ptr)):ptr|
0000d2a0  2b 3d 31 0d 52 30 07 20  20 cb 0d 52 3a 1c 20 20  |+=1.R0.  ..R:.  |
0000d2b0  e7 20 64 61 74 61 24 3d  22 22 20 8c 20 64 61 74  |. data$="" . dat|
0000d2c0  61 24 3d 22 30 22 0d 52  44 2f 20 20 f2 63 68 61  |a$="0".RD/  .cha|
0000d2d0  6e 67 65 69 63 6f 6e 28  72 6f 6f 6d 68 61 6e 64  |ngeicon(roomhand|
0000d2e0  6c 65 2c 49 25 2c 64 61  74 61 24 2c 6e 65 77 69  |le,I%,data$,newi|
0000d2f0  63 6f 6e 25 29 0d 52 4e  08 ed 20 49 25 0d 52 58  |con%).RN.. I%.RX|
0000d300  32 64 61 74 61 24 3d c3  28 3f 28 72 64 61 74 61  |2data$=.(?(rdata|
0000d310  25 2b 70 74 72 2b 31 36  29 2b 32 35 36 2a 3f 28  |%+ptr+16)+256*?(|
0000d320  72 64 61 74 61 25 2b 70  74 72 2b 31 37 29 29 0d  |rdata%+ptr+17)).|
0000d330  52 62 1a e7 20 64 61 74  61 24 3d 22 22 20 8c 20  |Rb.. data$="" . |
0000d340  64 61 74 61 24 3d 22 30  22 0d 52 6c 2d f2 63 68  |data$="0".Rl-.ch|
0000d350  61 6e 67 65 69 63 6f 6e  28 72 6f 6f 6d 68 61 6e  |angeicon(roomhan|
0000d360  64 6c 65 2c 37 31 2c 64  61 74 61 24 2c 6e 65 77  |dle,71,data$,new|
0000d370  69 63 6f 6e 25 29 0d 52  76 05 e1 0d 52 80 04 0d  |icon%).Rv...R...|
0000d380  52 8a 04 0d 52 94 2c f4  20 2d 2d 2d 2d 2d 2d 20  |R...R.,. ------ |
0000d390  4d 65 73 73 61 67 65 20  65 64 69 74 6f 72 20 75  |Message editor u|
0000d3a0  74 69 6c 69 74 69 65 73  20 2d 2d 2d 2d 2d 2d 0d  |tilities ------.|
0000d3b0  52 9e 04 0d 52 a8 10 dd  20 f2 73 74 6f 72 65 5f  |R...R... .store_|
0000d3c0  6d 73 67 0d 52 b2 1d 65  72 72 66 6c 61 67 3d a3  |msg.R..errflag=.|
0000d3d0  3a f2 72 65 6d 6f 76 65  5f 6d 61 72 6b 65 72 73  |:.remove_markers|
0000d3e0  0d 52 bc 20 6e 65 77 6c  65 6e 3d 74 65 78 74 5f  |.R. newlen=text_|
0000d3f0  65 6e 64 25 2d 74 65 78  74 5f 62 6c 6f 63 6b 25  |end%-text_block%|
0000d400  0d 52 c6 16 64 69 66 66  3d 6e 65 77 6c 65 6e 2d  |.R..diff=newlen-|
0000d410  6f 6c 64 6c 65 6e 0d 52  d0 1d e7 20 64 69 66 66  |oldlen.R... diff|
0000d420  2b 74 65 78 74 25 21 32  3e 6d 61 78 74 65 78 74  |+text%!2>maxtext|
0000d430  25 20 8c 0d 52 da 1b 20  20 f2 65 72 72 6f 72 28  |% ..R..  .error(|
0000d440  31 33 2c 65 72 72 6f 72  24 28 33 36 29 29 0d 52  |13,error$(36)).R|
0000d450  e4 0f 20 20 65 72 72 66  6c 61 67 3d b9 0d 52 ee  |..  errflag=..R.|
0000d460  05 cc 0d 52 f8 18 20 20  74 6f 3d 6d 73 74 61 72  |...R..  to=mstar|
0000d470  74 2b 6e 65 77 6c 65 6e  2d 31 0d 53 02 11 20 20  |t+newlen-1.S..  |
0000d480  66 72 6f 6d 3d 6d 65 6e  64 2d 31 0d 53 0c 31 20  |from=mend-1.S.1 |
0000d490  20 74 65 78 74 5f 65 6e  64 25 3d 74 65 78 74 5f  | text_end%=text_|
0000d4a0  62 6c 6f 63 6b 25 3a 74  65 78 74 5f 70 74 72 25  |block%:text_ptr%|
0000d4b0  3d 74 65 78 74 5f 62 6c  6f 63 6b 25 0d 53 16 24  |=text_block%.S.$|
0000d4c0  20 20 62 79 74 65 73 5f  74 6f 5f 6d 6f 76 65 3d  |  bytes_to_move=|
0000d4d0  a4 74 65 78 74 5f 65 6e  64 2d 6d 65 6e 64 2b 31  |.text_end-mend+1|
0000d4e0  0d 53 20 22 20 20 f2 6d  6f 76 65 28 66 72 6f 6d  |.S "  .move(from|
0000d4f0  2c 74 6f 2c 62 79 74 65  73 5f 74 6f 5f 6d 6f 76  |,to,bytes_to_mov|
0000d500  65 29 0d 53 2a 26 20 20  f2 6d 6f 76 65 28 74 65  |e).S*&  .move(te|
0000d510  78 74 5f 62 6c 6f 63 6b  25 2c 6d 73 74 61 72 74  |xt_block%,mstart|
0000d520  2c 6e 65 77 6c 65 6e 29  0d 53 34 16 20 20 f2 69  |,newlen).S4.  .i|
0000d530  6e 63 6d 73 67 6c 65 6e  28 64 69 66 66 29 0d 53  |ncmsglen(diff).S|
0000d540  3e 18 20 20 6e 73 25 3d  73 77 69 74 63 68 5f 76  |>.  ns%=switch_v|
0000d550  61 6c 73 28 30 29 0d 53  48 0f 20 20 e7 20 6e 73  |als(0).SH.  . ns|
0000d560  25 3e 30 20 8c 0d 53 52  1f 20 20 20 20 3f 73 77  |%>0 ..SR.    ?sw|
0000d570  69 74 63 68 5f 62 75 66  25 3d 6e 73 25 3a 70 74  |itch_buf%=ns%:pt|
0000d580  72 25 3d 31 0d 53 5c 14  20 20 20 20 e3 20 49 25  |r%=1.S\.    . I%|
0000d590  3d 31 20 b8 20 6e 73 25  0d 53 66 2a 20 20 20 20  |=1 . ns%.Sf*    |
0000d5a0  20 20 73 77 69 74 63 68  5f 62 75 66 25 3f 70 74  |  switch_buf%?pt|
0000d5b0  72 25 3d 73 77 69 74 63  68 5f 76 61 6c 73 28 49  |r%=switch_vals(I|
0000d5c0  25 29 0d 53 70 34 20 20  20 20 20 20 73 77 69 74  |%).Sp4      swit|
0000d5d0  63 68 5f 62 75 66 25 3f  28 70 74 72 25 2b 31 29  |ch_buf%?(ptr%+1)|
0000d5e0  3d 73 77 69 74 63 68 5f  76 61 6c 73 28 49 25 29  |=switch_vals(I%)|
0000d5f0  20 81 20 32 35 36 0d 53  7a 11 20 20 20 20 20 20  | . 256.Sz.      |
0000d600  70 74 72 25 2b 3d 32 0d  53 84 09 20 20 20 20 ed  |ptr%+=2.S..    .|
0000d610  0d 53 8e 07 20 20 cc 0d  53 98 27 20 20 20 20 f2  |.S..  ..S.'    .|
0000d620  66 69 6c 6c 28 73 77 69  74 63 68 5f 62 75 66 25  |fill(switch_buf%|
0000d630  2c 6d 61 78 73 77 25 2a  32 2b 31 2c 30 29 0d 53  |,maxsw%*2+1,0).S|
0000d640  a2 07 20 20 cd 0d 53 ac  32 20 20 f2 6d 6f 76 65  |..  ..S.2  .move|
0000d650  28 6d 73 74 61 72 74 2c  73 77 6c 6f 63 2b 32 2a  |(mstart,swloc+2*|
0000d660  6e 73 25 2b 31 2c a4 74  65 78 74 5f 65 6e 64 2d  |ns%+1,.text_end-|
0000d670  6d 73 74 61 72 74 29 0d  53 b6 26 20 20 f2 6d 6f  |mstart).S.&  .mo|
0000d680  76 65 28 73 77 69 74 63  68 5f 62 75 66 25 2c 73  |ve(switch_buf%,s|
0000d690  77 6c 6f 63 2c 32 2a 6e  73 25 2b 31 29 0d 53 c0  |wloc,2*ns%+1).S.|
0000d6a0  1f 20 20 f2 69 6e 63 6d  73 67 6c 65 6e 28 32 2a  |.  .incmsglen(2*|
0000d6b0  6e 73 25 2d 32 2a 6f 6c  64 73 77 29 0d 53 ca 05  |ns%-2*oldsw).S..|
0000d6c0  cd 0d 53 d4 05 e1 0d 53  de 04 0d 53 e8 1e dd 20  |..S....S...S... |
0000d6d0  f2 69 6e 63 6d 73 67 6c  65 6e 28 62 79 74 65 73  |.incmsglen(bytes|
0000d6e0  5f 74 6f 5f 61 64 64 29  0d 53 f2 20 74 65 78 74  |_to_add).S. text|
0000d6f0  25 21 32 3d 74 65 78 74  25 21 32 2b 62 79 74 65  |%!2=text%!2+byte|
0000d700  73 5f 74 6f 5f 61 64 64  0d 53 fc 05 e1 0d 54 06  |s_to_add.S....T.|
0000d710  04 0d 54 10 0f dd 20 a4  74 65 78 74 5f 65 6e 64  |..T... .text_end|
0000d720  0d 54 1a 12 3d 74 65 78  74 25 2b 74 65 78 74 25  |.T..=text%+text%|
0000d730  21 32 0d 54 24 04 0d 54  2e 0d dd 20 a4 6d 61 78  |!2.T$..T... .max|
0000d740  6d 73 67 0d 54 38 17 3d  3f 74 65 78 74 25 2b 32  |msg.T8.=?text%+2|
0000d750  35 36 2a 74 65 78 74 25  3f 31 0d 54 42 04 0d 54  |56*text%?1.TB..T|
0000d760  4c 10 dd 20 f2 69 6e 63  6d 61 78 6d 73 67 0d 54  |L.. .incmaxmsg.T|
0000d770  56 26 3f 74 65 78 74 25  2b 3d 31 3a e7 20 3f 74  |V&?text%+=1:. ?t|
0000d780  65 78 74 25 3d 30 20 3f  28 74 65 78 74 25 2b 31  |ext%=0 ?(text%+1|
0000d790  29 2b 3d 31 0d 54 60 05  e1 0d 54 6a 04 0d 54 74  |)+=1.T`...Tj..Tt|
0000d7a0  14 dd 20 f2 73 68 6f 77  5f 6d 73 67 28 6d 73 25  |.. .show_msg(ms%|
0000d7b0  29 0d 54 7e 22 e7 20 6d  73 25 3e a4 6d 61 78 6d  |).T~". ms%>.maxm|
0000d7c0  73 67 20 8c 20 85 20 34  2c 65 72 72 6f 72 24 28  |sg . . 4,error$(|
0000d7d0  33 31 29 0d 54 88 0d e7  20 6d 73 25 3c 31 20 e1  |31).T... ms%<1 .|
0000d7e0  0d 54 92 30 f2 66 69 6c  6c 28 74 65 78 74 5f 62  |.T.0.fill(text_b|
0000d7f0  6c 6f 63 6b 25 2c 74 65  78 74 5f 62 6c 6f 63 6b  |lock%,text_block|
0000d800  73 69 7a 65 25 2c 64 75  6d 6d 79 5f 73 70 63 29  |size%,dummy_spc)|
0000d810  0d 54 9c 26 74 65 78 74  5f 72 6f 77 6c 65 6e 25  |.T.&text_rowlen%|
0000d820  28 29 3d 2b 30 3a 73 77  69 74 63 68 5f 76 61 6c  |()=+0:switch_val|
0000d830  73 28 29 3d 2b 30 0d 54  a6 11 63 68 61 6e 67 65  |s()=+0.T..change|
0000d840  64 5f 6d 73 67 3d b9 0d  54 b0 24 41 25 3d 6d 73  |d_msg=..T.$A%=ms|
0000d850  25 3a 43 25 3d 74 65 78  74 25 2b 37 3a 70 74 72  |%:C%=text%+7:ptr|
0000d860  25 3d ba 20 66 69 6e 64  6d 73 67 0d 54 ba 16 63  |%=. findmsg.T..c|
0000d870  68 72 25 3d 3f 70 74 72  25 3a 70 74 72 25 2b 3d  |hr%=?ptr%:ptr%+=|
0000d880  31 0d 54 c4 2f 73 77 69  74 63 68 5f 76 61 6c 73  |1.T./switch_vals|
0000d890  28 30 29 3d 63 68 72 25  3a 6f 6c 64 73 77 3d 63  |(0)=chr%:oldsw=c|
0000d8a0  68 72 25 3a 73 77 6c 6f  63 3d 70 74 72 25 2d 31  |hr%:swloc=ptr%-1|
0000d8b0  0d 54 ce 0e e7 20 63 68  72 25 3e 30 20 8c 0d 54  |.T... chr%>0 ..T|
0000d8c0  d8 13 20 20 e3 20 49 25  3d 31 20 b8 20 63 68 72  |..  . I%=1 . chr|
0000d8d0  25 0d 54 e2 28 20 20 20  20 73 77 69 74 63 68 5f  |%.T.(    switch_|
0000d8e0  76 61 6c 73 28 49 25 29  3d 3f 70 74 72 25 2b 32  |vals(I%)=?ptr%+2|
0000d8f0  35 36 2a 70 74 72 25 3f  31 0d 54 ec 0f 20 20 20  |56*ptr%?1.T..   |
0000d900  20 70 74 72 25 2b 3d 32  0d 54 f6 07 20 20 ed 0d  | ptr%+=2.T..  ..|
0000d910  55 00 05 cd 0d 55 0a 0f  6d 73 74 61 72 74 3d 70  |U....U..mstart=p|
0000d920  74 72 25 0d 55 14 0e 63  68 72 25 3d 3f 70 74 72  |tr%.U..chr%=?ptr|
0000d930  25 0d 55 1e 20 72 6f 77  25 3d 30 3a 74 65 78 74  |%.U. row%=0:text|
0000d940  5f 70 74 72 25 3d 74 65  78 74 5f 62 6c 6f 63 6b  |_ptr%=text_block|
0000d950  25 0d 55 28 0d c8 95 20  63 68 72 25 3e 30 0d 55  |%.U(... chr%>0.U|
0000d960  32 15 20 20 63 6f 6c 25  3d 31 3a 6c 69 6e 65 24  |2.  col%=1:line$|
0000d970  3d 22 22 0d 55 3c 31 20  20 c8 95 20 63 68 72 25  |="".U<1  .. chr%|
0000d980  3c 3e 31 33 20 80 20 63  68 72 25 3c 3e 30 20 80  |<>13 . chr%<>0 .|
0000d990  20 63 6f 6c 25 3c 3d 74  65 78 74 5f 6d 61 78 6c  | col%<=text_maxl|
0000d9a0  6c 65 6e 25 0d 55 46 12  20 20 e7 20 63 68 72 25  |len%.UF.  . chr%|
0000d9b0  3e 26 37 46 20 8c 0d 55  50 15 20 20 74 6f 6b 70  |>&7F ..UP.  tokp|
0000d9c0  74 72 3d 63 68 72 25 2d  26 37 46 0d 55 5a 2b 20  |tr=chr%-&7F.UZ+ |
0000d9d0  20 6c 69 6e 65 24 2b 3d  74 6f 6b 24 28 74 6f 6b  | line$+=tok$(tok|
0000d9e0  70 74 72 29 3a 4c 25 3d  a9 20 74 6f 6b 24 28 74  |ptr):L%=. tok$(t|
0000d9f0  6f 6b 70 74 72 29 0d 55  64 11 20 20 e3 20 49 25  |okptr).Ud.  . I%|
0000da00  3d 31 20 b8 20 4c 25 0d  55 6e 2e 20 20 3f 28 74  |=1 . L%.Un.  ?(t|
0000da10  65 78 74 5f 70 74 72 25  2b 49 25 2d 31 29 3d 97  |ext_ptr%+I%-1)=.|
0000da20  28 c1 74 6f 6b 24 28 74  6f 6b 70 74 72 29 2c 49  |(.tok$(tokptr),I|
0000da30  25 2c 31 29 29 0d 55 78  07 20 20 ed 0d 55 82 17  |%,1)).Ux.  ..U..|
0000da40  20 20 74 65 78 74 5f 70  74 72 25 2b 3d 28 4c 25  |  text_ptr%+=(L%|
0000da50  2d 31 29 0d 55 8c 07 20  20 cc 0d 55 96 25 20 20  |-1).U..  ..U.%  |
0000da60  20 20 3f 74 65 78 74 5f  70 74 72 25 3d 63 68 72  |  ?text_ptr%=chr|
0000da70  25 3a 6c 69 6e 65 24 2b  3d bd 20 63 68 72 25 0d  |%:line$+=. chr%.|
0000da80  55 a0 07 20 20 cd 0d 55  aa 2f 20 20 20 20 70 74  |U..  ..U./    pt|
0000da90  72 25 2b 3d 31 3a 74 65  78 74 5f 70 74 72 25 2b  |r%+=1:text_ptr%+|
0000daa0  3d 31 3a 63 68 72 25 3d  3f 70 74 72 25 3a 63 6f  |=1:chr%=?ptr%:co|
0000dab0  6c 25 2b 3d 31 0d 55 b4  07 20 20 ce 0d 55 be 20  |l%+=1.U..  ..U. |
0000dac0  20 20 74 65 78 74 5f 72  6f 77 6c 65 6e 25 28 72  |  text_rowlen%(r|
0000dad0  6f 77 25 29 3d a9 20 6c  69 6e 65 24 0d 55 c8 33  |ow%)=. line$.U.3|
0000dae0  20 20 e7 20 63 6f 6c 25  3e 74 65 78 74 5f 6d 61  |  . col%>text_ma|
0000daf0  78 6c 6c 65 6e 25 20 84  20 63 68 72 25 3d 31 33  |xllen% . chr%=13|
0000db00  20 72 6f 77 25 2b 3d 31  3a 63 6f 6c 25 3d 31 0d  | row%+=1:col%=1.|
0000db10  55 d2 32 20 20 e7 20 63  68 72 25 3d 31 33 20 3f  |U.2  . chr%=13 ?|
0000db20  74 65 78 74 5f 70 74 72  25 3d 31 33 3a 74 65 78  |text_ptr%=13:tex|
0000db30  74 5f 70 74 72 25 2b 3d  31 3a 70 74 72 25 2b 3d  |t_ptr%+=1:ptr%+=|
0000db40  31 0d 55 dc 1a 20 20 63  68 72 25 3d 3f 70 74 72  |1.U..  chr%=?ptr|
0000db50  25 3a f4 20 70 74 72 25  2b 3d 31 0d 55 e6 05 ce  |%:. ptr%+=1.U...|
0000db60  0d 55 f0 1d 6d 65 6e 64  3d 70 74 72 25 3a 3f 74  |.U..mend=ptr%:?t|
0000db70  65 78 74 5f 70 74 72 25  3d 63 68 72 25 0d 55 fa  |ext_ptr%=chr%.U.|
0000db80  17 74 65 78 74 5f 65 6e  64 25 3d 74 65 78 74 5f  |.text_end%=text_|
0000db90  70 74 72 25 0d 56 04 16  6f 6c 64 6c 65 6e 3d 6d  |ptr%.V..oldlen=m|
0000dba0  65 6e 64 2d 6d 73 74 61  72 74 0d 56 0e 17 e7 20  |end-mstart.V... |
0000dbb0  6f 6c 64 6c 65 6e 3c 30  20 6f 6c 64 6c 65 6e 3d  |oldlen<0 oldlen=|
0000dbc0  30 0d 56 18 19 74 65 78  74 5f 70 74 72 25 3d 74  |0.V..text_ptr%=t|
0000dbd0  65 78 74 5f 62 6c 6f 63  6b 25 0d 56 22 1b 6c 61  |ext_block%.V".la|
0000dbe0  73 74 5f 72 6f 77 25 3d  a4 66 69 6e 64 5f 6c 61  |st_row%=.find_la|
0000dbf0  73 74 72 6f 77 0d 56 2c  34 e3 20 49 25 3d 30 20  |strow.V,4. I%=0 |
0000dc00  b8 20 6c 61 73 74 5f 72  6f 77 25 3a 74 65 78 74  |. last_row%:text|
0000dc10  5f 72 6f 77 6c 65 6e 25  28 49 25 29 3d a9 20 a4  |_rowlen%(I%)=. .|
0000dc20  72 6f 77 28 49 25 29 3a  ed 0d 56 36 05 e1 0d 56  |row(I%):..V6...V|
0000dc30  40 04 0d 56 4a 0f dd 20  f2 6e 65 78 74 5f 6d 73  |@..VJ.. .next_ms|
0000dc40  67 0d 56 54 0b 6d 70 74  72 2b 3d 31 0d 56 5e 24  |g.VT.mptr+=1.V^$|
0000dc50  f2 73 74 6f 72 65 5f 6d  73 67 3a f4 20 73 61 76  |.store_msg:. sav|
0000dc60  65 20 74 68 69 73 20 6f  6e 65 20 66 69 72 73 74  |e this one first|
0000dc70  0d 56 68 4b e7 20 6d 70  74 72 3e a4 6d 61 78 6d  |.VhK. mptr>.maxm|
0000dc80  73 67 20 8c 20 70 74 72  3d a4 74 65 78 74 5f 65  |sg . ptr=.text_e|
0000dc90  6e 64 3a 70 74 72 3f 30  3d 30 3a 70 74 72 3f 31  |nd:ptr?0=0:ptr?1|
0000dca0  3d 30 3a f2 69 6e 63 6d  61 78 6d 73 67 3a f2 69  |=0:.incmaxmsg:.i|
0000dcb0  6e 63 6d 73 67 6c 65 6e  28 32 29 0d 56 72 39 f2  |ncmsglen(2).Vr9.|
0000dcc0  73 68 6f 77 5f 6d 73 67  28 6d 70 74 72 29 3a f4  |show_msg(mptr):.|
0000dcd0  20 4e 6f 77 20 6c 6f 61  64 20 74 68 65 20 6e 65  | Now load the ne|
0000dce0  78 74 20 6f 6e 65 20 69  6e 74 6f 20 60 74 65 78  |xt one into `tex|
0000dcf0  74 65 64 60 0d 56 7c 3c  f2 72 65 74 69 74 6c 65  |ted`.V|<.retitle|
0000dd00  5f 74 65 78 74 28 22 4d  45 53 53 41 47 45 20 22  |_text("MESSAGE "|
0000dd10  2b c3 6d 70 74 72 29 3a  f4 20 50 52 4f 43 66 6f  |+.mptr):. PROCfo|
0000dd20  72 63 65 52 28 74 65 78  74 68 61 6e 64 6c 65 29  |rceR(texthandle)|
0000dd30  0d 56 86 05 e1 0d 56 90  04 0d 56 9a 0f dd 20 f2  |.V....V...V... .|
0000dd40  70 72 65 76 5f 6d 73 67  0d 56 a4 0e e7 20 6d 70  |prev_msg.V... mp|
0000dd50  74 72 3e 31 20 8c 0d 56  ae 0b 6d 70 74 72 2d 3d  |tr>1 ..V..mptr-=|
0000dd60  31 0d 56 b8 0e f2 73 74  6f 72 65 5f 6d 73 67 0d  |1.V...store_msg.|
0000dd70  56 c2 13 f2 73 68 6f 77  5f 6d 73 67 28 6d 70 74  |V...show_msg(mpt|
0000dd80  72 29 0d 56 cc 23 f2 72  65 74 69 74 6c 65 5f 74  |r).V.#.retitle_t|
0000dd90  65 78 74 28 22 4d 45 53  53 41 47 45 20 22 2b c3  |ext("MESSAGE "+.|
0000dda0  6d 70 74 72 29 0d 56 d6  05 cd 0d 56 e0 05 e1 0d  |mptr).V....V....|
0000ddb0  56 ea 04 0d 56 f4 14 dd  20 f2 67 6f 74 6f 5f 6d  |V...V... .goto_m|
0000ddc0  73 67 28 6d 73 25 29 0d  56 fe 21 e7 20 6d 73 25  |sg(ms%).V.!. ms%|
0000ddd0  3e a4 6d 61 78 6d 73 67  20 6d 73 25 3d a4 6d 61  |>.maxmsg ms%=.ma|
0000dde0  78 6d 73 67 3a ef 20 37  0d 57 08 15 e7 20 6d 73  |xmsg:. 7.W... ms|
0000ddf0  25 3c 31 20 6d 73 25 3d  31 3a ef 20 37 0d 57 12  |%<1 ms%=1:. 7.W.|
0000de00  0e f2 73 74 6f 72 65 5f  6d 73 67 0d 57 1c 12 f2  |..store_msg.W...|
0000de10  73 68 6f 77 5f 6d 73 67  28 6d 73 25 29 0d 57 26  |show_msg(ms%).W&|
0000de20  0c 6d 70 74 72 3d 6d 73  25 0d 57 30 23 f2 72 65  |.mptr=ms%.W0#.re|
0000de30  74 69 74 6c 65 5f 74 65  78 74 28 22 4d 45 53 53  |title_text("MESS|
0000de40  41 47 45 20 22 2b c3 6d  70 74 72 29 0d 57 3a 05  |AGE "+.mptr).W:.|
0000de50  e1 0d 57 44 04 0d 57 4e  0f dd 20 f2 6c 61 73 74  |..WD..WN.. .last|
0000de60  5f 6d 73 67 0d 57 58 0e  f2 73 74 6f 72 65 5f 6d  |_msg.WX..store_m|
0000de70  73 67 0d 57 62 10 6d 70  74 72 3d a4 6d 61 78 6d  |sg.Wb.mptr=.maxm|
0000de80  73 67 0d 57 6c 13 f2 73  68 6f 77 5f 6d 73 67 28  |sg.Wl..show_msg(|
0000de90  6d 70 74 72 29 0d 57 76  23 f2 72 65 74 69 74 6c  |mptr).Wv#.retitl|
0000dea0  65 5f 74 65 78 74 28 22  4d 45 53 53 41 47 45 20  |e_text("MESSAGE |
0000deb0  22 2b c3 6d 70 74 72 29  0d 57 80 05 e1 0d 57 8a  |"+.mptr).W....W.|
0000dec0  04 0d 57 94 10 dd 20 f2  66 69 72 73 74 5f 6d 73  |..W... .first_ms|
0000ded0  67 0d 57 9e 0e f2 73 74  6f 72 65 5f 6d 73 67 0d  |g.W...store_msg.|
0000dee0  57 a8 0a 6d 70 74 72 3d  31 0d 57 b2 13 f2 73 68  |W..mptr=1.W...sh|
0000def0  6f 77 5f 6d 73 67 28 6d  70 74 72 29 0d 57 bc 23  |ow_msg(mptr).W.#|
0000df00  f2 72 65 74 69 74 6c 65  5f 74 65 78 74 28 22 4d  |.retitle_text("M|
0000df10  45 53 53 41 47 45 20 22  2b c3 6d 70 74 72 29 0d  |ESSAGE "+.mptr).|
0000df20  57 c6 05 e1 0d 57 d0 04  0d 57 da 04 0d 57 e4 2c  |W....W...W...W.,|
0000df30  f4 20 2d 2d 2d 2d 2d 2d  20 50 72 6f 67 72 61 6d  |. ------ Program|
0000df40  20 45 64 69 74 6f 72 20  75 74 69 6c 69 74 69 65  | Editor utilitie|
0000df50  73 20 2d 2d 2d 2d 2d 2d  0d 57 ee 04 0d 57 f8 11  |s ------.W...W..|
0000df60  dd 20 f2 73 74 6f 72 65  5f 70 72 6f 67 0d 58 02  |. .store_prog.X.|
0000df70  18 ea 20 73 70 5f 70 74  72 25 2c 6c 69 6e 65 24  |.. sp_ptr%,line$|
0000df80  2c 63 68 72 25 0d 58 0c  1d f4 20 55 73 65 20 60  |,chr%.X... Use `|
0000df90  68 6f 75 72 67 6c 61 73  73 60 20 70 6f 69 6e 74  |hourglass` point|
0000dfa0  65 72 0d 58 16 15 c8 99  20 22 48 6f 75 72 67 6c  |er.X.... "Hourgl|
0000dfb0  61 73 73 5f 4f 6e 22 0d  58 20 1d 65 72 72 66 6c  |ass_On".X .errfl|
0000dfc0  61 67 3d a3 3a f2 72 65  6d 6f 76 65 5f 6d 61 72  |ag=.:.remove_mar|
0000dfd0  6b 65 72 73 0d 58 2a 17  73 70 5f 70 74 72 25 3d  |kers.X*.sp_ptr%=|
0000dfe0  74 65 78 74 5f 62 6c 6f  63 6b 25 0d 58 34 11 63  |text_block%.X4.c|
0000dff0  68 72 25 3d 3f 73 70 5f  70 74 72 25 0d 58 3e 12  |hr%=?sp_ptr%.X>.|
0000e000  70 72 67 70 74 72 3d 70  72 67 62 75 66 25 0d 58  |prgptr=prgbuf%.X|
0000e010  48 24 c8 95 20 73 70 5f  70 74 72 25 3c 74 65 78  |H$.. sp_ptr%<tex|
0000e020  74 5f 65 6e 64 25 20 80  20 ac 20 65 72 72 66 6c  |t_end% . . errfl|
0000e030  61 67 0d 58 52 0e 20 20  6c 69 6e 65 24 3d 22 22  |ag.XR.  line$=""|
0000e040  0d 58 5c 33 20 20 c8 95  20 28 63 68 72 25 3c 3e  |.X\3  .. (chr%<>|
0000e050  31 33 29 20 80 20 28 63  68 72 25 3c 3e 30 29 20  |13) . (chr%<>0) |
0000e060  80 20 28 63 68 72 25 3c  3e 64 75 6d 6d 79 5f 73  |. (chr%<>dummy_s|
0000e070  70 63 29 0d 58 66 15 20  20 20 20 63 68 72 25 3d  |pc).Xf.    chr%=|
0000e080  3f 73 70 5f 70 74 72 25  0d 58 70 12 20 20 20 20  |?sp_ptr%.Xp.    |
0000e090  73 70 5f 70 74 72 25 2b  3d 31 0d 58 7a 16 20 20  |sp_ptr%+=1.Xz.  |
0000e0a0  20 20 6c 69 6e 65 24 2b  3d bd 28 63 68 72 25 29  |  line$+=.(chr%)|
0000e0b0  0d 58 84 07 20 20 ce 0d  58 8e 0b 20 20 f2 73 63  |.X..  ..X..  .sc|
0000e0c0  61 6e 0d 58 98 13 20 20  63 68 72 25 3d 3f 73 70  |an.X..  chr%=?sp|
0000e0d0  5f 70 74 72 25 0d 58 a2  42 20 20 c8 95 20 28 63  |_ptr%.X.B  .. (c|
0000e0e0  68 72 25 3d 31 33 20 84  20 63 68 72 25 3d 64 75  |hr%=13 . chr%=du|
0000e0f0  6d 6d 79 5f 73 70 63 20  84 20 63 68 72 25 3d 30  |mmy_spc . chr%=0|
0000e100  29 20 80 20 28 73 70 5f  70 74 72 25 3c 74 65 78  |) . (sp_ptr%<tex|
0000e110  74 5f 65 6e 64 25 29 0d  58 ac 20 20 20 20 20 73  |t_end%).X.     s|
0000e120  70 5f 70 74 72 25 2b 3d  31 3a 63 68 72 25 3d 3f  |p_ptr%+=1:chr%=?|
0000e130  73 70 5f 70 74 72 25 0d  58 b6 07 20 20 ce 0d 58  |sp_ptr%.X..  ..X|
0000e140  c0 05 ce 0d 58 ca 11 e7  20 ac 20 65 72 72 66 6c  |....X... . errfl|
0000e150  61 67 20 8c 0d 58 d4 33  20 20 6f 6c 64 6c 65 6e  |ag ..X.3  oldlen|
0000e160  25 3d 70 72 67 65 6e 64  2d 70 73 74 61 72 74 3a  |%=prgend-pstart:|
0000e170  e7 20 6f 6c 64 6c 65 6e  25 3c 3e 30 20 6f 6c 64  |. oldlen%<>0 old|
0000e180  6c 65 6e 25 2b 3d 31 0d  58 de 23 20 20 62 79 74  |len%+=1.X.#  byt|
0000e190  65 73 5f 74 6f 5f 6d 6f  76 65 3d a4 70 72 67 6c  |es_to_move=.prgl|
0000e1a0  65 6e 2d 6f 6c 64 6c 65  6e 25 0d 58 e8 1a 20 20  |en-oldlen%.X..  |
0000e1b0  f2 69 6e 63 70 72 67 6c  65 6e 28 2d 6f 6c 64 6c  |.incprglen(-oldl|
0000e1c0  65 6e 25 29 0d 58 f2 1c  20 20 6e 65 77 6c 65 6e  |en%).X..  newlen|
0000e1d0  25 3d 70 72 67 70 74 72  2d 70 72 67 62 75 66 25  |%=prgptr-prgbuf%|
0000e1e0  0d 58 fc 31 20 20 f4 20  54 68 69 73 20 63 68 65  |.X.1  . This che|
0000e1f0  63 6b 20 66 6f 72 20 27  4e 6f 20 72 6f 6f 6d 27  |ck for 'No room'|
0000e200  20 77 61 73 20 61 64 64  65 64 20 32 2e 36 2e 38  | was added 2.6.8|
0000e210  39 0d 59 06 26 20 20 e7  20 a4 70 72 67 6c 65 6e  |9.Y.&  . .prglen|
0000e220  2b 6e 65 77 6c 65 6e 25  3e 63 6f 64 65 5f 73 69  |+newlen%>code_si|
0000e230  7a 65 25 2d 34 20 8c 0d  59 10 1b 20 20 20 20 f2  |ze%-4 ..Y..    .|
0000e240  69 6e 63 70 72 67 6c 65  6e 28 6f 6c 64 6c 65 6e  |incprglen(oldlen|
0000e250  25 29 0d 59 1a 1d 20 20  20 20 f2 65 72 72 6f 72  |%).Y..    .error|
0000e260  28 31 33 2c 65 72 72 6f  72 24 28 33 35 29 29 0d  |(13,error$(35)).|
0000e270  59 24 07 20 20 cc 0d 59  2e 34 20 20 20 20 f2 6d  |Y$.  ..Y.4    .m|
0000e280  6f 76 65 28 70 72 67 65  6e 64 2b 31 2c 70 73 74  |ove(prgend+1,pst|
0000e290  61 72 74 2b 6e 65 77 6c  65 6e 25 2c 62 79 74 65  |art+newlen%,byte|
0000e2a0  73 5f 74 6f 5f 6d 6f 76  65 29 0d 59 38 25 20 20  |s_to_move).Y8%  |
0000e2b0  20 20 f2 6d 6f 76 65 28  70 72 67 62 75 66 25 2c  |  .move(prgbuf%,|
0000e2c0  70 73 74 61 72 74 2c 6e  65 77 6c 65 6e 25 29 0d  |pstart,newlen%).|
0000e2d0  59 42 1b 20 20 20 20 f2  69 6e 63 70 72 67 6c 65  |YB.    .incprgle|
0000e2e0  6e 28 6e 65 77 6c 65 6e  25 29 0d 59 4c 48 20 20  |n(newlen%).YLH  |
0000e2f0  20 20 3f 28 70 72 6f 67  72 61 6d 25 2b 34 2b a4  |  ?(program%+4+.|
0000e300  70 72 67 6c 65 6e 29 3d  30 3a f4 20 72 65 73 74  |prglen)=0:. rest|
0000e310  6f 72 65 20 65 6e 64 20  6f 66 20 70 72 6f 67 72  |ore end of progr|
0000e320  61 6d 20 6d 61 72 6b 65  72 20 28 39 2f 34 2f 38  |am marker (9/4/8|
0000e330  39 29 0d 59 56 11 20 20  20 20 74 65 78 74 5f 6f  |9).YV.    text_o|
0000e340  6b 3d b9 0d 59 60 07 20  20 cd 0d 59 6a 05 cd 0d  |k=..Y`.  ..Yj...|
0000e350  59 74 16 c8 99 20 22 48  6f 75 72 67 6c 61 73 73  |Yt... "Hourglass|
0000e360  5f 4f 66 66 22 0d 59 7e  05 e1 0d 59 88 04 0d 59  |_Off".Y~...Y...Y|
0000e370  92 0d dd 20 a4 70 72 67  6c 65 6e 0d 59 9c 0e 3d  |... .prglen.Y..=|
0000e380  21 70 72 6f 67 72 61 6d  25 0d 59 a6 04 0d 59 b0  |!program%.Y...Y.|
0000e390  17 dd 20 f2 69 6e 63 70  72 67 6c 65 6e 28 62 79  |.. .incprglen(by|
0000e3a0  74 65 73 29 0d 59 ba 1d  21 70 72 6f 67 72 61 6d  |tes).Y..!program|
0000e3b0  25 3d 21 70 72 6f 67 72  61 6d 25 2b 62 79 74 65  |%=!program%+byte|
0000e3c0  73 0d 59 c4 05 e1 0d 59  ce 04 0d 59 d8 04 0d 59  |s.Y....Y...Y...Y|
0000e3d0  e2 2d f4 20 2d 2d 2d 2d  2d 2d 20 57 69 6e 64 6f  |.-. ------ Windo|
0000e3e0  77 20 60 72 65 64 72 61  77 60 20 66 75 6e 63 74  |w `redraw` funct|
0000e3f0  69 6f 6e 73 20 2d 2d 2d  2d 2d 2d 0d 59 ec 04 0d  |ions ------.Y...|
0000e400  59 f6 04 0d 5a 00 19 dd  20 a4 72 65 64 72 61 77  |Y...Z... .redraw|
0000e410  5f 74 65 78 74 28 66 6c  61 67 25 29 0d 5a 0a 2c  |_text(flag%).Z.,|
0000e420  f4 20 66 6c 61 67 25 3d  54 52 55 45 20 2d 3e 20  |. flag%=TRUE -> |
0000e430  72 65 64 72 61 77 20 57  48 4f 4c 45 20 74 65 78  |redraw WHOLE tex|
0000e440  74 20 77 69 6e 64 6f 77  0d 5a 14 2b f4 20 65 6c  |t window.Z.+. el|
0000e450  73 65 20 6f 6e 6c 79 20  72 65 64 72 61 77 20 66  |se only redraw f|
0000e460  72 6f 6d 20 74 68 65 20  63 75 72 73 6f 72 20 6c  |rom the cursor l|
0000e470  69 6e 65 0d 5a 1e 04 0d  5a 28 0c c8 95 20 6d 6f  |ine.Z...Z(... mo|
0000e480  72 65 25 0d 5a 32 25 42  52 25 3d 28 62 79 25 2d  |re%.Z2%BR%=(by%-|
0000e490  62 6c 6f 63 6b 21 33 32  2d 79 70 69 78 65 6c 25  |block!32-ypixel%|
0000e4a0  29 20 81 20 6c 73 59 25  0d 5a 3c 21 e7 20 42 52  |) . lsY%.Z<!. BR|
0000e4b0  25 3e 6c 61 73 74 5f 72  6f 77 25 20 42 52 25 3d  |%>last_row% BR%=|
0000e4c0  6c 61 73 74 5f 72 6f 77  25 0d 5a 46 25 54 52 25  |last_row%.ZF%TR%|
0000e4d0  3d 28 62 79 25 2d 62 6c  6f 63 6b 21 34 30 2d 79  |=(by%-block!40-y|
0000e4e0  70 69 78 65 6c 25 29 20  81 20 6c 73 59 25 0d 5a  |pixel%) . lsY%.Z|
0000e4f0  50 21 e7 20 54 52 25 3e  6c 61 73 74 5f 72 6f 77  |P!. TR%>last_row|
0000e500  25 20 54 52 25 3d 6c 61  73 74 5f 72 6f 77 25 0d  |% TR%=last_row%.|
0000e510  5a 5a 2a 70 74 72 5f 65  6e 64 25 3d 42 52 25 2a  |ZZ*ptr_end%=BR%*|
0000e520  74 65 78 74 5f 6d 61 78  6c 6c 65 6e 25 2b 74 65  |text_maxllen%+te|
0000e530  78 74 5f 62 6c 6f 63 6b  25 0d 5a 64 05 da 0d 5a  |xt_block%.Zd...Z|
0000e540  6e 12 e3 20 49 25 3d 54  52 25 20 b8 20 42 52 25  |n.. I%=TR% . BR%|
0000e550  0d 5a 78 1f 20 20 ec 20  62 78 25 2c 62 79 25 2d  |.Zx.  . bx%,by%-|
0000e560  6c 73 59 25 2a 49 25 2d  79 70 69 78 65 6c 25 0d  |lsY%*I%-ypixel%.|
0000e570  5a 82 11 20 20 f1 20 a4  72 6f 77 28 49 25 29 3b  |Z..  . .row(I%);|
0000e580  0d 5a 8c 05 ed 0d 5a 96  1a c8 99 47 65 74 52 2c  |.Z....Z....GetR,|
0000e590  30 2c 62 6c 6f 63 6b 20  b8 20 6d 6f 72 65 25 0d  |0,block . more%.|
0000e5a0  5a a0 05 ce 0d 5a aa 06  3d 30 0d 5a b4 04 0d 5a  |Z....Z..=0.Z...Z|
0000e5b0  be 04 0d 5a c8 32 f4 20  2d 2d 2d 2d 2d 2d 20 47  |...Z.2. ------ G|
0000e5c0  65 6e 65 72 61 6c 20 69  63 6f 6e 20 68 61 6e 64  |eneral icon hand|
0000e5d0  6c 69 6e 67 20 72 6f 75  74 69 6e 65 73 20 2d 2d  |ling routines --|
0000e5e0  2d 2d 2d 2d 0d 5a d2 04  0d 5a dc 24 dd 20 f2 68  |----.Z...Z.$. .h|
0000e5f0  74 28 68 61 6e 64 6c 65  25 2c 69 63 6f 6e 25 2c  |t(handle%,icon%,|
0000e600  66 6c 24 2c 66 63 25 2c  62 63 25 29 0d 5a e6 0a  |fl$,fc%,bc%).Z..|
0000e610  ea 6d 61 73 6b 25 0d 5a  f0 35 e7 66 6c 24 3d 22  |.mask%.Z.5.fl$="|
0000e620  2a 22 8c 66 6c 25 3d 30  3a 6d 61 73 6b 25 3d 26  |*".fl%=0:mask%=&|
0000e630  46 46 30 30 30 30 30 30  20 8b 66 6c 25 3d a0 66  |FF000000 .fl%=.f|
0000e640  6c 24 3a 6d 61 73 6b 25  3d 2d 31 0d 5a fa 61 21  |l$:mask%=-1.Z.a!|
0000e650  62 6c 6f 63 6b 3d 68 61  6e 64 6c 65 25 3a 62 6c  |block=handle%:bl|
0000e660  6f 63 6b 21 34 3d 69 63  6f 6e 25 3a 62 6c 6f 63  |ock!4=icon%:bloc|
0000e670  6b 21 38 3d 66 6c 25 3a  62 6c 6f 63 6b 3f 31 31  |k!8=fl%:block?11|
0000e680  3d 66 63 25 2b 28 62 63  25 3c 3c 34 29 3a 62 6c  |=fc%+(bc%<<4):bl|
0000e690  6f 63 6b 21 31 32 3d 6d  61 73 6b 25 3a c8 99 20  |ock!12=mask%:.. |
0000e6a0  53 65 74 49 2c 30 2c 62  6c 6f 63 6b 0d 5b 04 05  |SetI,0,block.[..|
0000e6b0  e1 0d 5b 0e 04 0d 5b 18  21 dd 20 a4 67 65 74 69  |..[...[.!. .geti|
0000e6c0  63 6f 6e 64 61 74 61 28  68 61 6e 64 6c 65 25 2c  |condata(handle%,|
0000e6d0  69 63 6f 6e 25 29 0d 5b  22 20 21 62 6c 6f 63 6b  |icon%).[" !block|
0000e6e0  3d 68 61 6e 64 6c 65 25  3a 62 6c 6f 63 6b 21 34  |=handle%:block!4|
0000e6f0  3d 69 63 6f 6e 25 0d 5b  2c 13 c8 99 20 47 65 74  |=icon%.[,... Get|
0000e700  49 2c 30 2c 62 6c 6f 63  6b 0d 5b 36 13 66 6c 61  |I,0,block.[6.fla|
0000e710  67 73 25 3d 62 6c 6f 63  6b 21 32 34 0d 5b 40 42  |gs%=block!24.[@B|
0000e720  e7 20 28 66 6c 61 67 73  25 20 80 20 32 35 36 29  |. (flags% . 256)|
0000e730  3c 3e 30 20 8c 20 64 61  74 61 24 3d 24 28 21 28  |<>0 . data$=$(!(|
0000e740  62 6c 6f 63 6b 2b 32 38  29 29 20 8b 20 64 61 74  |block+28)) . dat|
0000e750  61 24 3d 24 28 62 6c 6f  63 6b 2b 32 38 29 0d 5b  |a$=$(block+28).[|
0000e760  4a 0a 3d 64 61 74 61 24  0d 5b 54 04 0d 5b 5e 2d  |J.=data$.[T..[^-|
0000e770  dd 20 f2 63 68 61 6e 67  65 69 63 6f 6e 28 68 61  |. .changeicon(ha|
0000e780  6e 64 6c 65 25 2c 69 63  6f 6e 25 2c 6e 65 77 24  |ndle%,icon%,new$|
0000e790  2c f8 20 69 63 6f 6e 25  29 0d 5b 68 08 ea 20 4a  |,. icon%).[h.. J|
0000e7a0  25 0d 5b 72 26 64 75 6d  6d 79 24 3d a4 67 65 74  |%.[r&dummy$=.get|
0000e7b0  69 63 6f 6e 64 61 74 61  28 68 61 6e 64 6c 65 25  |icondata(handle%|
0000e7c0  2c 69 63 6f 6e 25 29 0d  5b 7c 40 e7 20 28 66 6c  |,icon%).[|@. (fl|
0000e7d0  61 67 73 25 20 80 20 32  35 36 29 3c 3e 30 20 8c  |ags% . 256)<>0 .|
0000e7e0  20 24 28 21 28 62 6c 6f  63 6b 2b 32 38 29 29 3d  | $(!(block+28))=|
0000e7f0  6e 65 77 24 20 8b 20 24  28 62 6c 6f 63 6b 2b 32  |new$ . $(block+2|
0000e800  38 29 3d 6e 65 77 24 0d  5b 86 16 c8 99 20 44 65  |8)=new$.[.... De|
0000e810  6c 65 74 65 49 2c 30 2c  62 6c 6f 63 6b 0d 5b 90  |leteI,0,block.[.|
0000e820  13 e3 20 4a 25 3d 34 20  b8 20 32 38 20 88 20 34  |.. J%=4 . 28 . 4|
0000e830  0d 5b 9a 1b 20 20 62 6c  6f 63 6b 21 4a 25 3d 62  |.[..  block!J%=b|
0000e840  6c 6f 63 6b 21 28 4a 25  2b 34 29 0d 5b a4 08 ed  |lock!(J%+4).[...|
0000e850  20 4a 25 0d 5b ae 2d 21  62 6c 6f 63 6b 3d 68 61  | J%.[.-!block=ha|
0000e860  6e 64 6c 65 25 3a c8 99  20 43 72 65 61 74 65 49  |ndle%:.. CreateI|
0000e870  2c 30 2c 62 6c 6f 63 6b  20 b8 20 69 63 6f 6e 25  |,0,block . icon%|
0000e880  0d 5b b8 46 f2 73 65 74  5f 69 63 6f 6e 28 68 61  |.[.F.set_icon(ha|
0000e890  6e 64 6c 65 25 2c 69 63  6f 6e 25 2c 30 2c 30 29  |ndle%,icon%,0,0)|
0000e8a0  3a f4 20 65 6e 73 75 72  65 20 69 74 20 61 70 70  |:. ensure it app|
0000e8b0  65 61 72 73 20 75 70 64  61 74 65 64 20 6f 6e 20  |ears updated on |
0000e8c0  73 63 72 65 65 6e 0d 5b  c2 05 e1 0d 5b cc 04 0d  |screen.[....[...|
0000e8d0  5b d6 29 dd 20 f2 73 65  74 5f 69 63 6f 6e 28 68  |[.). .set_icon(h|
0000e8e0  61 6e 64 6c 65 25 2c 69  63 6f 6e 25 2c 65 6f 72  |andle%,icon%,eor|
0000e8f0  25 2c 6d 61 73 6b 25 29  0d 5b e0 3c 21 62 6c 6f  |%,mask%).[.<!blo|
0000e900  63 6b 3d 68 61 6e 64 6c  65 25 3a 62 6c 6f 63 6b  |ck=handle%:block|
0000e910  21 34 3d 69 63 6f 6e 25  3a 62 6c 6f 63 6b 21 38  |!4=icon%:block!8|
0000e920  3d 65 6f 72 25 3a 62 6c  6f 63 6b 21 31 32 3d 6d  |=eor%:block!12=m|
0000e930  61 73 6b 25 0d 5b ea 13  c8 99 20 53 65 74 49 2c  |ask%.[.... SetI,|
0000e940  30 2c 62 6c 6f 63 6b 0d  5b f4 05 e1 0d 5b fe 04  |0,block.[....[..|
0000e950  0d 5c 08 04 0d 5c 12 2c  f4 20 2d 2d 2d 2d 2d 2d  |.\...\.,. ------|
0000e960  20 4d 65 6e 75 20 63 72  65 61 74 69 6f 6e 20 70  | Menu creation p|
0000e970  72 6f 63 65 64 75 72 65  73 20 2d 2d 2d 2d 2d 2d  |rocedures ------|
0000e980  0d 5c 1c 04 0d 5c 26 37  f4 20 2a 2a 2a 2a 20 6f  |.\...\&7. **** o|
0000e990  6e 49 63 6f 6e 42 61 72  20 3d 20 31 20 69 66 20  |nIconBar = 1 if |
0000e9a0  79 65 73 2c 20 6f 74 68  65 72 77 69 73 65 20 30  |yes, otherwise 0|
0000e9b0  20 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 0d 5c 30 27 dd  | **********.\0'.|
0000e9c0  20 a4 6d 65 6e 75 48 65  69 67 68 74 28 74 68 65  | .menuHeight(the|
0000e9d0  4d 65 6e 75 25 2c 20 6f  6e 49 63 6f 6e 42 61 72  |Menu%, onIconBar|
0000e9e0  25 29 0d 5c 3a 43 3d 20  28 28 39 36 20 2a 20 6f  |%).\:C= ((96 * o|
0000e9f0  6e 49 63 6f 6e 42 61 72  25 29 20 2b 20 28 74 68  |nIconBar%) + (th|
0000ea00  65 4d 65 6e 75 25 3f 33  30 20 2a 20 34 34 29 20  |eMenu%?30 * 44) |
0000ea10  2b 20 28 74 68 65 4d 65  6e 75 25 3f 33 31 20 2a  |+ (theMenu%?31 *|
0000ea20  20 32 34 29 29 0d 5c 44  04 0d 5c 4e 04 0d 5c 58  | 24)).\D..\N..\X|
0000ea30  0d dd 20 a4 63 72 6d 65  6e 75 0d 5c 62 2e e7 20  |.. .crmenu.\b.. |
0000ea40  6d 65 6e 75 66 72 65 65  25 2b 32 38 20 3e 20 6d  |menufree%+28 > m|
0000ea50  65 6e 75 65 6e 64 25 20  8c 20 85 20 31 2c 65 72  |enuend% . . 1,er|
0000ea60  72 6f 72 24 28 33 32 29  0d 5c 6c 16 ea 20 6d 25  |ror$(32).\l.. m%|
0000ea70  2c 6d 65 6e 75 24 3a f3  20 6d 65 6e 75 24 0d 5c  |,menu$:. menu$.\|
0000ea80  76 04 0d 5c 80 04 0d 5c  8a 48 f4 20 2a 2a 2a 2a  |v..\...\.H. ****|
0000ea90  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 20 74 68 65 20 62  |********** the b|
0000eaa0  6f 64 67 65 20 74 6f 20  73 74 6f 72 65 20 74 68  |odge to store th|
0000eab0  65 20 6d 65 6e 75 20 68  65 69 67 68 74 20 2a 2a  |e menu height **|
0000eac0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 0d 5c  |**************.\|
0000ead0  94 11 ea 20 6d 65 6e 75  48 69 41 64 64 72 25 0d  |... menuHiAddr%.|
0000eae0  5c 9e 4b 6d 65 6e 75 48  69 41 64 64 72 25 20 3d  |\.KmenuHiAddr% =|
0000eaf0  20 6d 65 6e 75 66 72 65  65 25 20 2b 20 32 38 20  | menufree% + 28 |
0000eb00  2b 20 32 20 3a f4 20 32  6e 64 20 6c 61 73 74 20  |+ 2 :. 2nd last |
0000eb10  62 79 74 65 20 69 6e 20  31 73 74 20 6d 65 6e 75  |byte in 1st menu|
0000eb20  69 74 65 6d 20 66 6c 61  67 73 0d 5c a8 14 6d 65  |item flags.\..me|
0000eb30  6e 75 49 74 65 6d 4e 75  6d 25 20 3d 20 30 0d 5c  |nuItemNum% = 0.\|
0000eb40  b2 14 64 61 73 68 49 74  65 6d 4e 75 6d 25 20 3d  |..dashItemNum% =|
0000eb50  20 30 0d 5c bc 04 0d 5c  c6 04 0d 5c d0 26 e7 20  | 0.\...\...\.&. |
0000eb60  c0 6d 65 6e 75 24 2c 31  29 3d 22 3d 22 20 8c 20  |.menu$,1)="=" . |
0000eb70  6d 65 6e 75 24 3d a0 c1  6d 65 6e 75 24 2c 32 29  |menu$=..menu$,2)|
0000eb80  0d 5c da 16 6d 65 6e 75  70 74 72 25 3d 6d 65 6e  |.\..menuptr%=men|
0000eb90  75 66 72 65 65 25 0d 5c  e4 0f 69 25 3d 30 3a 63  |ufree%.\..i%=0:c|
0000eba0  74 72 25 3d 30 0d 5c ee  3f e7 20 c0 6d 65 6e 75  |tr%=0.\.?. .menu|
0000ebb0  24 2c 31 29 3d 22 23 22  20 8c 20 69 25 3d 31 3a  |$,1)="#" . i%=1:|
0000ebc0  6d 65 6e 75 74 69 74 6c  65 24 3d a4 70 61 72 28  |menutitle$=.par(|
0000ebd0  22 2c 22 29 20 8b 20 6d  65 6e 75 74 69 74 6c 65  |",") . menutitle|
0000ebe0  24 3d 22 22 0d 5c f8 17  49 25 3d a7 6d 65 6e 75  |$="".\..I%=.menu|
0000ebf0  74 69 74 6c 65 24 2c 22  3e 22 29 0d 5d 02 0c e7  |title$,">").]...|
0000ec00  20 49 25 3e 30 20 8c 0d  5d 0c 29 20 20 20 20 20  | I%>0 ..].)     |
0000ec10  6d 65 6e 75 70 74 72 25  21 32 30 3d a0 28 c1 6d  |menuptr%!20=.(.m|
0000ec20  65 6e 75 74 69 74 6c 65  24 2c 49 25 2b 31 29 29  |enutitle$,I%+1))|
0000ec30  0d 5d 16 25 20 20 20 20  20 6d 65 6e 75 74 69 74  |.].%     menutit|
0000ec40  6c 65 24 3d c0 6d 65 6e  75 74 69 74 6c 65 24 2c  |le$=.menutitle$,|
0000ec50  49 25 2d 31 29 0d 5d 20  14 cc 20 6d 65 6e 75 70  |I%-1).] .. menup|
0000ec60  74 72 25 21 32 30 3d 34  34 0d 5d 2a 05 cd 0d 5d  |tr%!20=44.]*...]|
0000ec70  34 18 24 6d 65 6e 75 70  74 72 25 3d 6d 65 6e 75  |4.$menuptr%=menu|
0000ec80  74 69 74 6c 65 24 0d 5d  3e 4f 6d 65 6e 75 70 74  |title$.]>Omenupt|
0000ec90  72 25 3f 31 32 3d 60 74  66 63 6f 6c 3a 6d 65 6e  |r%?12=`tfcol:men|
0000eca0  75 70 74 72 25 3f 31 33  3d 60 74 62 63 6f 6c 3a  |uptr%?13=`tbcol:|
0000ecb0  6d 65 6e 75 70 74 72 25  3f 31 34 3d 60 77 66 63  |menuptr%?14=`wfc|
0000ecc0  6f 6c 3a 6d 65 6e 75 70  74 72 25 3f 31 35 3d 60  |ol:menuptr%?15=`|
0000ecd0  77 62 63 6f 6c 0d 5d 48  24 6d 65 6e 75 70 74 72  |wbcol.]H$menuptr|
0000ece0  25 21 31 36 3d 31 39 36  2d 32 34 3a 6d 65 6e 75  |%!16=196-24:menu|
0000ecf0  70 74 72 25 21 32 34 3d  30 0d 5d 52 24 6d 65 6e  |ptr%!24=0.]R$men|
0000ed00  75 70 74 72 25 2b 3d 32  38 3a 6d 61 78 78 25 3d  |uptr%+=28:maxx%=|
0000ed10  a9 6d 65 6e 75 74 69 74  6c 65 24 2d 33 0d 5d 5c  |.menutitle$-3.]\|
0000ed20  14 c8 95 20 c2 6d 65 6e  75 24 2c 31 29 3d 22 7e  |... .menu$,1)="~|
0000ed30  22 0d 5d 66 1c 20 20 6d  65 6e 75 24 3d c0 6d 65  |".]f.  menu$=.me|
0000ed40  6e 75 24 2c a9 6d 65 6e  75 24 2d 31 29 0d 5d 70  |nu$,.menu$-1).]p|
0000ed50  33 20 20 f5 20 69 74 65  6d 24 3d a4 70 61 72 28  |3  . item$=.par(|
0000ed60  22 2c 22 29 3a f2 6d 65  6e 75 69 74 65 6d 28 69  |","):.menuitem(i|
0000ed70  74 65 6d 24 29 3a fd 20  69 74 65 6d 24 3d 22 22  |tem$):. item$=""|
0000ed80  0d 5d 7a 0d 20 20 f3 20  6d 65 6e 75 24 0d 5d 84  |.]z.  . menu$.].|
0000ed90  05 ce 0d 5d 8e 31 f5 20  69 74 65 6d 24 3d a4 70  |...].1. item$=.p|
0000eda0  61 72 28 22 2c 22 29 3a  f2 6d 65 6e 75 69 74 65  |ar(","):.menuite|
0000edb0  6d 28 69 74 65 6d 24 29  3a fd 20 69 74 65 6d 24  |m(item$):. item$|
0000edc0  3d 22 22 0d 5d 98 23 6d  65 6e 75 70 74 72 25 21  |="".].#menuptr%!|
0000edd0  2d 32 34 3d 28 6d 65 6e  75 70 74 72 25 21 2d 32  |-24=(menuptr%!-2|
0000ede0  34 29 84 26 38 30 0d 5d  a2 26 6d 25 3d 6d 65 6e  |4).&80.].&m%=men|
0000edf0  75 66 72 65 65 25 3a 6d  25 21 31 36 3d 28 6d 61  |ufree%:m%!16=(ma|
0000ee00  78 78 25 2a 38 2b 36 29  2a 64 78 25 0d 5d ac 16  |xx%*8+6)*dx%.]..|
0000ee10  6d 65 6e 75 66 72 65 65  25 3d 6d 65 6e 75 70 74  |menufree%=menupt|
0000ee20  72 25 0d 5d b6 3c 3f 6d  65 6e 75 48 69 41 64 64  |r%.].<?menuHiAdd|
0000ee30  72 25 20 3d 20 6d 65 6e  75 49 74 65 6d 4e 75 6d  |r% = menuItemNum|
0000ee40  25 20 20 20 20 20 20 3a  20 f4 20 74 68 65 20 6e  |%      : . the n|
0000ee50  75 6d 62 65 72 20 6f 66  20 69 74 65 6d 73 0d 5d  |umber of items.]|
0000ee60  c0 3d 3f 28 6d 65 6e 75  48 69 41 64 64 72 25 20  |.=?(menuHiAddr% |
0000ee70  2b 31 29 20 3d 20 64 61  73 68 49 74 65 6d 4e 75  |+1) = dashItemNu|
0000ee80  6d 25 20 3a 20 f4 20 74  68 65 20 6e 75 6d 62 65  |m% : . the numbe|
0000ee90  72 20 6f 66 20 64 61 73  68 65 73 0d 5d ca 07 3d  |r of dashes.]..=|
0000eea0  6d 25 0d 5d d4 04 0d 5d  de 16 dd 20 f2 6d 65 6e  |m%.]...]... .men|
0000eeb0  75 69 74 65 6d 28 74 65  78 74 24 29 0d 5d e8 12  |uitem(text$).]..|
0000eec0  e7 20 74 65 78 74 24 3d  22 22 20 8c 20 e1 0d 5d  |. text$="" . ..]|
0000eed0  f2 2d e7 20 6d 65 6e 75  70 74 72 25 2b 32 34 20  |.-. menuptr%+24 |
0000eee0  3e 20 6d 65 6e 75 65 6e  64 25 20 8c 20 85 20 31  |> menuend% . . 1|
0000eef0  2c 65 72 72 6f 72 24 28  33 32 29 0d 5d fc 11 e7  |,error$(32).]...|
0000ef00  20 74 65 78 74 24 3d 22  26 22 20 8c 0d 5e 06 2b  | text$="&" ..^.+|
0000ef10  20 20 c8 99 20 22 46 6f  6e 74 5f 4c 69 73 74 46  |  .. "Font_ListF|
0000ef20  6f 6e 74 73 22 2c 2c 71  25 2c 63 74 72 25 20 b8  |onts",,q%,ctr% .|
0000ef30  20 2c 2c 63 74 72 25 0d  5e 10 31 20 20 e7 20 63  | ,,ctr%.^.1  . c|
0000ef40  74 72 25 3e 3d 30 20 8c  20 74 65 78 74 24 3d 24  |tr%>=0 . text$=$|
0000ef50  71 25 2b 22 3e 6d 5f 66  73 69 7a 65 25 22 3a 69  |q%+">m_fsize%":i|
0000ef60  25 2d 3d 32 20 8b 20 e1  0d 5e 1a 05 cd 0d 5e 24  |%-=2 . ..^....^$|
0000ef70  0c ea 69 25 2c 66 6c 67  25 0d 5e 2e 04 0d 5e 38  |..i%,flg%.^...^8|
0000ef80  15 6d 65 6e 75 49 74 65  6d 4e 75 6d 25 20 2b 3d  |.menuItemNum% +=|
0000ef90  20 31 0d 5e 42 04 0d 5e  4c 0c 66 6c 67 25 3d 26  | 1.^B..^L.flg%=&|
0000efa0  30 30 0d 5e 56 12 69 25  3d a7 74 65 78 74 24 2c  |00.^V.i%=.text$,|
0000efb0  22 3e 22 29 0d 5e 60 3d  e7 69 25 3e 30 8c 73 75  |">").^`=.i%>0.su|
0000efc0  62 70 74 72 25 3d a0 c1  74 65 78 74 24 2c 69 25  |bptr%=..text$,i%|
0000efd0  2b 31 29 3a 74 65 78 74  24 3d c0 74 65 78 74 24  |+1):text$=.text$|
0000efe0  2c 69 25 2d 31 29 8b 73  75 62 70 74 72 25 3d 2d  |,i%-1).subptr%=-|
0000eff0  31 0d 5e 6a 48 e7 20 c2  74 65 78 74 24 2c 31 29  |1.^jH. .text$,1)|
0000f000  3d 22 23 22 20 8c 20 74  65 78 74 24 3d c0 74 65  |="#" . text$=.te|
0000f010  78 74 24 2c a9 74 65 78  74 24 2d 31 29 3a 66 6c  |xt$,.text$-1):fl|
0000f020  67 25 2b 3d 26 30 32 3a  64 61 73 68 49 74 65 6d  |g%+=&02:dashItem|
0000f030  4e 75 6d 25 20 2b 3d 20  31 0d 5e 74 13 6d 65 6e  |Num% += 1.^t.men|
0000f040  75 70 74 72 25 21 30 3d  66 6c 67 25 0d 5e 7e 16  |uptr%!0=flg%.^~.|
0000f050  6d 65 6e 75 70 74 72 25  21 34 3d 73 75 62 70 74  |menuptr%!4=subpt|
0000f060  72 25 0d 5e 88 18 6d 65  6e 75 70 74 72 25 21 38  |r%.^..menuptr%!8|
0000f070  3d 26 30 37 30 30 30 30  32 31 0d 5e 92 15 e7 20  |=&07000021.^... |
0000f080  c0 74 65 78 74 24 2c 31  29 3d 22 3f 22 20 8c 0d  |.text$,1)="?" ..|
0000f090  5e 9c 1a 20 20 6d 65 6e  75 70 74 72 25 21 38 3d  |^..  menuptr%!8=|
0000f0a0  26 30 37 30 30 30 31 31  41 0d 5e a6 29 20 20 49  |&0700011A.^.)  I|
0000f0b0  25 3d a4 77 6f 72 6b 73  70 61 63 65 28 a9 74 65  |%=.workspace(.te|
0000f0c0  78 74 24 29 3a 24 49 25  3d c1 74 65 78 74 24 2c  |xt$):$I%=.text$,|
0000f0d0  32 29 0d 5e b0 42 20 20  6d 65 6e 75 70 74 72 25  |2).^.B  menuptr%|
0000f0e0  21 31 32 3d 49 25 3a 6d  65 6e 75 70 74 72 25 21  |!12=I%:menuptr%!|
0000f0f0  31 36 3d 73 79 73 74 65  6d 73 70 72 69 74 65 73  |16=systemsprites|
0000f100  25 3a 6d 65 6e 75 70 74  72 25 21 32 30 3d a9 74  |%:menuptr%!20=.t|
0000f110  65 78 74 24 0d 5e ba 05  cc 0d 5e c4 17 20 20 e7  |ext$.^....^..  .|
0000f120  20 c0 74 65 78 74 24 2c  31 29 3d 22 24 22 20 8c  | .text$,1)="$" .|
0000f130  0d 5e ce 16 20 20 20 20  21 6d 65 6e 75 70 74 72  |.^..    !menuptr|
0000f140  25 2b 3d 26 30 34 0d 5e  d8 18 20 20 20 20 6d 65  |%+=&04.^..    me|
0000f150  6e 75 70 74 72 25 21 38  2b 3d 26 31 30 30 0d 5e  |nuptr%!8+=&100.^|
0000f160  e2 16 20 20 20 20 69 25  3d a7 74 65 78 74 24 2c  |..    i%=.text$,|
0000f170  22 28 22 29 0d 5e ec 37  20 20 20 20 e7 69 25 3e  |"(").^.7    .i%>|
0000f180  30 8c 4c 25 3d bb c1 74  65 78 74 24 2c 69 25 2b  |0.L%=..text$,i%+|
0000f190  31 29 3a 74 65 78 74 24  3d c0 74 65 78 74 24 2c  |1):text$=.text$,|
0000f1a0  69 25 2d 31 29 8b 4c 25  3d 31 32 0d 5e f6 3e 20  |i%-1).L%=12.^.> |
0000f1b0  20 20 20 6d 65 6e 75 70  74 72 25 21 31 32 3d a0  |   menuptr%!12=.|
0000f1c0  28 c1 74 65 78 74 24 2c  32 29 29 3a 6d 65 6e 75  |(.text$,2)):menu|
0000f1d0  70 74 72 25 21 31 36 3d  2d 31 3a 6d 65 6e 75 70  |ptr%!16=-1:menup|
0000f1e0  74 72 25 21 32 30 3d 4c  25 0d 5f 00 16 20 20 20  |tr%!20=L%._..   |
0000f1f0  20 74 65 78 74 24 3d c4  4c 25 2c 22 20 22 29 0d  | text$=.L%," ").|
0000f200  5f 0a 07 20 20 cc 0d 5f  14 14 20 20 20 20 e7 a9  |_..  .._..    ..|
0000f210  74 65 78 74 24 3c 3d 31  32 8c 0d 5f 1e 21 20 20  |text$<=12.._.!  |
0000f220  20 20 20 20 20 20 20 24  28 6d 65 6e 75 70 74 72  |       $(menuptr|
0000f230  25 2b 31 32 29 3d 74 65  78 74 24 0d 5f 28 2b 20  |%+12)=text$._(+ |
0000f240  20 20 20 cc 20 49 25 3d  a4 77 6f 72 6b 73 70 61  |   . I%=.workspa|
0000f250  63 65 28 a9 74 65 78 74  24 2b 31 29 3a 24 49 25  |ce(.text$+1):$I%|
0000f260  3d 74 65 78 74 24 0d 5f  32 3f 20 20 20 20 20 20  |=text$._2?      |
0000f270  20 20 20 6d 65 6e 75 70  74 72 25 21 31 32 3d 49  |   menuptr%!12=I|
0000f280  25 3a 6d 65 6e 75 70 74  72 25 21 31 36 3d 2d 31  |%:menuptr%!16=-1|
0000f290  3a 6d 65 6e 75 70 74 72  25 21 32 30 3d a9 74 65  |:menuptr%!20=.te|
0000f2a0  78 74 24 2b 31 0d 5f 3c  29 20 20 20 20 20 20 20  |xt$+1._<)       |
0000f2b0  20 20 6d 65 6e 75 70 74  72 25 21 38 3d 6d 65 6e  |  menuptr%!8=men|
0000f2c0  75 70 74 72 25 21 38 20  84 20 26 31 30 30 0d 5f  |uptr%!8 . &100._|
0000f2d0  46 09 20 20 20 20 cd 0d  5f 50 07 20 20 cd 0d 5f  |F.    .._P.  .._|
0000f2e0  5a 20 20 20 e7 a9 74 65  78 74 24 3e 6d 61 78 78  |Z   ..text$>maxx|
0000f2f0  25 8c 6d 61 78 78 25 3d  a9 74 65 78 74 24 0d 5f  |%.maxx%=.text$._|
0000f300  64 05 cd 0d 5f 6e 10 6d  65 6e 75 70 74 72 25 2b  |d..._n.menuptr%+|
0000f310  3d 32 34 0d 5f 78 05 e1  0d 5f 82 05 20 0d 5f 8c  |=24._x..._.. ._.|
0000f320  10 dd 20 a4 70 61 72 28  73 65 70 24 29 0d 5f 96  |.. .par(sep$)._.|
0000f330  25 69 31 25 3d 69 25 2b  31 3a 69 25 3d a7 6d 65  |%i1%=i%+1:i%=.me|
0000f340  6e 75 24 2b 73 65 70 24  2c 73 65 70 24 2c 69 31  |nu$+sep$,sep$,i1|
0000f350  25 29 0d 5f a0 17 3d c1  6d 65 6e 75 24 2c 69 31  |%)._..=.menu$,i1|
0000f360  25 2c 69 25 2d 69 31 25  29 0d 5f aa 04 0d 5f b4  |%,i%-i1%)._..._.|
0000f370  14 dd 20 a4 77 6f 72 6b  73 70 61 63 65 28 4c 25  |.. .workspace(L%|
0000f380  29 0d 5f be 32 e7 20 63  75 72 62 75 66 66 25 2b  |)._.2. curbuff%+|
0000f390  4c 25 3e 62 75 66 66 65  72 25 2b 6d 61 78 62 75  |L%>buffer%+maxbu|
0000f3a0  66 25 20 8c 20 85 20 31  2c 65 72 72 6f 72 24 28  |f% . . 1,error$(|
0000f3b0  33 33 29 0d 5f c8 1d 63  75 72 62 75 66 66 25 2b  |33)._..curbuff%+|
0000f3c0  3d 4c 25 3a 3d 63 75 72  62 75 66 66 25 2d 4c 25  |=L%:=curbuff%-L%|
0000f3d0  0d 5f d2 04 0d 5f dc 04  0d 5f e6 39 f4 20 2d 2d  |._..._..._.9. --|
0000f3e0  2d 2d 2d 2d 20 50 72 6f  63 65 64 75 72 65 73 20  |---- Procedures |
0000f3f0  74 6f 20 69 6e 74 65 72  66 61 63 65 20 77 69 74  |to interface wit|
0000f400  68 20 41 52 4d 20 63 6f  64 65 20 2d 2d 2d 2d 2d  |h ARM code -----|
0000f410  2d 0d 5f f0 04 0d 5f fa  22 dd 20 f2 6d 6f 76 65  |-._..._.". .move|
0000f420  28 66 72 6f 6d 2c 74 6f  2c 62 79 74 65 73 5f 74  |(from,to,bytes_t|
0000f430  6f 5f 6d 6f 76 65 29 0d  60 04 19 e7 20 62 79 74  |o_move).`... byt|
0000f440  65 73 5f 74 6f 5f 6d 6f  76 65 3d 30 20 8c 20 e1  |es_to_move=0 . .|
0000f450  0d 60 0e 22 41 25 3d 66  72 6f 6d 3a 42 25 3d 74  |.`."A%=from:B%=t|
0000f460  6f 3a 43 25 3d 62 79 74  65 73 5f 74 6f 5f 6d 6f  |o:C%=bytes_to_mo|
0000f470  76 65 0d 60 18 0a d6 20  6d 6f 76 65 0d 60 22 05  |ve.`... move.`".|
0000f480  e1 0d 60 2c 04 0d 60 36  1f dd 20 f2 66 69 6c 6c  |..`,..`6.. .fill|
0000f490  28 73 74 61 72 74 2c 62  79 74 65 73 2c 66 69 6c  |(start,bytes,fil|
0000f4a0  6c 65 72 29 0d 60 40 1f  41 25 3d 73 74 61 72 74  |ler).`@.A%=start|
0000f4b0  3a 42 25 3d 62 79 74 65  73 3a 43 25 3d 66 69 6c  |:B%=bytes:C%=fil|
0000f4c0  6c 65 72 0d 60 4a 09 d6  66 69 6c 6c 0d 60 54 05  |ler.`J..fill.`T.|
0000f4d0  e1 0d 60 5e 04 0d 60 68  04 0d 60 72 23 f4 20 2d  |..`^..`h..`r#. -|
0000f4e0  2d 2d 2d 2d 2d 20 41 52  4d 20 73 6f 75 72 63 65  |----- ARM source|
0000f4f0  20 63 6f 64 65 20 2d 2d  2d 2d 2d 2d 0d 60 7c 04  | code ------.`|.|
0000f500  0d 60 86 16 dd 20 f2 61  73 73 65 6d 62 6c 65 28  |.`... .assemble(|
0000f510  61 64 64 72 25 29 0d 60  90 0a ea 20 70 61 73 73  |addr%).`... pass|
0000f520  0d 60 9a 11 73 70 3d 31  33 3a 6c 69 6e 6b 3d 31  |.`..sp=13:link=1|
0000f530  34 0d 60 a4 14 e3 20 70  61 73 73 3d 30 20 b8 20  |4.`... pass=0 . |
0000f540  32 20 88 20 32 0d 60 ae  0c 50 25 3d 61 64 64 72  |2 . 2.`..P%=addr|
0000f550  25 0d 60 b8 0d 5b 4f 50  54 20 70 61 73 73 0d 60  |%.`..[OPT pass.`|
0000f560  c2 15 2e 66 69 6c 6c 20  20 20 20 20 62 20 66 69  |...fill     b fi|
0000f570  6c 6c 32 0d 60 cc 19 2e  6d 6f 76 65 20 20 20 20  |ll2.`...move    |
0000f580  20 62 20 62 6c 6f 63 6b  6d 6f 76 65 0d 60 d6 04  | b blockmove.`..|
0000f590  0d 60 e0 0a 2e 66 69 6c  6c 32 0d 60 ea 3f 5c 20  |.`...fill2.`.?\ |
0000f5a0  72 30 3d 73 74 61 72 74  20 61 64 64 72 65 73 73  |r0=start address|
0000f5b0  20 72 31 3d 6e 75 6d 62  65 72 20 6f 66 20 62 79  | r1=number of by|
0000f5c0  74 65 73 20 72 32 3d 76  61 6c 75 65 20 74 6f 20  |tes r2=value to |
0000f5d0  66 69 6c 6c 20 77 69 74  68 0d 60 f4 21 5c 20 61  |fill with.`.!\ a|
0000f5e0  6c 6c 20 72 65 67 69 73  74 65 72 73 20 61 72 65  |ll registers are|
0000f5f0  20 70 72 65 73 65 72 76  65 64 0d 60 fe 1c 73 74  | preserved.`..st|
0000f600  6d 66 64 20 28 73 70 29  21 2c 7b 72 30 2d 72 33  |mfd (sp)!,{r0-r3|
0000f610  2c 6c 69 6e 6b 7d 0d 61  08 0d 6d 6f 76 20 72 33  |,link}.a..mov r3|
0000f620  2c 72 30 0d 61 12 10 61  64 64 20 72 33 2c 72 33  |,r0.a..add r3,r3|
0000f630  2c 72 31 0d 61 1c 0d 2e  66 69 6c 6c 6c 6f 6f 70  |,r1.a...fillloop|
0000f640  0d 61 26 13 73 74 72 62  20 72 32 2c 5b 72 30 5d  |.a&.strb r2,[r0]|
0000f650  2c 23 31 0d 61 30 0d 63  6d 70 20 72 30 2c 72 33  |,#1.a0.cmp r0,r3|
0000f660  0d 61 3a 10 62 6c 74 20  66 69 6c 6c 6c 6f 6f 70  |.a:.blt fillloop|
0000f670  0d 61 44 1a 6c 64 6d 66  64 20 28 73 70 29 21 2c  |.aD.ldmfd (sp)!,|
0000f680  7b 72 30 2d 72 33 2c 50  43 7d 0d 61 4e 04 0d 61  |{r0-r3,PC}.aN..a|
0000f690  58 45 5c 20 47 65 6e 65  72 61 6c 20 70 75 72 70  |XE\ General purp|
0000f6a0  6f 73 65 20 62 6c 6f 63  6b 20 6d 6f 76 65 20 72  |ose block move r|
0000f6b0  6f 75 74 69 6e 65 20 28  75 70 20 6f 72 20 64 6f  |outine (up or do|
0000f6c0  77 6e 20 61 6e 64 20 6f  76 65 72 6c 61 70 70 69  |wn and overlappi|
0000f6d0  6e 67 29 0d 61 62 4a 5c  20 72 30 20 3d 20 60 66  |ng).abJ\ r0 = `f|
0000f6e0  72 6f 6d 60 20 61 64 64  72 65 73 73 2c 20 72 31  |rom` address, r1|
0000f6f0  20 3d 20 60 74 6f 60 20  61 64 64 72 65 73 73 2c  | = `to` address,|
0000f700  20 72 32 20 3d 20 6e 75  6d 62 65 72 20 6f 66 20  | r2 = number of |
0000f710  62 79 74 65 73 20 74 6f  20 6d 6f 76 65 0d 61 6c  |bytes to move.al|
0000f720  0e 2e 62 6c 6f 63 6b 6d  6f 76 65 0d 61 76 0d 63  |..blockmove.av.c|
0000f730  6d 70 20 72 30 2c 72 31  0d 61 80 0e 62 6c 74 20  |mp r0,r1.a..blt |
0000f740  6d 6f 76 65 75 70 0d 61  8a 10 62 61 6c 20 6d 6f  |moveup.a..bal mo|
0000f750  76 65 64 6f 77 6e 0d 61  94 04 0d 61 9e 0d 2e 6d  |vedown.a...a...m|
0000f760  6f 76 65 64 6f 77 6e 0d  61 a8 1c 5c 20 4d 6f 76  |ovedown.a..\ Mov|
0000f770  65 20 6d 65 6d 6f 72 79  20 62 6c 6f 63 6b 20 64  |e memory block d|
0000f780  6f 77 6e 0d 61 b2 49 5c  20 72 30 20 3d 20 60 66  |own.a.I\ r0 = `f|
0000f790  72 6f 6d 60 20 61 64 64  72 65 73 73 2c 20 72 31  |rom` address, r1|
0000f7a0  3d 20 60 74 6f 60 20 61  64 64 72 65 73 73 2c 20  |= `to` address, |
0000f7b0  72 32 20 3d 20 6e 75 6d  62 65 72 20 6f 66 20 62  |r2 = number of b|
0000f7c0  79 74 65 73 20 74 6f 20  6d 6f 76 65 0d 61 bc 1c  |ytes to move.a..|
0000f7d0  73 74 6d 66 64 20 28 73  70 29 21 2c 7b 72 30 2d  |stmfd (sp)!,{r0-|
0000f7e0  72 33 2c 6c 69 6e 6b 7d  0d 61 c6 04 0d 61 d0 0d  |r3,link}.a...a..|
0000f7f0  2e 6d 6f 76 64 6c 6f 6f  70 0d 61 da 13 6c 64 72  |.movdloop.a..ldr|
0000f800  62 20 72 33 2c 5b 72 30  5d 2c 23 31 0d 61 e4 13  |b r3,[r0],#1.a..|
0000f810  73 74 72 62 20 72 33 2c  5b 72 31 5d 2c 23 31 0d  |strb r3,[r1],#1.|
0000f820  61 ee 11 73 75 62 73 20  72 32 2c 72 32 2c 23 31  |a..subs r2,r2,#1|
0000f830  0d 61 f8 10 62 6e 65 20  6d 6f 76 64 6c 6f 6f 70  |.a..bne movdloop|
0000f840  0d 62 02 04 0d 62 0c 1a  6c 64 6d 66 64 20 28 73  |.b...b..ldmfd (s|
0000f850  70 29 21 2c 7b 72 30 2d  72 33 2c 50 43 7d 0d 62  |p)!,{r0-r3,PC}.b|
0000f860  16 04 0d 62 20 0b 2e 6d  6f 76 65 75 70 0d 62 2a  |...b ..moveup.b*|
0000f870  1a 5c 20 4d 6f 76 65 20  6d 65 6d 6f 72 79 20 62  |.\ Move memory b|
0000f880  6c 6f 63 6b 20 75 70 0d  62 34 49 5c 20 72 30 20  |lock up.b4I\ r0 |
0000f890  3d 20 60 66 72 6f 6d 60  20 61 64 64 72 65 73 73  |= `from` address|
0000f8a0  2c 20 72 31 3d 20 60 74  6f 60 20 61 64 64 72 65  |, r1= `to` addre|
0000f8b0  73 73 2c 20 72 32 20 3d  20 6e 75 6d 62 65 72 20  |ss, r2 = number |
0000f8c0  6f 66 20 62 79 74 65 73  20 74 6f 20 6d 6f 76 65  |of bytes to move|
0000f8d0  0d 62 3e 04 0d 62 48 1c  73 74 6d 66 64 20 28 73  |.b>..bH.stmfd (s|
0000f8e0  70 29 21 2c 7b 72 30 2d  72 33 2c 6c 69 6e 6b 7d  |p)!,{r0-r3,link}|
0000f8f0  0d 62 52 10 73 75 62 20  72 32 2c 72 32 2c 23 31  |.bR.sub r2,r2,#1|
0000f900  0d 62 5c 10 61 64 64 20  72 30 2c 72 30 2c 72 32  |.b\.add r0,r0,r2|
0000f910  0d 62 66 10 61 64 64 20  72 31 2c 72 31 2c 72 32  |.bf.add r1,r1,r2|
0000f920  0d 62 70 23 5c 20 43 61  6c 6c 20 68 65 72 65 20  |.bp#\ Call here |
0000f930  69 66 20 72 32 20 3d 20  65 6e 64 20 61 64 64 72  |if r2 = end addr|
0000f940  65 73 73 0d 62 7a 0f 2e  6d 6f 76 65 75 70 6c 6f  |ess.bz..moveuplo|
0000f950  6f 70 0d 62 84 14 6c 64  72 62 20 72 33 2c 5b 72  |op.b..ldrb r3,[r|
0000f960  30 5d 2c 23 2d 31 0d 62  8e 14 73 74 72 62 20 72  |0],#-1.b..strb r|
0000f970  33 2c 5b 72 31 5d 2c 23  2d 31 0d 62 98 11 73 75  |3,[r1],#-1.b..su|
0000f980  62 73 20 72 32 2c 72 32  2c 23 31 0d 62 a2 12 62  |bs r2,r2,#1.b..b|
0000f990  70 6c 20 6d 6f 76 65 75  70 6c 6f 6f 70 0d 62 ac  |pl moveuploop.b.|
0000f9a0  1a 6c 64 6d 66 64 20 28  73 70 29 21 2c 7b 72 30  |.ldmfd (sp)!,{r0|
0000f9b0  2d 72 33 2c 50 43 7d 0d  62 b6 04 0d 62 c0 0c 2e  |-r3,PC}.b...b...|
0000f9c0  6c 61 73 74 72 6f 77 0d  62 ca 1b 5c 20 46 69 6e  |lastrow.b..\ Fin|
0000f9d0  64 20 6c 61 73 74 20 72  6f 77 20 6f 66 20 74 65  |d last row of te|
0000f9e0  78 74 0d 62 d4 36 5c 20  45 6e 74 72 79 20 2d 20  |xt.b.6\ Entry - |
0000f9f0  72 30 20 3d 20 73 74 61  72 74 20 61 64 64 72 65  |r0 = start addre|
0000fa00  73 73 20 6f 66 20 74 65  78 74 20 28 74 65 78 74  |ss of text (text|
0000fa10  5f 62 6c 6f 63 6b 25 29  0d 62 de 32 5c 20 20 20  |_block%).b.2\   |
0000fa20  20 20 20 20 20 20 72 31  20 3d 20 65 6e 64 20 61  |      r1 = end a|
0000fa30  64 64 72 65 73 73 20 6f  66 20 74 65 78 74 20 28  |ddress of text (|
0000fa40  74 65 78 74 5f 65 6e 64  25 29 0d 62 e8 4a 5c 20  |text_end%).b.J\ |
0000fa50  45 78 69 74 20 20 2d 20  6e 75 6d 62 65 72 20 6f  |Exit  - number o|
0000fa60  66 20 6c 61 73 74 20 72  6f 77 20 69 73 20 69 6e  |f last row is in|
0000fa70  20 27 72 6f 77 63 6f 75  6e 74 27 20 28 72 6f 77  | 'rowcount' (row|
0000fa80  73 20 6e 75 6d 62 65 72  65 64 20 30 2c 31 2c 32  |s numbered 0,1,2|
0000fa90  2e 2e 2e 29 0d 62 f2 1c  73 74 6d 66 64 20 28 73  |...).b..stmfd (s|
0000faa0  70 29 21 2c 7b 72 30 2d  72 34 2c 6c 69 6e 6b 7d  |p)!,{r0-r4,link}|
0000fab0  0d 62 fc 0d 6d 6f 76 20  72 32 2c 23 30 0d 63 06  |.b..mov r2,#0.c.|
0000fac0  0d 6d 6f 76 20 72 33 2c  23 30 0d 63 10 0d 6d 6f  |.mov r3,#0.c..mo|
0000fad0  76 20 72 34 2c 23 30 0d  63 1a 04 0d 63 24 0a 2e  |v r4,#0.c...c$..|
0000fae0  77 68 69 6c 65 0d 63 2e  0d 63 6d 70 20 72 30 2c  |while.c..cmp r0,|
0000faf0  72 31 0d 63 38 10 62 65  71 20 65 6e 64 77 68 69  |r1.c8.beq endwhi|
0000fb00  6c 65 0d 63 42 13 6c 64  72 62 20 72 33 2c 5b 72  |le.cB.ldrb r3,[r|
0000fb10  30 5d 2c 23 31 0d 63 4c  10 61 64 64 20 72 34 2c  |0],#1.cL.add r4,|
0000fb20  72 34 2c 23 31 0d 63 56  19 63 6d 70 20 72 34 2c  |r4,#1.cV.cmp r4,|
0000fb30  23 74 65 78 74 5f 6d 61  78 6c 6c 65 6e 25 0d 63  |#text_maxllen%.c|
0000fb40  60 12 61 64 64 65 71 20  72 32 2c 72 32 2c 23 31  |`.addeq r2,r2,#1|
0000fb50  0d 63 6a 0f 6d 6f 76 65  71 20 72 34 2c 23 30 0d  |.cj.moveq r4,#0.|
0000fb60  63 74 0d 62 65 71 20 77  68 69 6c 65 0d 63 7e 0e  |ct.beq while.c~.|
0000fb70  63 6d 70 20 72 33 2c 23  31 33 0d 63 88 12 61 64  |cmp r3,#13.c..ad|
0000fb80  64 65 71 20 72 32 2c 72  32 2c 23 31 0d 63 92 0f  |deq r2,r2,#1.c..|
0000fb90  6d 6f 76 65 71 20 72 34  2c 23 30 0d 63 9c 14 63  |moveq r4,#0.c..c|
0000fba0  6d 70 20 72 33 2c 23 64  75 6d 6d 79 5f 63 72 0d  |mp r3,#dummy_cr.|
0000fbb0  63 a6 12 61 64 64 65 71  20 72 32 2c 72 32 2c 23  |c..addeq r2,r2,#|
0000fbc0  31 0d 63 b0 0f 6d 6f 76  65 71 20 72 34 2c 23 30  |1.c..moveq r4,#0|
0000fbd0  0d 63 ba 0d 62 61 6c 20  77 68 69 6c 65 0d 63 c4  |.c..bal while.c.|
0000fbe0  04 0d 63 ce 0d 2e 65 6e  64 77 68 69 6c 65 0d 63  |..c...endwhile.c|
0000fbf0  d8 13 73 74 72 20 72 32  2c 72 6f 77 63 6f 75 6e  |..str r2,rowcoun|
0000fc00  74 0d 63 e2 1a 6c 64 6d  66 64 20 28 73 70 29 21  |t.c..ldmfd (sp)!|
0000fc10  2c 7b 72 30 2d 72 34 2c  50 43 7d 0d 63 ec 04 0d  |,{r0-r4,PC}.c...|
0000fc20  63 f6 14 2e 72 6f 77 63  6f 75 6e 74 20 45 51 55  |c...rowcount EQU|
0000fc30  44 20 30 0d 64 00 04 0d  64 0a 08 2e 72 6f 77 0d  |D 0.d...d...row.|
0000fc40  64 14 47 5c 20 52 65 74  75 72 6e 73 20 74 68 65  |d.G\ Returns the|
0000fc50  20 73 74 72 69 6e 67 20  6f 66 20 74 65 78 74 20  | string of text |
0000fc60  69 6e 20 74 68 65 20 73  70 65 63 69 66 69 65 64  |in the specified|
0000fc70  20 72 6f 77 20 6f 66 20  74 68 65 20 74 65 78 74  | row of the text|
0000fc80  20 62 6c 6f 63 6b 0d 64  1e 36 5c 20 45 6e 74 72  | block.d.6\ Entr|
0000fc90  79 20 2d 20 72 30 20 3d  20 73 74 61 72 74 20 61  |y - r0 = start a|
0000fca0  64 64 72 65 73 73 20 6f  66 20 74 65 78 74 20 28  |ddress of text (|
0000fcb0  74 65 78 74 5f 62 6c 6f  63 6b 25 29 0d 64 28 28  |text_block%).d((|
0000fcc0  5c 20 20 20 20 20 20 20  20 20 72 31 20 3d 20 72  |\         r1 = r|
0000fcd0  6f 77 20 77 61 6e 74 65  64 20 28 30 2c 31 2c 32  |ow wanted (0,1,2|
0000fce0  2e 2e 2e 29 0d 64 32 48  5c 20 45 78 69 74 20 20  |...).d2H\ Exit  |
0000fcf0  2d 20 74 68 65 20 73 74  72 69 6e 67 20 69 73 20  |- the string is |
0000fd00  72 65 74 75 72 6e 65 64  20 69 6e 20 27 6c 69 6e  |returned in 'lin|
0000fd10  65 62 75 66 66 65 72 27  2c 20 74 65 72 6d 69 6e  |ebuffer', termin|
0000fd20  61 74 65 64 20 62 79 20  3c 63 72 3e 0d 64 3c 1b  |ated by <cr>.d<.|
0000fd30  5c 20 72 32 20 69 73 20  74 68 65 20 63 75 72 72  |\ r2 is the curr|
0000fd40  65 6e 74 20 72 6f 77 0d  64 46 21 5c 20 72 33 20  |ent row.dF!\ r3 |
0000fd50  69 73 20 74 68 65 20 63  75 72 72 65 6e 74 20 63  |is the current c|
0000fd60  68 61 72 61 63 74 65 72  0d 64 50 29 5c 20 72 34  |haracter.dP)\ r4|
0000fd70  20 69 73 20 74 68 65 20  6c 65 6e 67 74 68 20 6f  | is the length o|
0000fd80  66 20 74 68 65 20 63 75  72 72 65 6e 74 20 72 6f  |f the current ro|
0000fd90  77 0d 64 5a 04 0d 64 64  1c 73 74 6d 66 64 20 28  |w.dZ..dd.stmfd (|
0000fda0  73 70 29 21 2c 7b 72 30  2d 72 34 2c 6c 69 6e 6b  |sp)!,{r0-r4,link|
0000fdb0  7d 0d 64 6e 0d 6d 6f 76  20 72 32 2c 23 30 0d 64  |}.dn.mov r2,#0.d|
0000fdc0  78 0d 6d 6f 76 20 72 34  2c 23 30 0d 64 82 04 0d  |x.mov r4,#0.d...|
0000fdd0  64 8c 0b 2e 77 68 69 6c  65 32 0d 64 96 0d 63 6d  |d...while2.d..cm|
0000fde0  70 20 72 32 2c 72 31 0d  64 a0 11 62 65 71 20 65  |p r2,r1.d..beq e|
0000fdf0  6e 64 77 68 69 6c 65 32  0d 64 aa 13 6c 64 72 62  |ndwhile2.d..ldrb|
0000fe00  20 72 33 2c 5b 72 30 5d  2c 23 31 0d 64 b4 10 61  | r3,[r0],#1.d..a|
0000fe10  64 64 20 72 34 2c 72 34  2c 23 31 0d 64 be 19 63  |dd r4,r4,#1.d..c|
0000fe20  6d 70 20 72 34 2c 23 74  65 78 74 5f 6d 61 78 6c  |mp r4,#text_maxl|
0000fe30  6c 65 6e 25 0d 64 c8 0f  6d 6f 76 65 71 20 72 34  |len%.d..moveq r4|
0000fe40  2c 23 30 0d 64 d2 12 61  64 64 65 71 20 72 32 2c  |,#0.d..addeq r2,|
0000fe50  72 32 2c 23 31 0d 64 dc  0e 62 65 71 20 77 68 69  |r2,#1.d..beq whi|
0000fe60  6c 65 32 0d 64 e6 0e 63  6d 70 20 72 33 2c 23 31  |le2.d..cmp r3,#1|
0000fe70  33 0d 64 f0 0f 6d 6f 76  65 71 20 72 34 2c 23 30  |3.d..moveq r4,#0|
0000fe80  0d 64 fa 12 61 64 64 65  71 20 72 32 2c 72 32 2c  |.d..addeq r2,r2,|
0000fe90  23 31 0d 65 04 14 63 6d  70 20 72 33 2c 23 64 75  |#1.e..cmp r3,#du|
0000fea0  6d 6d 79 5f 63 72 0d 65  0e 0f 6d 6f 76 65 71 20  |mmy_cr.e..moveq |
0000feb0  72 34 2c 23 30 0d 65 18  12 61 64 64 65 71 20 72  |r4,#0.e..addeq r|
0000fec0  32 2c 72 32 2c 23 31 0d  65 22 0e 62 61 6c 20 77  |2,r2,#1.e".bal w|
0000fed0  68 69 6c 65 32 0d 65 2c  04 0d 65 36 0e 2e 65 6e  |hile2.e,..e6..en|
0000fee0  64 77 68 69 6c 65 32 0d  65 40 15 61 64 72 20 72  |dwhile2.e@.adr r|
0000fef0  31 2c 6c 69 6e 65 62 75  66 66 65 72 0d 65 4a 0d  |1,linebuffer.eJ.|
0000ff00  6d 6f 76 20 72 34 2c 23  30 0d 65 54 04 0d 65 5e  |mov r4,#0.eT..e^|
0000ff10  0c 2e 73 74 72 6c 6f 6f  70 0d 65 68 13 6c 64 72  |..strloop.eh.ldr|
0000ff20  62 20 72 33 2c 5b 72 30  5d 2c 23 31 0d 65 72 10  |b r3,[r0],#1.er.|
0000ff30  61 64 64 20 72 34 2c 72  34 2c 23 31 0d 65 7c 0d  |add r4,r4,#1.e|.|
0000ff40  63 6d 70 20 72 33 2c 23  30 0d 65 86 0f 62 65 71  |cmp r3,#0.e..beq|
0000ff50  20 6c 69 6e 65 65 6e 64  0d 65 90 15 63 6d 70 20  | lineend.e..cmp |
0000ff60  72 33 2c 23 64 75 6d 6d  79 5f 73 70 63 0d 65 9a  |r3,#dummy_spc.e.|
0000ff70  0f 62 65 71 20 6c 69 6e  65 65 6e 64 0d 65 a4 0e  |.beq lineend.e..|
0000ff80  63 6d 70 20 72 33 2c 23  31 33 0d 65 ae 0f 62 65  |cmp r3,#13.e..be|
0000ff90  71 20 6c 69 6e 65 65 6e  64 0d 65 b8 14 63 6d 70  |q lineend.e..cmp|
0000ffa0  20 72 33 2c 23 64 75 6d  6d 79 5f 63 72 0d 65 c2  | r3,#dummy_cr.e.|
0000ffb0  15 73 74 72 65 71 62 20  72 33 2c 5b 72 31 5d 2c  |.streqb r3,[r1],|
0000ffc0  23 31 0d 65 cc 0f 62 65  71 20 6c 69 6e 65 65 6e  |#1.e..beq lineen|
0000ffd0  64 0d 65 d6 13 73 74 72  62 20 72 33 2c 5b 72 31  |d.e..strb r3,[r1|
0000ffe0  5d 2c 23 31 0d 65 e0 19  63 6d 70 20 72 34 2c 23  |],#1.e..cmp r4,#|
0000fff0  74 65 78 74 5f 6d 61 78  6c 6c 65 6e 25 0d 65 ea  |text_maxllen%.e.|
00010000  0f 62 6e 65 20 73 74 72  6c 6f 6f 70 0d 65 f4 04  |.bne strloop.e..|
00010010  0d 65 fe 0c 2e 6c 69 6e  65 65 6e 64 0d 66 08 0d  |.e...lineend.f..|
00010020  63 6d 70 20 72 33 2c 23  30 0d 66 12 10 6d 6f 76  |cmp r3,#0.f..mov|
00010030  65 71 20 72 33 2c 23 31  33 0d 66 1c 15 63 6d 70  |eq r3,#13.f..cmp|
00010040  20 72 33 2c 23 64 75 6d  6d 79 5f 73 70 63 0d 66  | r3,#dummy_spc.f|
00010050  26 10 6d 6f 76 65 71 20  72 33 2c 23 31 33 0d 66  |&.moveq r3,#13.f|
00010060  30 14 63 6d 70 20 72 33  2c 23 64 75 6d 6d 79 5f  |0.cmp r3,#dummy_|
00010070  63 72 0d 66 3a 10 6d 6f  76 65 71 20 72 33 2c 23  |cr.f:.moveq r3,#|
00010080  31 33 0d 66 44 19 63 6d  70 20 72 34 2c 23 74 65  |13.fD.cmp r4,#te|
00010090  78 74 5f 6d 61 78 6c 6c  65 6e 25 0d 66 4e 10 6d  |xt_maxllen%.fN.m|
000100a0  6f 76 65 71 20 72 33 2c  23 31 33 0d 66 58 13 73  |oveq r3,#13.fX.s|
000100b0  74 72 62 20 72 33 2c 5b  72 31 5d 2c 23 31 0d 66  |trb r3,[r1],#1.f|
000100c0  62 1a 6c 64 6d 66 64 20  28 73 70 29 21 2c 7b 72  |b.ldmfd (sp)!,{r|
000100d0  30 2d 72 34 2c 50 43 7d  0d 66 6c 04 0d 66 76 32  |0-r4,PC}.fl..fv2|
000100e0  2e 6c 69 6e 65 62 75 66  66 65 72 20 45 51 55 53  |.linebuffer EQUS|
000100f0  20 c4 74 65 78 74 5f 6d  61 78 6c 6c 65 6e 25 2b  | .text_maxllen%+|
00010100  31 2c bd 20 64 75 6d 6d  79 5f 73 70 63 29 0d 66  |1,. dummy_spc).f|
00010110  80 0a 20 61 6c 69 67 6e  0d 66 8a 04 0d 66 94 0c  |.. align.f...f..|
00010120  2e 66 69 6e 64 6d 73 67  0d 66 9e 25 5c 46 69 6e  |.findmsg.f.%\Fin|
00010130  64 73 20 73 74 61 72 74  20 6f 66 20 73 70 65 63  |ds start of spec|
00010140  69 66 69 65 64 20 6d 65  73 73 61 67 65 0d 66 a8  |ified message.f.|
00010150  20 5c 45 6e 74 72 79 20  2d 20 72 30 20 3d 20 6d  | \Entry - r0 = m|
00010160  65 73 73 61 67 65 20 6e  75 6d 62 65 72 0d 66 b2  |essage number.f.|
00010170  2c 5c 20 20 20 20 20 20  2d 20 72 32 20 3d 20 74  |,\      - r2 = t|
00010180  65 78 74 20 73 74 61 72  74 20 61 64 64 72 65 73  |ext start addres|
00010190  73 20 28 4d 53 47 23 30  29 0d 66 bc 35 5c 45 78  |s (MSG#0).f.5\Ex|
000101a0  69 74 20 20 2d 20 72 30  20 3d 20 73 74 61 72 74  |it  - r0 = start|
000101b0  20 61 64 64 72 65 73 73  20 6f 66 20 6d 65 73 73  | address of mess|
000101c0  61 67 65 20 28 73 77 69  74 63 68 65 73 29 0d 66  |age (switches).f|
000101d0  c6 1c 73 74 6d 66 64 20  28 73 70 29 21 2c 7b 72  |..stmfd (sp)!,{r|
000101e0  31 2d 72 33 2c 6c 69 6e  6b 7d 0d 66 d0 0d 63 6d  |1-r3,link}.f..cm|
000101f0  70 20 72 30 2c 23 30 0d  66 da 0e 62 65 71 20 73  |p r0,#0.f..beq s|
00010200  74 61 72 74 6d 0d 66 e4  04 0d 66 ee 0b 2e 6e 78  |tartm.f...f...nx|
00010210  74 6d 73 67 0d 66 f8 13  6c 64 72 62 20 72 31 2c  |tmsg.f..ldrb r1,|
00010220  5b 72 32 5d 2c 23 31 0d  67 02 29 61 64 64 20 72  |[r2],#1.g.)add r|
00010230  32 2c 72 32 2c 72 31 2c  20 6c 73 6c 20 23 31 20  |2,r2,r1, lsl #1 |
00010240  5c 20 72 32 20 3d 20 72  32 20 2b 20 72 31 2a 32  |\ r2 = r2 + r1*2|
00010250  0d 67 0c 04 0d 67 16 0b  2e 72 65 61 64 63 68 0d  |.g...g...readch.|
00010260  67 20 13 6c 64 72 62 20  72 31 2c 5b 72 32 5d 2c  |g .ldrb r1,[r2],|
00010270  23 31 0d 67 2a 0d 63 6d  70 20 72 31 2c 23 30 0d  |#1.g*.cmp r1,#0.|
00010280  67 34 0e 62 6e 65 20 72  65 61 64 63 68 0d 67 3e  |g4.bne readch.g>|
00010290  11 73 75 62 73 20 72 30  2c 72 30 2c 23 31 0d 67  |.subs r0,r0,#1.g|
000102a0  48 0e 62 6e 65 20 6e 78  74 6d 73 67 0d 67 52 04  |H.bne nxtmsg.gR.|
000102b0  0d 67 5c 0b 2e 73 74 61  72 74 6d 0d 67 66 0d 6d  |.g\..startm.gf.m|
000102c0  6f 76 20 72 30 2c 72 32  0d 67 70 1a 6c 64 6d 66  |ov r0,r2.gp.ldmf|
000102d0  64 20 28 73 70 29 21 2c  7b 72 31 2d 72 33 2c 70  |d (sp)!,{r1-r3,p|
000102e0  63 7d 0d 67 7a 04 0d 67  84 09 2e 70 76 6f 6b 0d  |c}.gz..g...pvok.|
000102f0  67 8e 3c 3b 50 72 69 6e  74 20 56 65 72 62 2c 20  |g.<;Print Verb, |
00010300  4f 62 6a 65 63 74 20 6f  72 20 4b 65 79 77 6f 72  |Object or Keywor|
00010310  64 20 28 72 65 74 75 72  6e 73 20 74 68 65 20 77  |d (returns the w|
00010320  6f 72 64 20 73 74 72 69  6e 67 29 0d 67 98 29 3b  |ord string).g.);|
00010330  45 6e 74 72 79 20 2d 20  72 30 20 3d 20 4e 75 6d  |Entry - r0 = Num|
00010340  62 65 72 20 6f 66 20 77  6f 72 64 20 74 6f 20 70  |ber of word to p|
00010350  72 69 6e 74 0d 67 a2 30  3b 20 20 20 20 20 20 20  |rint.g.0;       |
00010360  20 72 31 20 3d 20 61 64  64 72 65 73 73 20 6f 66  | r1 = address of|
00010370  20 72 65 71 75 69 72 65  64 20 77 6f 72 64 20 74  | required word t|
00010380  61 62 6c 65 0d 67 ac 32  3b 45 78 69 74 20 20 2d  |able.g.2;Exit  -|
00010390  20 77 6f 72 64 20 69 73  20 69 6e 20 27 61 74 65  | word is in 'ate|
000103a0  78 74 27 20 74 65 72 6d  69 6e 61 74 65 64 20 62  |xt' terminated b|
000103b0  79 20 3c 63 72 3e 0d 67  b6 1c 73 74 6d 66 64 20  |y <cr>.g..stmfd |
000103c0  28 73 70 29 21 2c 7b 72  30 2d 72 35 2c 6c 69 6e  |(sp)!,{r0-r5,lin|
000103d0  6b 7d 0d 67 c0 2c 6d 6f  76 20 72 33 2c 72 30 20  |k}.g.,mov r3,r0 |
000103e0  20 20 20 20 20 5c 57 6f  72 64 20 6e 75 6d 62 65  |     \Word numbe|
000103f0  72 20 69 73 20 6e 6f 77  20 69 6e 20 72 33 0d 67  |r is now in r3.g|
00010400  ca 24 6d 6f 76 20 72 34  2c 72 32 20 20 20 20 20  |.$mov r4,r2     |
00010410  20 5c 72 34 20 69 73 20  27 61 6c 6c 27 20 66 6c  | \r4 is 'all' fl|
00010420  61 67 0d 67 d4 1f 6d 6f  76 20 72 35 2c 23 30 20  |ag.g..mov r5,#0 |
00010430  20 20 20 20 20 5c 72 35  20 69 73 20 27 63 74 72  |     \r5 is 'ctr|
00010440  27 0d 67 de 04 0d 67 e8  09 2e 4c 4c 4c 31 0d 67  |'.g...g...LLL1.g|
00010450  f2 28 61 64 72 20 72 32  2c 61 74 65 78 74 20 20  |.(adr r2,atext  |
00010460  20 5c 72 32 20 70 6f 69  6e 74 73 20 74 6f 20 27  | \r2 points to '|
00010470  61 74 65 78 74 27 0d 67  fc 04 0d 68 06 09 2e 4c  |atext'.g...h...L|
00010480  4c 4c 32 0d 68 10 2b 6c  64 72 62 20 72 30 2c 5b  |LL2.h.+ldrb r0,[|
00010490  72 31 5d 20 20 20 5c 47  65 74 20 63 68 61 72 61  |r1]   \Get chara|
000104a0  63 74 65 72 20 66 72 6f  6d 20 6c 69 73 74 0d 68  |cter from list.h|
000104b0  1a 2a 5c 6f 72 72 20 72  30 2c 72 30 2c 23 33 32  |.*\orr r0,r0,#32|
000104c0  20 20 5c 43 6f 6e 76 65  72 74 20 74 6f 20 6c 6f  |  \Convert to lo|
000104d0  77 65 72 20 63 61 73 65  0d 68 24 24 73 74 72 62  |wer case.h$$strb|
000104e0  20 72 30 2c 5b 72 32 5d  20 20 20 5c 50 75 74 20  | r0,[r2]   \Put |
000104f0  69 74 20 69 6e 20 27 74  65 78 74 27 0d 68 2e 32  |it in 'text'.h.2|
00010500  74 73 74 20 72 30 2c 23  26 38 30 20 20 20 20 5c  |tst r0,#&80    \|
00010510  49 73 20 62 69 74 20 37  20 73 65 74 20 28 65 6e  |Is bit 7 set (en|
00010520  64 20 6f 66 20 74 68 65  20 77 6f 72 64 29 0d 68  |d of the word).h|
00010530  38 17 62 6e 65 20 65 6e  64 6f 66 77 20 20 20 20  |8.bne endofw    |
00010540  20 5c 59 65 73 0d 68 42  10 61 64 64 20 72 32 2c  | \Yes.hB.add r2,|
00010550  72 32 2c 23 31 0d 68 4c  10 61 64 64 20 72 31 2c  |r2,#1.hL.add r1,|
00010560  72 31 2c 23 31 0d 68 56  0a 62 20 4c 4c 4c 32 0d  |r1,#1.hV.b LLL2.|
00010570  68 60 04 0d 68 6a 0b 2e  65 6e 64 6f 66 77 0d 68  |h`..hj..endofw.h|
00010580  74 0f 63 6d 70 20 72 30  2c 23 26 46 46 0d 68 7e  |t.cmp r0,#&FF.h~|
00010590  15 61 64 72 65 71 20 72  32 2c 70 76 6f 6b 66 6c  |.adreq r2,pvokfl|
000105a0  61 67 0d 68 88 12 73 74  72 65 71 62 20 72 30 2c  |ag.h..streqb r0,|
000105b0  5b 72 32 5d 0d 68 92 0e  62 65 71 20 65 6e 64 74  |[r2].h..beq endt|
000105c0  62 6c 0d 68 9c 25 61 6e  64 20 72 30 2c 72 30 2c  |bl.h.%and r0,r0,|
000105d0  23 25 30 31 31 31 31 31  31 31 20 3b 43 6c 65 61  |#%01111111 ;Clea|
000105e0  72 20 62 69 74 20 37 0d  68 a6 13 73 74 72 62 20  |r bit 7.h..strb |
000105f0  72 30 2c 5b 72 32 5d 2c  23 31 0d 68 b0 0e 6d 6f  |r0,[r2],#1.h..mo|
00010600  76 20 72 30 2c 23 31 33  0d 68 ba 10 73 74 72 62  |v r0,#13.h..strb|
00010610  20 72 30 2c 5b 72 32 5d  0d 68 c4 10 61 64 64 20  | r0,[r2].h..add |
00010620  72 31 2c 72 31 2c 23 31  0d 68 ce 37 6c 64 72 62  |r1,r1,#1.h.7ldrb|
00010630  20 72 30 2c 5b 72 31 5d  20 3b 47 65 74 20 74 68  | r0,[r1] ;Get th|
00010640  65 20 76 65 72 62 2f 6f  62 6a 65 63 74 20 6e 75  |e verb/object nu|
00010650  6d 62 65 72 20 66 72 6f  6d 20 74 61 62 6c 65 0d  |mber from table.|
00010660  68 d8 21 61 64 64 20 72  31 2c 72 31 2c 23 31 20  |h.!add r1,r1,#1 |
00010670  3b 53 6b 69 70 20 74 68  65 20 6e 75 6d 62 65 72  |;Skip the number|
00010680  0d 68 e2 28 63 6d 70 20  72 30 2c 72 33 20 20 20  |.h.(cmp r0,r3   |
00010690  20 3b 49 73 20 69 74 20  74 68 65 20 6f 6e 65 20  | ;Is it the one |
000106a0  77 65 20 77 61 6e 74 3f  0d 68 ec 27 62 6e 65 20  |we want?.h.'bne |
000106b0  4c 4c 4c 31 20 20 20 20  20 3b 4e 6f 20 2d 20 74  |LLL1     ;No - t|
000106c0  72 79 20 74 68 65 20 6e  65 78 74 20 6f 6e 65 0d  |ry the next one.|
000106d0  68 f6 04 0d 69 00 0b 2e  65 6e 64 74 62 6c 0d 69  |h...i...endtbl.i|
000106e0  0a 12 61 64 72 20 72 32  2c 61 64 64 72 65 73 73  |..adr r2,address|
000106f0  0d 69 14 0f 73 74 72 20  72 31 2c 5b 72 32 5d 0d  |.i..str r1,[r2].|
00010700  69 1e 1a 6c 64 6d 66 64  20 28 73 70 29 21 2c 7b  |i..ldmfd (sp)!,{|
00010710  72 30 2d 72 35 2c 70 63  7d 0d 69 28 04 0d 69 32  |r0-r5,pc}.i(..i2|
00010720  18 2e 61 74 65 78 74 20  45 51 55 53 20 c4 38 30  |..atext EQUS .80|
00010730  2c 22 2a 22 29 0d 69 3c  09 61 6c 69 67 6e 0d 69  |,"*").i<.align.i|
00010740  46 13 2e 61 64 64 72 65  73 73 20 65 71 75 64 20  |F..address equd |
00010750  30 0d 69 50 14 2e 70 76  6f 6b 66 6c 61 67 20 65  |0.iP..pvokflag e|
00010760  71 75 62 20 30 0d 69 5a  09 61 6c 69 67 6e 0d 69  |qub 0.iZ.align.i|
00010770  64 05 5d 0d 69 6e 0a ed  20 70 61 73 73 0d 69 78  |d.].in.. pass.ix|
00010780  05 e1 0d 69 82 04 0d 69  8c 04 0d 69 96 31 f4 20  |...i...i...i.1. |
00010790  2d 2d 2d 2d 2d 2d 20 53  6f 6d 65 20 67 65 6e 65  |------ Some gene|
000107a0  72 61 6c 20 75 74 69 6c  69 74 79 20 72 6f 75 74  |ral utility rout|
000107b0  69 6e 65 73 20 2d 2d 2d  2d 2d 2d 0d 69 a0 04 0d  |ines ------.i...|
000107c0  69 aa 13 dd 20 f2 45 72  72 6f 72 4d 73 67 52 65  |i... .ErrorMsgRe|
000107d0  61 64 0d 69 b4 27 69 6e  25 3d 8e 28 22 3c 41 6c  |ad.i.'in%=.("<Al|
000107e0  70 73 24 52 65 73 6f 75  72 63 65 73 3e 2e 45 72  |ps$Resources>.Er|
000107f0  72 6f 72 6d 73 67 73 22  29 0d 69 be 10 e8 23 69  |rormsgs").i...#i|
00010800  6e 25 2c 65 72 72 6f 72  73 0d 69 c8 14 de 20 65  |n%,errors.i... e|
00010810  72 72 6f 72 24 28 65 72  72 6f 72 73 29 0d 69 d2  |rror$(errors).i.|
00010820  18 e3 20 65 72 72 6f 72  3d 30 20 b8 20 65 72 72  |.. error=0 . err|
00010830  6f 72 73 2d 31 0d 69 dc  19 20 20 e8 23 69 6e 25  |ors-1.i..  .#in%|
00010840  2c 65 72 72 6f 72 24 28  65 72 72 6f 72 29 0d 69  |,error$(error).i|
00010850  e6 0b ed 20 65 72 72 6f  72 0d 69 f0 09 d9 23 69  |... error.i...#i|
00010860  6e 25 0d 69 fa 05 e1 0d  6a 04 04 0d 6a 0e 12 dd  |n%.i....j...j...|
00010870  20 f2 4b 65 79 57 6f 72  64 52 65 61 64 0d 6a 18  | .KeyWordRead.j.|
00010880  27 f4 20 52 65 61 64 73  20 66 69 6c 65 20 6f 66  |'. Reads file of|
00010890  20 6b 65 79 77 6f 72 64  73 2f 69 6e 66 6f 20 62  | keywords/info b|
000108a0  79 74 65 73 0d 6a 22 28  f4 20 4b 65 79 77 6f 72  |ytes.j"(. Keywor|
000108b0  64 73 20 61 72 65 20 69  6e 20 61 6c 70 68 61 62  |ds are in alphab|
000108c0  65 74 69 63 61 6c 20 6f  72 64 65 72 0d 6a 2c 10  |etical order.j,.|
000108d0  ea 20 43 48 4e 25 2c 49  25 2c 4a 25 0d 6a 36 13  |. CHN%,I%,J%.j6.|
000108e0  66 69 72 73 74 5f 74 6f  6b 65 6e 3d 26 36 30 0d  |first_token=&60.|
000108f0  6a 40 35 6d 61 78 6d 73  67 3d 36 35 35 33 35 3a  |j@5maxmsg=65535:|
00010900  6d 61 78 6f 62 6e 3d 32  35 35 3a 6d 61 78 76 62  |maxobn=255:maxvb|
00010910  6e 3d 32 35 35 3a 6d 61  78 63 6f 6e 73 74 3d 36  |n=255:maxconst=6|
00010920  35 35 33 35 0d 6a 4a 28  63 68 6e 25 3d 8e 20 22  |5535.jJ(chn%=. "|
00010930  3c 41 6c 70 73 24 52 65  73 6f 75 72 63 65 73 3e  |<Alps$Resources>|
00010940  2e 6b 65 79 77 72 64 6c  69 73 74 22 0d 6a 54 13  |.keywrdlist".jT.|
00010950  e8 23 63 68 6e 25 2c 6b  65 79 77 6f 72 64 73 0d  |.#chn%,keywords.|
00010960  6a 5e 2a de 20 6b 65 79  77 6f 72 64 24 28 6b 65  |j^*. keyword$(ke|
00010970  79 77 6f 72 64 73 29 2c  69 6e 66 6f 25 28 6b 65  |ywords),info%(ke|
00010980  79 77 6f 72 64 73 2c 35  29 0d 6a 68 04 0d 6a 72  |ywords,5).jh..jr|
00010990  1b f4 20 53 65 74 20 75  70 20 6b 65 79 77 6f 72  |.. Set up keywor|
000109a0  64 20 74 61 62 6c 65 73  0d 6a 7c 43 f4 20 6b 65  |d tables.j|C. ke|
000109b0  79 77 6f 72 64 24 20 7c  20 74 6f 6b 65 6e 20 7c  |yword$ | token ||
000109c0  20 74 79 70 65 2f 4e 6f  2e 20 70 61 72 61 6d 73  | type/No. params|
000109d0  20 7c 20 4d 61 78 20 76  61 6c 75 65 73 20 70 61  | | Max values pa|
000109e0  72 61 6d 20 31 2c 32 2c  33 20 7c 0d 6a 86 48 f4  |ram 1,2,3 |.j.H.|
000109f0  20 74 79 70 65 2f 4e 6f  2e 20 70 61 72 61 6d 73  | type/No. params|
00010a00  20 67 69 76 65 73 20 6e  75 6d 62 65 72 20 6f 66  | gives number of|
00010a10  20 70 61 72 61 6d 65 74  65 72 73 20 61 6e 64 20  | parameters and |
00010a20  62 69 74 20 37 20 69 73  20 73 65 74 20 69 66 20  |bit 7 is set if |
00010a30  69 74 73 0d 6a 90 48 f4  20 61 20 66 75 6e 63 74  |its.j.H. a funct|
00010a40  69 6f 6e 2c 20 62 69 74  20 36 20 73 65 74 20 66  |ion, bit 6 set f|
00010a50  6f 72 20 6f 62 6a 65 63  74 20 6b 65 79 77 6f 72  |or object keywor|
00010a60  64 73 2c 20 62 69 74 20  35 20 66 6f 72 20 76 65  |ds, bit 5 for ve|
00010a70  72 62 20 6b 65 79 77 6f  72 64 73 0d 6a 9a 04 0d  |rb keywords.j...|
00010a80  6a a4 15 e3 20 49 25 3d  31 20 b8 20 6b 65 79 77  |j... I%=1 . keyw|
00010a90  6f 72 64 73 0d 6a ae 17  e8 23 63 68 6e 25 2c 6b  |ords.j...#chn%,k|
00010aa0  65 79 77 6f 72 64 24 28  49 25 29 0d 6a b8 0e e3  |eyword$(I%).j...|
00010ab0  20 4a 25 3d 30 20 b8 20  35 0d 6a c2 17 e8 23 63  | J%=0 . 5.j...#c|
00010ac0  68 6e 25 2c 69 6e 66 6f  25 28 49 25 2c 4a 25 29  |hn%,info%(I%,J%)|
00010ad0  0d 6a cc 08 ed 20 4a 25  0d 6a d6 08 ed 20 49 25  |.j... J%.j... I%|
00010ae0  0d 6a e0 0a d9 23 63 68  6e 25 0d 6a ea 04 0d 6a  |.j...#chn%.j...j|
00010af0  f4 15 e3 20 49 25 3d 31  20 b8 20 6b 65 79 77 6f  |... I%=1 . keywo|
00010b00  72 64 73 0d 6a fe 2b 70  61 72 61 6d 73 3d 69 6e  |rds.j.+params=in|
00010b10  66 6f 25 28 69 6e 66 6f  25 28 49 25 2c 32 29 2c  |fo%(info%(I%,2),|
00010b20  31 29 20 80 20 25 30 30  30 31 31 31 31 31 0d 6b  |1) . %00011111.k|
00010b30  08 0b 62 79 74 65 73 3d  30 0d 6b 12 10 e7 20 70  |..bytes=0.k... p|
00010b40  61 72 61 6d 73 3e 30 20  8c 0d 6b 1c 0e e3 20 4b  |arams>0 ..k... K|
00010b50  25 3d 33 20 b8 20 35 0d  6b 26 20 6d 61 78 76 61  |%=3 . 5.k& maxva|
00010b60  6c 3d 69 6e 66 6f 25 28  69 6e 66 6f 25 28 49 25  |l=info%(info%(I%|
00010b70  2c 32 29 2c 4b 25 29 0d  6b 30 26 e7 20 6d 61 78  |,2),K%).k0&. max|
00010b80  76 61 6c 3c 32 35 36 20  80 20 6d 61 78 76 61 6c  |val<256 . maxval|
00010b90  3e 30 20 8c 20 62 79 74  65 73 2b 3d 31 0d 6b 3a  |>0 . bytes+=1.k:|
00010ba0  2a e7 20 6d 61 78 76 61  6c 3e 32 35 35 20 80 20  |*. maxval>255 . |
00010bb0  6d 61 78 76 61 6c 3c 36  35 35 33 36 20 8c 20 62  |maxval<65536 . b|
00010bc0  79 74 65 73 2b 3d 32 0d  6b 44 1d e7 20 6d 61 78  |ytes+=2.kD.. max|
00010bd0  76 61 6c 3e 36 35 35 33  35 20 8c 20 62 79 74 65  |val>65535 . byte|
00010be0  73 2b 3d 33 0d 6b 4e 08  ed 20 4b 25 0d 6b 58 05  |s+=3.kN.. K%.kX.|
00010bf0  cd 0d 6b 62 2e 70 61 72  61 6d 62 79 74 65 3d 69  |..kb.parambyte=i|
00010c00  6e 66 6f 25 28 69 6e 66  6f 25 28 49 25 2c 32 29  |nfo%(info%(I%,2)|
00010c10  2c 31 29 20 80 20 25 31  30 30 30 30 30 30 30 0d  |,1) . %10000000.|
00010c20  6b 6c 23 70 62 79 74 65  73 3f 28 49 25 2d 31 29  |kl#pbytes?(I%-1)|
00010c30  3d 62 79 74 65 73 20 84  20 70 61 72 61 6d 62 79  |=bytes . paramby|
00010c40  74 65 0d 6b 76 05 ed 0d  6b 80 05 e1 0d 6b 8a 04  |te.kv...k....k..|
00010c50  0d 6b 94 04 0d 6b 9e 27  f4 20 2d 2d 2d 2d 2d 2d  |.k...k.'. ------|
00010c60  20 50 72 69 6e 74 69 6e  67 20 70 72 6f 63 65 64  | Printing proced|
00010c70  75 72 65 73 20 2d 2d 2d  2d 2d 2d 0d 6b a8 04 0d  |ures ------.k...|
00010c80  6b b2 15 dd 20 f2 70 72  69 6e 74 5f 70 72 6f 67  |k... .print_prog|
00010c90  5f 73 65 67 0d 6b bc 08  ea 20 52 25 0d 6b c6 07  |_seg.k... R%.k..|
00010ca0  ea 20 85 0d 6b d0 29 ee  20 85 20 ea 3a ff 28 22  |. ..k.). . .:.("|
00010cb0  46 58 33 2c 30 22 29 3a  c8 99 20 22 48 6f 75 72  |FX3,0"):.. "Hour|
00010cc0  67 6c 61 73 73 5f 4f 66  66 22 3a e1 0d 6b da 0b  |glass_Off":..k..|
00010cd0  2a 46 58 33 2c 31 30 0d  6b e4 16 e3 20 52 25 3d  |*FX3,10.k... R%=|
00010ce0  30 20 b8 20 6c 61 73 74  5f 72 6f 77 25 0d 6b ee  |0 . last_row%.k.|
00010cf0  10 20 20 f1 20 a4 72 6f  77 28 52 25 29 0d 6b f8  |.  . .row(R%).k.|
00010d00  08 ed 20 52 25 0d 6c 02  0a 2a 46 58 33 2c 30 0d  |.. R%.l..*FX3,0.|
00010d10  6c 0c 05 e1 0d 6c 16 04  0d 6c 20 14 dd 20 f2 70  |l....l...l .. .p|
00010d20  72 69 6e 74 5f 70 72 6f  67 72 61 6d 0d 6c 2a 07  |rint_program.l*.|
00010d30  ea 20 85 0d 6c 34 29 ee  20 85 20 ea 3a ff 28 22  |. ..l4). . .:.("|
00010d40  46 58 33 2c 30 22 29 3a  c8 99 20 22 48 6f 75 72  |FX3,0"):.. "Hour|
00010d50  67 6c 61 73 73 5f 4f 66  66 22 3a e1 0d 6c 3e 0f  |glass_Off":..l>.|
00010d60  f2 6c 69 73 74 28 31 2c  22 22 29 0d 6c 48 05 e1  |.list(1,"").lH..|
00010d70  0d 6c 52 04 0d 6c 5c 11  dd 20 f2 70 72 69 6e 74  |.lR..l\.. .print|
00010d80  5f 74 65 78 74 0d 6c 66  11 ea 20 73 74 25 2c 65  |_text.lf.. st%,e|
00010d90  6e 64 25 2c 4d 25 0d 6c  70 07 ea 20 85 0d 6c 7a  |nd%,M%.lp.. ..lz|
00010da0  29 ee 20 85 20 ea 3a ff  28 22 46 58 33 2c 30 22  |). . .:.("FX3,0"|
00010db0  29 3a c8 99 20 22 48 6f  75 72 67 6c 61 73 73 5f  |):.. "Hourglass_|
00010dc0  4f 66 66 22 3a e1 0d 6c  84 16 f2 63 6c 6f 73 65  |Off":..l...close|
00010dd0  28 74 65 78 74 68 61 6e  64 6c 65 29 0d 6c 8e 0b  |(texthandle).l..|
00010de0  2a 46 58 33 2c 31 30 0d  6c 98 12 73 74 25 3d bb  |*FX3,10.l..st%=.|
00010df0  20 24 73 74 5f 6d 73 67  25 0d 6c a2 14 65 6e 64  | $st_msg%.l..end|
00010e00  25 3d bb 20 24 65 6e 64  5f 6d 73 67 25 0d 6c ac  |%=. $end_msg%.l.|
00010e10  1f e7 20 65 6e 64 25 3e  a4 6d 61 78 6d 73 67 20  |.. end%>.maxmsg |
00010e20  65 6e 64 25 3d a4 6d 61  78 6d 73 67 0d 6c b6 13  |end%=.maxmsg.l..|
00010e30  e3 20 4d 25 3d 73 74 25  20 b8 20 65 6e 64 25 0d  |. M%=st% . end%.|
00010e40  6c c0 13 20 20 f2 73 68  6f 77 5f 6d 73 67 28 4d  |l..  .show_msg(M|
00010e50  25 29 0d 6c ca 14 20 20  f2 70 72 69 6e 74 5f 6d  |%).l..  .print_m|
00010e60  73 67 28 4d 25 29 0d 6c  d4 08 ed 20 4d 25 0d 6c  |sg(M%).l... M%.l|
00010e70  de 0a 2a 46 58 33 2c 30  0d 6c e8 05 e1 0d 6c f2  |..*FX3,0.l....l.|
00010e80  04 0d 6c fc 14 dd 20 f2  70 72 69 6e 74 5f 6d 73  |..l... .print_ms|
00010e90  67 28 4d 25 29 0d 6d 06  0b ea 20 53 25 2c 52 25  |g(M%).m... S%,R%|
00010ea0  0d 6d 10 22 f1 22 4d 65  73 73 61 67 65 3a 20 22  |.m."."Message: "|
00010eb0  3b 4d 25 3b 22 20 53 77  69 74 63 68 65 73 3a 20  |;M%;" Switches: |
00010ec0  22 3b 0d 6d 1a 18 e7 20  73 77 69 74 63 68 5f 76  |";.m... switch_v|
00010ed0  61 6c 73 28 30 29 3d 30  20 8c 0d 6d 24 0e 20 20  |als(0)=0 ..m$.  |
00010ee0  f1 22 4e 6f 6e 65 22 3b  0d 6d 2e 05 cc 0d 6d 38  |."None";.m....m8|
00010ef0  1d 20 20 e3 20 53 25 3d  31 20 b8 20 73 77 69 74  |.  . S%=1 . swit|
00010f00  63 68 5f 76 61 6c 73 28  30 29 0d 6d 42 21 20 20  |ch_vals(0).mB!  |
00010f10  20 20 f1 22 3c 22 3b 73  77 69 74 63 68 5f 76 61  |  ."<";switch_va|
00010f20  6c 73 28 53 25 29 3b 22  3e 22 3b 0d 6d 4c 07 20  |ls(S%);">";.mL. |
00010f30  20 ed 0d 6d 56 05 cd 0d  6d 60 05 f1 0d 6d 6a 16  | ..mV...m`...mj.|
00010f40  e3 20 52 25 3d 30 20 b8  20 6c 61 73 74 5f 72 6f  |. R%=0 . last_ro|
00010f50  77 25 0d 6d 74 10 20 20  f1 20 a4 72 6f 77 28 52  |w%.mt.  . .row(R|
00010f60  25 29 0d 6d 7e 08 ed 20  52 25 0d 6d 88 19 f1 20  |%).m~.. R%.m... |
00010f70  c4 74 65 78 74 5f 6d 61  78 6c 6c 65 6e 25 2c 22  |.text_maxllen%,"|
00010f80  2d 22 29 0d 6d 92 05 e1  0d 6d 9c 04 0d 6d a6 11  |-").m....m...m..|
00010f90  dd 20 f2 70 72 69 6e 74  5f 6f 62 6a 73 0d 6d b0  |. .print_objs.m.|
00010fa0  13 ea 20 4f 25 2c 46 25  2c 49 25 2c 70 74 72 25  |.. O%,F%,I%,ptr%|
00010fb0  0d 6d ba 0b 2a 46 58 33  2c 31 30 0d 6d c4 0f ef  |.m..*FX3,10.m...|
00010fc0  20 63 6f 6e 64 65 6e 73  65 64 0d 6d ce 0b f1 70  | condensed.m...p|
00010fd0  6c 69 6e 65 24 0d 6d d8  1a f2 70 72 69 6e 74 5f  |line$.m...print_|
00010fe0  66 6c 61 67 73 28 6f 5f  66 6c 61 67 73 25 29 0d  |flags(o_flags%).|
00010ff0  6d e2 0b f1 70 6c 69 6e  65 24 0d 6d ec 74 f1 22  |m...pline$.m.t."|
00011000  4f 62 6a 20 4e 6f 75 6e  20 20 20 20 20 20 20 46  |Obj Noun       F|
00011010  6c 61 67 73 20 37 20 36  20 35 20 34 20 33 20 32  |lags 7 6 5 4 3 2|
00011020  20 31 20 30 20 53 74 61  74 65 20 53 74 61 72 74  | 1 0 State Start|
00011030  20 44 65 73 63 72 69 62  65 20 53 68 6f 72 74 20  | Describe Short |
00011040  45 78 61 6d 69 6e 65 20  57 65 69 67 68 74 20 53  |Examine Weight S|
00011050  69 7a 65 20 43 6f 6e 74  2e 20 27 53 74 6f 72 65  |ize Cont. 'Store|
00011060  27 20 54 72 61 6e 73 2e  20 4f 70 65 6e 22 0d 6d  |' Trans. Open".m|
00011070  f6 0b f1 70 6c 69 6e 65  24 0d 6e 00 18 e3 20 4f  |...pline$.n... O|
00011080  25 3d 31 20 b8 20 6c 61  73 74 5f 6f 62 6a 65 63  |%=1 . last_objec|
00011090  74 0d 6e 0a 09 f1 3b 4f  25 3b 0d 6e 14 23 73 74  |t.n...;O%;.n.#st|
000110a0  6f 72 65 3d 73 6d 61 6c  6c 5f 61 72 65 61 25 3a  |ore=small_area%:|
000110b0  63 6f 6c 25 3d 31 3a 72  6f 77 25 3d 30 0d 6e 1e  |col%=1:row%=0.n.|
000110c0  29 f2 66 69 6c 6c 28 73  6d 61 6c 6c 5f 61 72 65  |).fill(small_are|
000110d0  61 25 2c 73 6d 61 6c 6c  5f 61 72 65 61 73 69 7a  |a%,small_areasiz|
000110e0  65 25 2c 31 33 29 0d 6e  28 0b 70 72 69 6e 74 3d  |e%,13).n(.print=|
000110f0  a3 0d 6e 32 38 f2 70 76  6f 6b 28 a4 66 69 6e 64  |..n28.pvok(.find|
00011100  6e 6f 75 6e 28 4f 25 2c  76 6f 69 64 29 2c 31 2c  |noun(O%,void),1,|
00011110  a3 29 3a f1 8a 34 29 24  73 6d 61 6c 6c 5f 61 72  |.):..4)$small_ar|
00011120  65 61 25 3b 8a 32 31 29  3b 0d 6e 3c 18 70 74 72  |ea%;.21);.n<.ptr|
00011130  25 3d 6f 64 61 74 61 25  2b 4f 25 2a 6f 5f 6c 65  |%=odata%+O%*o_le|
00011140  6e 0d 6e 46 12 e3 20 46  25 3d 37 20 b8 20 30 20  |n.nF.. F%=7 . 0 |
00011150  88 2d 31 0d 6e 50 26 e7  20 3f 70 74 72 25 20 80  |.-1.nP&. ?ptr% .|
00011160  20 28 32 5e 46 25 29 20  8c 20 f1 22 2a 20 22 3b  | (2^F%) . ."* ";|
00011170  20 8b 20 f1 22 2e 20 22  3b 0d 6e 5a 05 ed 0d 6e  | . .". ";.nZ...n|
00011180  64 86 f1 8a 33 39 29 3b  70 74 72 25 3f 31 3b 8a  |d...39);ptr%?1;.|
00011190  34 33 29 3b 70 74 72 25  3f 32 2b 32 35 36 2a 70  |43);ptr%?2+256*p|
000111a0  74 72 25 3f 33 3b 8a 35  30 29 70 74 72 25 3f 34  |tr%?3;.50)ptr%?4|
000111b0  2b 32 35 36 2a 70 74 72  25 3f 35 3b 8a 35 38 29  |+256*ptr%?5;.58)|
000111c0  3b 70 74 72 25 3f 36 2b  32 35 36 2a 70 74 72 25  |;ptr%?6+256*ptr%|
000111d0  3f 37 3b 8a 36 35 29 3b  70 74 72 25 3f 38 2b 32  |?7;.65);ptr%?8+2|
000111e0  35 36 2a 70 74 72 25 3f  39 3b 8a 37 33 29 3b 70  |56*ptr%?9;.73);p|
000111f0  74 72 25 3f 31 30 3b 8a  38 30 29 3b 70 74 72 25  |tr%?10;.80);ptr%|
00011200  3f 31 31 3b 0d 6e 6e 33  e7 20 28 70 74 72 25 3f  |?11;.nn3. (ptr%?|
00011210  31 32 20 80 20 26 38 30  29 3c 3e 30 20 8c 20 f1  |12 . &80)<>0 . .|
00011220  8a 38 35 29 22 3c 43 3e  22 3b 8a 39 32 29 3b 70  |.85)"<C>";.92);p|
00011230  74 72 25 3f 31 33 3b 0d  6e 78 1a e7 20 28 70 74  |tr%?13;.nx.. (pt|
00011240  72 25 3f 31 32 20 80 20  26 38 30 29 3c 3e 30 20  |r%?12 . &80)<>0 |
00011250  8c 0d 6e 82 16 73 74 6f  72 65 5f 72 6f 6f 6d 3d  |..n..store_room=|
00011260  70 74 72 25 3f 31 33 0d  6e 8c 26 72 6d 66 6c 61  |ptr%?13.n.&rmfla|
00011270  67 73 3d 3f 28 72 64 61  74 61 25 2b 73 74 6f 72  |gs=?(rdata%+stor|
00011280  65 5f 72 6f 6f 6d 2a 72  5f 6c 65 6e 29 0d 6e 96  |e_room*r_len).n.|
00011290  21 74 72 5f 66 6c 61 67  3d 28 72 6d 66 6c 61 67  |!tr_flag=(rmflag|
000112a0  73 20 80 20 25 31 30 30  30 30 30 29 3e 30 0d 6e  |s . %100000)>0.n|
000112b0  a0 20 6f 70 5f 66 6c 61  67 3d 28 72 6d 66 6c 61  |. op_flag=(rmfla|
000112c0  67 73 20 80 20 25 31 30  30 30 30 29 3e 30 0d 6e  |gs . %10000)>0.n|
000112d0  aa 27 e7 20 74 72 5f 66  6c 61 67 20 f1 8a 31 30  |.'. tr_flag ..10|
000112e0  30 29 3b 22 59 22 3b 20  8b 20 f1 8a 31 30 30 29  |0);"Y"; . ..100)|
000112f0  3b 22 4e 22 3b 0d 6e b4  25 e7 20 6f 70 5f 66 6c  |;"N";.n.%. op_fl|
00011300  61 67 20 f1 8a 31 30 36  29 3b 22 59 22 20 8b 20  |ag ..106);"Y" . |
00011310  f1 8a 31 30 36 29 3b 22  4e 22 0d 6e be 05 cc 0d  |..106);"N".n....|
00011320  6e c8 05 f1 0d 6e d2 05  cd 0d 6e dc 05 ed 0d 6e  |n....n....n....n|
00011330  e6 0b f1 70 6c 69 6e 65  24 0d 6e f0 0e ef 20 32  |...pline$.n... 2|
00011340  37 2c 72 65 73 65 74 0d  6e fa 0a 2a 46 58 33 2c  |7,reset.n..*FX3,|
00011350  30 0d 6f 04 05 e1 0d 6f  0e 04 0d 6f 18 12 dd 20  |0.o....o...o... |
00011360  f2 70 72 69 6e 74 5f 72  6f 6f 6d 73 0d 6f 22 13  |.print_rooms.o".|
00011370  ea 20 52 25 2c 46 25 2c  49 25 2c 70 74 72 25 0d  |. R%,F%,I%,ptr%.|
00011380  6f 2c 0b 2a 46 58 33 2c  31 30 0d 6f 36 0f ef 20  |o,.*FX3,10.o6.. |
00011390  63 6f 6e 64 65 6e 73 65  64 0d 6f 40 0b f1 70 6c  |condensed.o@..pl|
000113a0  69 6e 65 24 0d 6f 4a 1a  f2 70 72 69 6e 74 5f 66  |ine$.oJ..print_f|
000113b0  6c 61 67 73 28 72 5f 66  6c 61 67 73 25 29 0d 6f  |lags(r_flags%).o|
000113c0  54 25 f1 70 6c 69 6e 65  24 3a f1 8a 37 30 29 3b  |T%.pline$:..70);|
000113d0  22 20 2a 20 44 45 53 54  49 4e 41 54 49 4f 4e 53  |" * DESTINATIONS|
000113e0  20 2a 22 0d 6f 5e 82 f1  22 52 6f 6f 6d 20 46 6c  | *".o^.."Room Fl|
000113f0  61 67 73 20 37 36 35 34  33 32 31 30 20 53 74 61  |ags 76543210 Sta|
00011400  74 65 20 44 65 73 63 2e  20 53 68 6f 72 74 20 50  |te Desc. Short P|
00011410  69 63 74 2e 20 4e 20 20  20 20 53 20 20 20 20 45  |ict. N    S    E|
00011420  20 20 20 20 57 20 20 20  20 4e 45 20 20 20 4e 57  |    W    NE   NW|
00011430  20 20 20 53 45 20 20 20  53 57 20 20 20 55 70 20  |   SE   SW   Up |
00011440  20 20 44 6f 77 6e 20 49  6e 20 20 20 4f 75 74 20  |  Down In   Out |
00011450  20 42 61 63 6b 20 4c 65  66 74 20 52 69 67 68 20  | Back Left Righ |
00011460  4a 75 6d 70 22 0d 6f 68  0b f1 70 6c 69 6e 65 24  |Jump".oh..pline$|
00011470  0d 6f 72 16 e3 20 52 25  3d 31 20 b8 20 6c 61 73  |.or.. R%=1 . las|
00011480  74 5f 72 6f 6f 6d 0d 6f  7c 0e f1 3b 52 25 3b 8a  |t_room.o|..;R%;.|
00011490  31 31 29 3b 0d 6f 86 18  70 74 72 25 3d 72 64 61  |11);.o..ptr%=rda|
000114a0  74 61 25 2b 52 25 2a 72  5f 6c 65 6e 0d 6f 90 12  |ta%+R%*r_len.o..|
000114b0  e3 20 46 25 3d 37 20 b8  20 30 20 88 2d 31 0d 6f  |. F%=7 . 0 .-1.o|
000114c0  9a 24 e7 20 3f 70 74 72  25 20 80 20 28 32 5e 46  |.$. ?ptr% . (2^F|
000114d0  25 29 20 8c 20 f1 22 2a  22 3b 20 8b 20 f1 22 2e  |%) . ."*"; . .".|
000114e0  22 3b 0d 6f a4 05 ed 0d  6f ae 58 f1 8a 32 30 29  |";.o....o.X..20)|
000114f0  3b 70 74 72 25 3f 31 3b  8a 32 36 29 3b 70 74 72  |;ptr%?1;.26);ptr|
00011500  25 3f 32 2b 32 35 36 2a  70 74 72 25 3f 33 3b 8a  |%?2+256*ptr%?3;.|
00011510  33 32 29 3b 70 74 72 25  3f 34 2b 32 35 36 2a 70  |32);ptr%?4+256*p|
00011520  74 72 25 3f 35 3b 8a 33  38 29 3b 70 74 72 25 3f  |tr%?5;.38);ptr%?|
00011530  37 30 2b 32 35 36 2a 70  74 72 25 3f 37 31 3b 0d  |70+256*ptr%?71;.|
00011540  6f b8 13 e3 20 49 25 3d  36 20 b8 20 33 36 20 88  |o... I%=6 . 36 .|
00011550  20 32 0d 6f c2 2f f1 8a  35 2a 28 49 25 20 81 20  | 2.o./..5*(I% . |
00011560  32 2d 33 29 2b 34 34 29  3b 70 74 72 25 3f 49 25  |2-3)+44);ptr%?I%|
00011570  2b 32 35 36 2a 70 74 72  25 3f 28 49 25 2b 31 29  |+256*ptr%?(I%+1)|
00011580  3b 0d 6f cc 08 ed 20 49  25 0d 6f d6 05 f1 0d 6f  |;.o... I%.o....o|
00011590  e0 08 ed 20 52 25 0d 6f  ea 04 0d 6f f4 26 f1 70  |... R%.o...o.&.p|
000115a0  6c 69 6e 65 24 3a f1 8a  33 30 29 3b 22 20 2a 20  |line$:..30);" * |
000115b0  45 58 49 54 20 52 4f 55  54 49 4e 45 53 20 2a 22  |EXIT ROUTINES *"|
000115c0  0d 6f fe 5c f1 22 52 6f  6f 6d 20 20 4e 20 20 20  |.o.\."Room  N   |
000115d0  20 53 20 20 20 20 45 20  20 20 20 57 20 20 20 20  | S    E    W    |
000115e0  4e 45 20 20 20 4e 57 20  20 20 53 45 20 20 20 53  |NE   NW   SE   S|
000115f0  57 20 20 20 55 70 20 20  20 44 6f 77 6e 20 49 6e  |W   Up   Down In|
00011600  20 20 20 4f 75 74 20 20  42 61 63 6b 20 4c 65 66  |   Out  Back Lef|
00011610  74 20 52 69 67 68 20 4a  75 6d 70 22 0d 70 08 0b  |t Righ Jump".p..|
00011620  f1 70 6c 69 6e 65 24 0d  70 12 16 e3 20 52 25 3d  |.pline$.p... R%=|
00011630  31 20 b8 20 6c 61 73 74  5f 72 6f 6f 6d 0d 70 1c  |1 . last_room.p.|
00011640  09 f1 3b 52 25 3b 0d 70  26 18 70 74 72 25 3d 72  |..;R%;.p&.ptr%=r|
00011650  64 61 74 61 25 2b 52 25  2a 72 5f 6c 65 6e 0d 70  |data%+R%*r_len.p|
00011660  30 10 e3 20 49 25 3d 33  38 20 b8 20 35 33 0d 70  |0.. I%=38 . 53.p|
00011670  3a 1b f1 8a 35 2a 28 49  25 2d 33 38 29 2b 36 29  |:...5*(I%-38)+6)|
00011680  3b 70 74 72 25 3f 49 25  3b 0d 70 44 08 ed 20 49  |;ptr%?I%;.pD.. I|
00011690  25 0d 70 4e 05 f1 0d 70  58 08 ed 20 52 25 0d 70  |%.pN...pX.. R%.p|
000116a0  62 0b f1 70 6c 69 6e 65  24 0d 70 6c 19 f1 8a 35  |b..pline$.pl...5|
000116b0  39 29 22 2a 20 45 58 49  54 20 46 4c 41 47 53 20  |9)"* EXIT FLAGS |
000116c0  2a 22 0d 70 76 0b f1 70  6c 69 6e 65 24 0d 70 80  |*".pv..pline$.p.|
000116d0  13 f1 22 45 78 69 74 20  46 6c 61 67 3a 20 22 3b  |.."Exit Flag: ";|
000116e0  0d 70 8a 14 e3 20 66 6c  61 67 3d 37 20 b8 20 30  |.p... flag=7 . 0|
000116f0  20 88 2d 31 0d 70 94 2f  f1 8a 31 31 2b 28 37 2d  | .-1.p./..11+(7-|
00011700  66 6c 61 67 29 2a 31 35  29 3b 22 7c 22 8a 32 30  |flag)*15);"|".20|
00011710  2b 28 37 2d 66 6c 61 67  29 2a 31 35 29 3b 66 6c  |+(7-flag)*15);fl|
00011720  61 67 3b 0d 70 9e 05 ed  0d 70 a8 12 f1 8a 31 31  |ag;.p....p....11|
00011730  2b 38 2a 31 35 29 3b 22  7c 22 0d 70 b2 12 f1 22  |+8*15);"|".p..."|
00011740  44 65 73 63 72 69 70 74  27 6e 22 3b 0d 70 bc 14  |Descript'n";.p..|
00011750  e3 20 66 6c 61 67 3d 37  20 b8 20 30 20 88 2d 31  |. flag=7 . 0 .-1|
00011760  0d 70 c6 2d f1 8a 31 30  2b 28 37 2d 66 6c 61 67  |.p.-..10+(7-flag|
00011770  29 2a 31 35 29 3b 22 20  7c 20 22 3b 65 78 69 74  |)*15);" | ";exit|
00011780  5f 66 6c 61 67 24 28 66  6c 61 67 29 3b 0d 70 d0  |_flag$(flag);.p.|
00011790  05 ed 0d 70 da 13 f1 8a  31 30 2b 38 2a 31 35 29  |...p....10+8*15)|
000117a0  3b 22 20 7c 22 0d 70 e4  0b f1 70 6c 69 6e 65 24  |;" |".p...pline$|
000117b0  0d 70 ee 8b f1 8a 34 29  3b 22 20 4e 6f 72 74 68  |.p....4);" North|
000117c0  20 20 20 53 6f 75 74 68  20 20 20 20 45 61 73 74  |   South    East|
000117d0  20 20 20 20 57 65 73 74  20 20 20 4e 6f 27 65 61  |    West   No'ea|
000117e0  73 74 20 4e 6f 27 77 65  73 74 20 53 6f 27 65 61  |st No'west So'ea|
000117f0  73 74 20 53 6f 27 77 65  73 74 20 20 20 55 70 20  |st So'west   Up |
00011800  20 20 20 20 44 6f 77 6e  20 20 20 20 20 49 6e 20  |    Down     In |
00011810  20 20 20 20 4f 75 74 20  20 20 20 20 42 61 63 6b  |    Out     Back|
00011820  20 20 20 20 4c 65 66 74  20 20 20 20 52 69 67 68  |    Left    Righ|
00011830  74 20 20 20 4a 75 6d 70  20 20 22 0d 70 f8 16 e3  |t   Jump  ".p...|
00011840  20 52 25 3d 31 20 b8 20  6c 61 73 74 5f 72 6f 6f  | R%=1 . last_roo|
00011850  6d 0d 71 02 2c e7 20 52  25 3d 31 20 84 20 52 25  |m.q.,. R%=1 . R%|
00011860  20 83 20 31 30 3d 30 20  8c 20 f1 8a 34 29 c4 31  | . 10=0 . ..4).1|
00011870  36 2c 22 7c 2d 2d 2d 2d  2d 2d 2d 22 29 0d 71 0c  |6,"|-------").q.|
00011880  09 f1 3b 52 25 3b 0d 71  16 18 70 74 72 25 3d 72  |..;R%;.q..ptr%=r|
00011890  64 61 74 61 25 2b 52 25  2a 72 5f 6c 65 6e 0d 71  |data%+R%*r_len.q|
000118a0  20 09 f1 8a 34 29 3b 0d  71 2a 10 e3 20 49 25 3d  | ...4);.q*.. I%=|
000118b0  35 34 20 b8 20 36 39 0d  71 34 12 e3 20 46 25 3d  |54 . 69.q4.. F%=|
000118c0  37 20 b8 20 30 20 88 2d  31 0d 71 3e 29 e7 20 3f  |7 . 0 .-1.q>). ?|
000118d0  28 70 74 72 25 2b 49 25  29 20 80 20 28 32 5e 46  |(ptr%+I%) . (2^F|
000118e0  25 29 20 8c 20 f1 22 2a  22 3b 20 8b 20 f1 22 2e  |%) . ."*"; . .".|
000118f0  22 3b 0d 71 48 08 ed 20  46 25 0d 71 52 08 ed 20  |";.qH.. F%.qR.. |
00011900  49 25 0d 71 5c 05 f1 0d  71 66 08 ed 20 52 25 0d  |I%.q\...qf.. R%.|
00011910  71 70 0b f1 70 6c 69 6e  65 24 0d 71 7a 0e ef 20  |qp..pline$.qz.. |
00011920  32 37 2c 72 65 73 65 74  0d 71 84 0a 2a 46 58 33  |27,reset.q..*FX3|
00011930  2c 30 0d 71 8e 05 e1 0d  71 98 04 0d 71 a2 18 dd  |,0.q....q...q...|
00011940  20 f2 70 72 69 6e 74 5f  66 6c 61 67 73 28 6d 65  | .print_flags(me|
00011950  6d 25 29 0d 71 ac 13 f1  22 46 6c 61 67 3a 20 20  |m%).q..."Flag:  |
00011960  20 20 20 20 22 3b 0d 71  b6 14 e3 20 66 6c 61 67  |    ";.q... flag|
00011970  3d 37 20 b8 20 30 20 88  2d 31 0d 71 c0 2f f1 8a  |=7 . 0 .-1.q./..|
00011980  31 31 2b 28 37 2d 66 6c  61 67 29 2a 31 35 29 3b  |11+(7-flag)*15);|
00011990  22 7c 22 8a 32 30 2b 28  37 2d 66 6c 61 67 29 2a  |"|".20+(7-flag)*|
000119a0  31 35 29 3b 66 6c 61 67  3b 0d 71 ca 05 ed 0d 71  |15);flag;.q....q|
000119b0  d4 12 f1 8a 31 31 2b 38  2a 31 35 29 3b 22 7c 22  |....11+8*15);"|"|
000119c0  0d 71 de 12 f1 22 44 65  73 63 72 69 70 74 27 6e  |.q..."Descript'n|
000119d0  22 3b 0d 71 e8 14 e3 20  66 6c 61 67 3d 37 20 b8  |";.q... flag=7 .|
000119e0  20 30 20 88 2d 31 0d 71  f2 2b f1 8a 31 30 2b 28  | 0 .-1.q.+..10+(|
000119f0  37 2d 66 6c 61 67 29 2a  28 6d 61 78 64 25 2d 31  |7-flag)*(maxd%-1|
00011a00  2b 33 29 29 3b 22 20 7c  20 22 3b 24 6d 65 6d 25  |+3));" | ";$mem%|
00011a10  3b 0d 71 fc 0f 6d 65 6d  25 2b 3d 6d 61 78 64 25  |;.q..mem%+=maxd%|
00011a20  0d 72 06 05 ed 0d 72 10  1c f1 8a 31 30 2b 38 2a  |.r....r....10+8*|
00011a30  28 6d 61 78 64 25 2d 31  2b 33 29 29 3b 22 20 7c  |(maxd%-1+3));" ||
00011a40  22 0d 72 1a 05 e1 0d 72  24 04 0d 72 2e 12 dd 20  |".r....r$..r... |
00011a50  f2 70 72 69 6e 74 5f 76  6f 63 61 62 0d 72 38 0b  |.print_vocab.r8.|
00011a60  70 72 69 6e 74 3d b9 0d  72 42 15 f2 70 75 74 28  |print=..rB..put(|
00011a70  70 6c 69 6e 65 32 24 2b  bd 31 33 29 0d 72 4c 2a  |pline2$+.13).rL*|
00011a80  f2 70 75 74 28 c4 33 37  2c 22 20 22 29 2b 22 4e  |.put(.37," ")+"N|
00011a90  6f 75 6e 73 3a 22 2b bd  31 33 29 3a f2 6c 69 73  |ouns:"+.13):.lis|
00011aa0  74 6e 6f 75 6e 73 0d 72  56 15 f2 70 75 74 28 70  |tnouns.rV..put(p|
00011ab0  6c 69 6e 65 32 24 2b bd  31 33 29 0d 72 60 2a f2  |line2$+.13).r`*.|
00011ac0  70 75 74 28 c4 33 37 2c  22 20 22 29 2b 22 56 65  |put(.37," ")+"Ve|
00011ad0  72 62 73 3a 22 2b bd 31  33 29 3a f2 6c 69 73 74  |rbs:"+.13):.list|
00011ae0  76 65 72 62 73 0d 72 6a  15 f2 70 75 74 28 70 6c  |verbs.rj..put(pl|
00011af0  69 6e 65 32 24 2b bd 31  33 29 0d 72 74 2e f2 70  |ine2$+.13).rt..p|
00011b00  75 74 28 c4 33 34 2c 22  20 22 29 2b 22 41 64 6a  |ut(.34," ")+"Adj|
00011b10  65 63 74 69 76 65 73 3a  22 2b bd 31 33 29 3a f2  |ectives:"+.13):.|
00011b20  6c 69 73 74 61 64 6a 73  0d 72 7e 15 f2 70 75 74  |listadjs.r~..put|
00011b30  28 70 6c 69 6e 65 32 24  2b bd 31 33 29 0d 72 88  |(pline2$+.13).r.|
00011b40  31 f2 70 75 74 28 c4 33  33 2c 22 20 22 29 2b 22  |1.put(.33," ")+"|
00011b50  43 6f 6e 6a 75 6e 63 74  69 6f 6e 73 3a 22 2b bd  |Conjunctions:"+.|
00011b60  31 33 29 3a f2 6c 69 73  74 63 6f 6e 6a 73 0d 72  |13):.listconjs.r|
00011b70  92 15 f2 70 75 74 28 70  6c 69 6e 65 32 24 2b bd  |...put(pline2$+.|
00011b80  31 33 29 0d 72 9c 31 f2  70 75 74 28 c4 33 33 2c  |13).r.1.put(.33,|
00011b90  22 20 22 29 2b 22 50 72  65 70 6f 73 69 74 69 6f  |" ")+"Prepositio|
00011ba0  6e 73 3a 22 2b bd 31 33  29 3a f2 6c 69 73 74 70  |ns:"+.13):.listp|
00011bb0  72 65 70 73 0d 72 a6 15  f2 70 75 74 28 70 6c 69  |reps.r...put(pli|
00011bc0  6e 65 32 24 2b bd 31 33  29 0d 72 b0 2d f2 70 75  |ne2$+.13).r.-.pu|
00011bd0  74 28 c4 33 35 2c 22 20  22 29 2b 22 53 70 65 63  |t(.35," ")+"Spec|
00011be0  69 61 6c 73 3a 22 2b bd  31 33 29 3a f2 6c 69 73  |ials:"+.13):.lis|
00011bf0  74 73 70 65 63 73 0d 72  ba 15 f2 70 75 74 28 70  |tspecs.r...put(p|
00011c00  6c 69 6e 65 32 24 2b bd  31 33 29 0d 72 c4 2a f2  |line2$+.13).r.*.|
00011c10  70 75 74 28 c4 33 37 2c  22 20 22 29 2b 22 4e 6f  |put(.37," ")+"No|
00011c20  69 73 65 3a 22 2b bd 31  33 29 3a f2 6c 69 73 74  |ise:"+.13):.list|
00011c30  6e 6f 69 73 65 0d 72 ce  15 f2 70 75 74 28 70 6c  |noise.r...put(pl|
00011c40  69 6e 65 32 24 2b bd 31  33 29 0d 72 d8 0b 70 72  |ine2$+.13).r..pr|
00011c50  69 6e 74 3d a3 0d 72 e2  05 e1 0d 72 ec 04 0d 72  |int=..r....r...r|
00011c60  f6 10 dd 20 f2 70 72 69  6e 74 5f 70 69 78 0d 73  |... .print_pix.s|
00011c70  00 0a ea 20 6d 70 74 72  0d 73 0a 1d 70 72 69 6e  |... mptr.s..prin|
00011c80  74 3d b9 3a c8 99 20 22  48 6f 75 72 67 6c 61 73  |t=.:.. "Hourglas|
00011c90  73 5f 4f 6e 22 0d 73 14  04 0d 73 1e 0d e7 20 70  |s_On".s...s... p|
00011ca0  78 6e 3e 31 20 8c 0d 73  28 0f 6d 70 74 72 3d 70  |xn>1 ..s(.mptr=p|
00011cb0  69 78 73 2b 33 0d 73 32  12 e3 20 49 25 3d 31 20  |ixs+3.s2.. I%=1 |
00011cc0  b8 20 70 78 6e 2d 31 0d  73 3c 16 20 20 f2 70 75  |. pxn-1.s<.  .pu|
00011cd0  74 28 c3 28 49 25 29 2b  22 3d 20 22 29 0d 73 46  |t(.(I%)+"= ").sF|
00011ce0  11 20 20 f2 70 75 74 28  24 6d 70 74 72 29 0d 73  |.  .put($mptr).s|
00011cf0  50 14 20 20 6d 70 74 72  2b 3d a9 24 6d 70 74 72  |P.  mptr+=.$mptr|
00011d00  2b 31 0d 73 5a 24 20 20  f2 70 75 74 28 22 2c 3c  |+1.sZ$  .put(",<|
00011d10  22 2b 70 6f 73 24 28 3f  6d 70 74 72 29 2b 22 3e  |"+pos$(?mptr)+">|
00011d20  22 2b bd 31 33 29 0d 73  64 0d 20 20 6d 70 74 72  |"+.13).sd.  mptr|
00011d30  2b 3d 35 0d 73 6e 05 ed  0d 73 78 05 cd 0d 73 82  |+=5.sn...sx...s.|
00011d40  04 0d 73 8c 1e 70 72 69  6e 74 3d a3 3a c8 99 20  |..s..print=.:.. |
00011d50  22 48 6f 75 72 67 6c 61  73 73 5f 4f 66 66 22 0d  |"Hourglass_Off".|
00011d60  73 96 05 e1 0d 73 a0 04  0d 73 aa 0b dd 20 f2 73  |s....s...s... .s|
00011d70  63 61 6e 0d 73 b4 1b 6f  6c 64 70 74 72 3d 70 72  |can.s..oldptr=pr|
00011d80  67 70 74 72 3a 6e 75 6d  66 6c 61 67 3d 30 0d 73  |gptr:numflag=0.s|
00011d90  be 26 70 74 72 3d 31 3a  6c 65 6e 3d a9 20 6c 69  |.&ptr=1:len=. li|
00011da0  6e 65 24 3a e7 20 6c 65  6e 3d 30 20 8c 20 e5 20  |ne$:. len=0 . . |
00011db0  8d 40 58 75 0d 73 c8 05  f5 0d 73 d2 0c 74 65 6d  |.@Xu.s....s..tem|
00011dc0  70 24 3d 22 22 0d 73 dc  22 c8 95 20 c1 6c 69 6e  |p$="".s.".. .lin|
00011dd0  65 24 2c 70 74 72 2c 31  29 3c 22 41 22 20 80 20  |e$,ptr,1)<"A" . |
00011de0  70 74 72 3c 6c 65 6e 0d  73 e6 0a 70 74 72 2b 3d  |ptr<len.s..ptr+=|
00011df0  31 0d 73 f0 05 ce 0d 73  fa 0c 76 70 74 72 3d 70  |1.s....s..vptr=p|
00011e00  74 72 0d 74 04 22 c8 95  20 c1 6c 69 6e 65 24 2c  |tr.t.".. .line$,|
00011e10  70 74 72 2c 31 29 3e 22  40 22 20 80 20 70 74 72  |ptr,1)>"@" . ptr|
00011e20  3c 6c 65 6e 0d 74 0e 24  74 65 6d 70 24 3d 74 65  |<len.t.$temp$=te|
00011e30  6d 70 24 2b c1 6c 69 6e  65 24 2c 70 74 72 2c 31  |mp$+.line$,ptr,1|
00011e40  29 3a 70 74 72 2b 3d 31  0d 74 18 05 ce 0d 74 22  |):ptr+=1.t....t"|
00011e50  11 e7 20 74 65 6d 70 24  3c 3e 22 22 20 8c 0d 74  |.. temp$<>"" ..t|
00011e60  2c 21 f2 6c 6f 6f 6b 75  70 28 74 65 6d 70 24 2c  |,!.lookup(temp$,|
00011e70  74 6f 6b 65 6e 2c 69 6e  66 6f 5f 70 74 72 29 0d  |token,info_ptr).|
00011e80  74 36 41 e7 20 74 6f 6b  65 6e 3d 30 20 f2 65 72  |t6A. token=0 .er|
00011e90  72 6f 72 28 30 2c 22 3a  20 22 2b c1 6c 69 6e 65  |ror(0,": "+.line|
00011ea0  24 2c 76 70 74 72 2c 33  30 29 29 3a 70 72 67 70  |$,vptr,30)):prgp|
00011eb0  74 72 3d 6f 6c 64 70 74  72 3a e5 20 8d 40 44 75  |tr=oldptr:. .@Du|
00011ec0  0d 74 40 25 e7 20 74 6f  6b 65 6e 3d 64 65 66 5f  |.t@%. token=def_|
00011ed0  74 6f 6b 65 6e 20 8c 20  f2 64 6f 64 65 66 6e 3a  |token . .dodefn:|
00011ee0  e5 8d 40 44 75 0d 74 4a  29 3f 70 72 67 70 74 72  |..@Du.tJ)?prgptr|
00011ef0  3d 74 6f 6b 65 6e 3a 74  6f 6b 70 74 72 3d 70 72  |=token:tokptr=pr|
00011f00  67 70 74 72 3a 70 72 67  70 74 72 2b 3d 31 0d 74  |gptr:prgptr+=1.t|
00011f10  54 46 70 5f 69 6e 66 6f  3d 69 6e 66 6f 25 28 69  |TFp_info=info%(i|
00011f20  6e 66 6f 25 28 74 6f 6b  65 6e 2d 66 69 72 73 74  |nfo%(token-first|
00011f30  5f 74 6f 6b 65 6e 2b 31  2c 32 29 2c 31 29 3a 70  |_token+1,2),1):p|
00011f40  61 72 61 6d 73 3d 70 5f  69 6e 66 6f 20 80 20 25  |arams=p_info . %|
00011f50  31 31 31 31 0d 74 5e 0a  70 74 72 2b 3d 31 0d 74  |1111.t^.ptr+=1.t|
00011f60  68 12 e7 20 70 61 72 61  6d 73 20 3c 3e 30 20 8c  |h.. params <>0 .|
00011f70  0d 74 72 13 e3 20 49 25  3d 31 20 b8 20 70 61 72  |.tr.. I%=1 . par|
00011f80  61 6d 73 0d 74 7c 29 20  c8 95 20 a7 22 2c 20 22  |ams.t|) .. .", "|
00011f90  2c c1 6c 69 6e 65 24 2c  70 74 72 2c 31 29 29 3c  |,.line$,ptr,1))<|
00011fa0  3e 30 20 80 20 70 74 72  3c 6c 65 6e 0d 74 86 0c  |>0 . ptr<len.t..|
00011fb0  20 20 70 74 72 2b 3d 31  0d 74 90 06 20 ce 0d 74  |  ptr+=1.t.. ..t|
00011fc0  9a 43 20 20 e7 20 74 6f  6b 65 6e 3e 3d 76 61 72  |.C  . token>=var|
00011fd0  5f 74 6f 6b 65 6e 20 80  20 49 25 3d 31 20 8c 20  |_token . I%=1 . |
00011fe0  f2 67 65 74 5f 76 61 72  28 70 74 72 2c 70 74 72  |.get_var(ptr,ptr|
00011ff0  2c 70 61 72 61 6d 76 61  6c 75 65 2c 76 70 74 72  |,paramvalue,vptr|
00012000  29 0d 74 a4 6d 20 20 e7  20 74 6f 6b 65 6e 3e 3d  |).t.m  . token>=|
00012010  76 61 72 5f 74 6f 6b 65  6e 20 80 20 49 25 3e 31  |var_token . I%>1|
00012020  20 8c 20 f2 67 65 74 5f  6e 75 6d 5f 6f 72 5f 76  | . .get_num_or_v|
00012030  61 72 28 70 74 72 2c 70  74 72 2c 70 61 72 61 6d  |ar(ptr,ptr,param|
00012040  76 61 6c 75 65 2c 76 61  72 66 6c 61 67 29 3a e7  |value,varflag):.|
00012050  20 76 61 72 66 6c 61 67  20 8c 20 3f 74 6f 6b 70  | varflag . ?tokp|
00012060  74 72 3d 3f 74 6f 6b 70  74 72 2b 26 31 30 0d 74  |tr=?tokptr+&10.t|
00012070  ae 19 20 20 e7 20 74 6f  6b 65 6e 3c 76 61 72 5f  |..  . token<var_|
00012080  74 6f 6b 65 6e 20 8c 0d  74 b8 85 20 20 e7 20 c1  |token ..t..  . .|
00012090  6c 69 6e 65 24 2c 70 74  72 2c 31 29 3d bd 33 34  |line$,ptr,1)=.34|
000120a0  20 f2 64 65 63 6f 64 65  5f 73 74 72 69 6e 67 28  | .decode_string(|
000120b0  6c 69 6e 65 24 2c 70 74  72 2c 70 74 72 2c 70 61  |line$,ptr,ptr,pa|
000120c0  72 61 6d 76 61 6c 75 65  2c a4 66 6e 74 79 70 65  |ramvalue,.fntype|
000120d0  28 70 5f 69 6e 66 6f 29  29 20 8b 20 f2 64 65 63  |(p_info)) . .dec|
000120e0  6f 64 65 5f 70 61 72 61  6d 65 74 65 72 28 6c 69  |ode_parameter(li|
000120f0  6e 65 24 2c 70 74 72 2c  70 74 72 2c 70 61 72 61  |ne$,ptr,ptr,para|
00012100  6d 76 61 6c 75 65 2c 76  70 74 72 29 0d 74 c2 07  |mvalue,vptr).t..|
00012110  20 20 cd 0d 74 cc 16 20  20 e7 20 65 72 72 66 6c  |  ..t..  . errfl|
00012120  61 67 20 8c 20 8d 40 44  75 0d 74 d6 5e 20 20 e7  |ag . .@Du.t.^  .|
00012130  20 70 61 72 61 6d 76 61  6c 75 65 3e 69 6e 66 6f  | paramvalue>info|
00012140  25 28 69 6e 66 6f 5f 70  74 72 2c 49 25 2b 32 29  |%(info_ptr,I%+2)|
00012150  20 f2 65 72 72 6f 72 28  32 2c c3 28 69 6e 66 6f  | .error(2,.(info|
00012160  25 28 69 6e 66 6f 5f 70  74 72 2c 49 25 2b 32 29  |%(info_ptr,I%+2)|
00012170  29 2b 22 20 28 22 2b 74  65 6d 70 24 2b 22 29 22  |)+" ("+temp$+")"|
00012180  29 3a e5 8d 40 44 75 0d  74 e0 2a 20 20 e7 20 69  |):..@Du.t.*  . i|
00012190  6e 66 6f 25 28 69 6e 66  6f 5f 70 74 72 2c 49 25  |nfo%(info_ptr,I%|
000121a0  2b 32 29 3c 32 35 36 20  8c 20 62 79 74 65 73 3d  |+2)<256 . bytes=|
000121b0  31 0d 74 ea 47 20 20 e7  20 69 6e 66 6f 25 28 69  |1.t.G  . info%(i|
000121c0  6e 66 6f 5f 70 74 72 2c  49 25 2b 32 29 3e 32 35  |nfo_ptr,I%+2)>25|
000121d0  35 20 80 20 69 6e 66 6f  25 28 69 6e 66 6f 5f 70  |5 . info%(info_p|
000121e0  74 72 2c 49 25 2b 32 29  3c 36 35 35 33 36 20 8c  |tr,I%+2)<65536 .|
000121f0  20 62 79 74 65 73 3d 32  0d 74 f4 2c 20 20 e7 20  | bytes=2.t.,  . |
00012200  69 6e 66 6f 25 28 69 6e  66 6f 5f 70 74 72 2c 49  |info%(info_ptr,I|
00012210  25 2b 32 29 3e 36 35 35  33 35 20 8c 20 62 79 74  |%+2)>65535 . byt|
00012220  65 73 3d 33 0d 74 fe 16  20 20 e3 20 4a 25 3d 30  |es=3.t..  . J%=0|
00012230  20 b8 20 62 79 74 65 73  2d 31 0d 75 08 25 20 20  | . bytes-1.u.%  |
00012240  20 20 4a 25 3f 70 72 67  70 74 72 3d 70 61 72 61  |  J%?prgptr=para|
00012250  6d 76 61 6c 75 65 20 81  20 32 35 36 5e 4a 25 0d  |mvalue . 256^J%.|
00012260  75 12 0a 20 20 ed 20 4a  25 0d 75 1c 13 20 20 70  |u..  . J%.u..  p|
00012270  72 67 70 74 72 2b 3d 62  79 74 65 73 0d 75 26 08  |rgptr+=bytes.u&.|
00012280  ed 20 49 25 0d 75 30 05  cd 0d 75 3a 05 cd 0d 75  |. I%.u0...u:...u|
00012290  44 26 fd 20 70 74 72 3e  3d 28 6c 65 6e 2d 31 29  |D&. ptr>=(len-1)|
000122a0  20 84 20 74 6f 6b 65 6e  3d 30 20 84 20 65 72 72  | . token=0 . err|
000122b0  66 6c 61 67 0d 75 4e 2c  e7 20 74 6f 6b 65 6e 3d  |flag.uN,. token=|
000122c0  30 20 84 20 65 72 72 66  6c 61 67 20 8c 20 f2 72  |0 . errflag . .r|
000122d0  65 73 74 6f 72 65 5f 65  6e 64 3a e5 8d 40 62 75  |estore_end:..@bu|
000122e0  0d 75 58 18 3f 70 72 67  70 74 72 3d 31 33 3a 70  |.uX.?prgptr=13:p|
000122f0  72 67 70 74 72 2b 3d 31  0d 75 62 05 e1 0d 75 6c  |rgptr+=1.ub...ul|
00012300  04 0d 75 76 12 dd 20 f2  72 65 73 74 6f 72 65 5f  |..uv.. .restore_|
00012310  65 6e 64 0d 75 80 1b 70  72 67 70 74 72 3d 6f 6c  |end.u..prgptr=ol|
00012320  64 70 74 72 3a 3f 70 72  67 70 74 72 3d 30 0d 75  |dptr:?prgptr=0.u|
00012330  8a 05 e1 0d 75 94 04 0d  75 9e 1a dd 20 f2 65 72  |....u...u... .er|
00012340  72 6f 72 28 65 72 72 5f  6e 75 6d 2c 65 72 72 24  |ror(err_num,err$|
00012350  29 0d 75 a8 0d 65 72 72  66 6c 61 67 3d b9 0d 75  |).u..errflag=..u|
00012360  b2 3b 6e 75 6c 6c 20 3d  a4 65 72 72 6f 72 62 6f  |.;null =.errorbo|
00012370  78 28 65 72 72 6f 72 24  28 65 72 72 5f 6e 75 6d  |x(error$(err_num|
00012380  29 2b 22 20 22 2b 65 72  72 24 2c 65 72 72 5f 6e  |)+" "+err$,err_n|
00012390  75 6d 2c 31 2c 2d 39 39  29 0d 75 bc 05 e1 0d 75  |um,1,-99).u....u|
000123a0  c6 04 0d 75 d0 2d dd 20  f2 66 69 6e 64 5f 74 6f  |...u.-. .find_to|
000123b0  6b 65 6e 28 41 24 28 29  2c 73 65 61 72 63 68 24  |ken(A$(),search$|
000123c0  2c f8 20 74 6f 6b 65 6e  2c f8 20 6d 69 64 29 0d  |,. token,. mid).|
000123d0  75 da 26 ea 20 66 69 72  73 74 2c 6c 61 73 74 2c  |u.&. first,last,|
000123e0  73 74 6f 70 5f 73 65 61  72 63 68 2c 66 6f 75 6e  |stop_search,foun|
000123f0  64 2c 6c 65 6e 0d 75 e4  11 6c 65 6e 3d a9 20 73  |d,len.u..len=. s|
00012400  65 61 72 63 68 24 0d 75  ee 0b 66 69 72 73 74 3d  |earch$.u..first=|
00012410  31 0d 75 f8 12 6c 61 73  74 3d de 28 41 24 28 29  |1.u..last=.(A$()|
00012420  2c 31 29 0d 76 02 19 73  74 6f 70 5f 73 65 61 72  |,1).v..stop_sear|
00012430  63 68 3d a3 3a 66 6f 75  6e 64 3d a3 0d 76 0c 05  |ch=.:found=..v..|
00012440  f5 0d 76 16 09 f2 63 68  6f 70 0d 76 20 11 fd 20  |..v...chop.v .. |
00012450  73 74 6f 70 5f 73 65 61  72 63 68 0d 76 2a 2a e7  |stop_search.v**.|
00012460  20 66 6f 75 6e 64 20 8c  20 74 6f 6b 65 6e 3d 69  | found . token=i|
00012470  6e 66 6f 25 28 6d 69 64  2c 30 29 20 8b 20 74 6f  |nfo%(mid,0) . to|
00012480  6b 65 6e 3d 30 0d 76 34  05 e1 0d 76 3e 04 0d 76  |ken=0.v4...v>..v|
00012490  48 0b dd 20 f2 63 68 6f  70 0d 76 52 18 6d 69 64  |H.. .chop.vR.mid|
000124a0  3d 28 66 69 72 73 74 2b  6c 61 73 74 29 20 81 20  |=(first+last) . |
000124b0  32 0d 76 5c 0e 41 24 3d  41 24 28 6d 69 64 29 0d  |2.v\.A$=A$(mid).|
000124c0  76 66 2a e7 20 41 24 3d  73 65 61 72 63 68 24 20  |vf*. A$=search$ |
000124d0  8c 20 73 74 6f 70 5f 73  65 61 72 63 68 3d b9 3a  |. stop_search=.:|
000124e0  66 6f 75 6e 64 3d b9 3a  e1 0d 76 70 12 e7 20 41  |found=.:..vp.. A|
000124f0  24 3e 73 65 61 72 63 68  24 20 8c 0d 76 7a 0e 6c  |$>search$ ..vz.l|
00012500  61 73 74 3d 6d 69 64 2d  31 0d 76 84 05 cc 0d 76  |ast=mid-1.v....v|
00012510  8e 0f 66 69 72 73 74 3d  6d 69 64 2b 31 0d 76 98  |..first=mid+1.v.|
00012520  05 cd 0d 76 a2 20 e7 20  66 69 72 73 74 3e 6c 61  |...v. . first>la|
00012530  73 74 20 8c 20 73 74 6f  70 5f 73 65 61 72 63 68  |st . stop_search|
00012540  3d b9 0d 76 ac 05 e1 0d  76 b6 04 0d 76 c0 26 dd  |=..v....v...v.&.|
00012550  20 f2 6c 6f 6f 6b 75 70  28 73 65 61 72 63 68 24  | .lookup(search$|
00012560  2c f8 20 74 6f 6b 65 6e  2c f8 20 69 6e 64 65 78  |,. token,. index|
00012570  29 0d 76 ca 0e ea 20 49  25 2c 66 6f 75 6e 64 0d  |).v... I%,found.|
00012580  76 d4 0b 74 6f 6b 65 6e  3d 30 0d 76 de 14 e7 20  |v..token=0.v... |
00012590  73 65 61 72 63 68 24 3d  22 22 20 8c 20 e1 0d 76  |search$="" . ..v|
000125a0  e8 2f f2 66 69 6e 64 5f  74 6f 6b 65 6e 28 6b 65  |./.find_token(ke|
000125b0  79 77 6f 72 64 24 28 29  2c 73 65 61 72 63 68 24  |yword$(),search$|
000125c0  2c 74 6f 6b 65 6e 2c 69  6e 64 65 78 29 0d 76 f2  |,token,index).v.|
000125d0  05 e1 0d 76 fc 04 0d 77  06 08 49 25 3d 31 0d 77  |...v...w..I%=1.w|
000125e0  10 05 f5 0d 77 1a 51 e7  20 a7 c0 6b 65 79 77 6f  |....w.Q. ..keywo|
000125f0  72 64 24 28 49 25 29 2c  a9 28 73 65 61 72 63 68  |rd$(I%),.(search|
00012600  24 29 29 2c 73 65 61 72  63 68 24 29 3c 3e 30 20  |$)),search$)<>0 |
00012610  8c 20 74 6f 6b 65 6e 3d  69 6e 66 6f 25 28 49 25  |. token=info%(I%|
00012620  2c 30 29 3a 66 6f 75 6e  64 3d b9 3a 69 6e 64 65  |,0):found=.:inde|
00012630  78 3d 49 25 0d 77 24 09  49 25 2b 3d 31 0d 77 2e  |x=I%.w$.I%+=1.w.|
00012640  1b fd 20 66 6f 75 6e 64  20 84 20 49 25 3d 6b 65  |.. found . I%=ke|
00012650  79 77 6f 72 64 73 2b 31  0d 77 38 05 e1 0d 77 42  |ywords+1.w8...wB|
00012660  04 0d 77 4c 39 dd 20 f2  64 65 63 6f 64 65 5f 70  |..wL9. .decode_p|
00012670  61 72 61 6d 65 74 65 72  28 6c 69 6e 65 24 2c 70  |arameter(line$,p|
00012680  6c 61 63 65 2c f8 20 70  6c 61 63 65 2c f8 20 76  |lace,. place,. v|
00012690  61 6c 75 65 2c 76 70 74  72 29 0d 77 56 0c ea 20  |alue,vptr).wV.. |
000126a0  74 65 6d 70 31 24 0d 77  60 2a c8 95 20 a7 22 20  |temp1$.w`*.. ." |
000126b0  28 2c 22 2c c1 6c 69 6e  65 24 2c 70 6c 61 63 65  |(,",.line$,place|
000126c0  2c 31 29 29 3c 3e 30 20  70 6c 61 63 65 2b 3d 31  |,1))<>0 place+=1|
000126d0  0d 77 6a 05 ce 0d 77 74  61 c8 95 20 a7 22 30 31  |.wj...wta.. ."01|
000126e0  32 33 34 35 36 37 38 39  22 2c c1 6c 69 6e 65 24  |23456789",.line$|
000126f0  2c 70 6c 61 63 65 2c 31  29 29 3c 3e 30 20 80 20  |,place,1))<>0 . |
00012700  70 6c 61 63 65 3c 3d a9  28 6c 69 6e 65 24 29 20  |place<=.(line$) |
00012710  74 65 6d 70 31 24 3d 74  65 6d 70 31 24 2b c1 6c  |temp1$=temp1$+.l|
00012720  69 6e 65 24 2c 70 6c 61  63 65 2c 31 29 3a 70 6c  |ine$,place,1):pl|
00012730  61 63 65 2b 3d 31 0d 77  7e 05 ce 0d 77 88 25 e7  |ace+=1.w~...w.%.|
00012740  20 a7 22 29 20 2c 22 2b  bd 31 33 2c c1 6c 69 6e  | .") ,"+.13,.lin|
00012750  65 24 2c 70 6c 61 63 65  2c 31 29 29 3d 30 20 8c  |e$,place,1))=0 .|
00012760  0d 77 92 2c f2 65 72 72  6f 72 28 31 2c 22 3a 20  |.w.,.error(1,": |
00012770  22 2b c1 6c 69 6e 65 24  2c 76 70 74 72 2c 33 30  |"+.line$,vptr,30|
00012780  29 29 3a 65 72 72 66 6c  61 67 3d b9 0d 77 9c 05  |)):errflag=..w..|
00012790  cc 0d 77 a6 13 76 61 6c  75 65 3d bb 28 74 65 6d  |..w..value=.(tem|
000127a0  70 31 24 29 0d 77 b0 05  cd 0d 77 ba 05 e1 0d 77  |p1$).w....w....w|
000127b0  c4 04 0d 77 ce 36 dd 20  f2 64 65 63 6f 64 65 5f  |...w.6. .decode_|
000127c0  73 74 72 69 6e 67 28 6c  69 6e 65 24 2c 70 6c 61  |string(line$,pla|
000127d0  63 65 2c f8 20 70 6c 61  63 65 2c f8 20 76 61 6c  |ce,. place,. val|
000127e0  75 65 2c 74 79 70 65 29  0d 77 d8 18 ea 20 74 65  |ue,type).w... te|
000127f0  6d 70 31 24 2c 64 75 6d  6d 79 24 2c 76 70 74 72  |mp1$,dummy$,vptr|
00012800  0d 77 e2 10 76 70 74 72  3d 70 6c 61 63 65 2d 31  |.w..vptr=place-1|
00012810  0d 77 ec 0c 70 6c 61 63  65 2b 3d 31 0d 77 f6 0d  |.w..place+=1.w..|
00012820  74 65 6d 70 31 24 3d 22  22 0d 78 00 2f c8 95 20  |temp1$="".x./.. |
00012830  28 a7 bd 33 34 2c c1 6c  69 6e 65 24 2c 70 6c 61  |(..34,.line$,pla|
00012840  63 65 2c 31 29 29 3d 30  20 80 20 70 6c 61 63 65  |ce,1))=0 . place|
00012850  3c a9 6c 69 6e 65 24 29  0d 78 0a 1b 74 65 6d 70  |<.line$).x..temp|
00012860  31 24 2b 3d c1 6c 69 6e  65 24 2c 70 6c 61 63 65  |1$+=.line$,place|
00012870  2c 31 29 0d 78 14 0c 70  6c 61 63 65 2b 3d 31 0d  |,1).x..place+=1.|
00012880  78 1e 05 ce 0d 78 28 39  e7 20 a7 bd 33 34 2c c1  |x....x(9. ..34,.|
00012890  6c 69 6e 65 24 2c 70 6c  61 63 65 2c 31 29 29 3c  |line$,place,1))<|
000128a0  3e 30 20 8c 20 70 6c 61  63 65 2b 3d 31 3a f4 20  |>0 . place+=1:. |
000128b0  61 64 64 65 64 20 33 31  2e 35 2e 38 39 0d 78 32  |added 31.5.89.x2|
000128c0  11 e7 20 74 65 6d 70 31  24 3d 22 22 20 8c 0d 78  |.. temp1$="" ..x|
000128d0  3c 0b 76 61 6c 75 65 3d  30 0d 78 46 05 cc 0d 78  |<.value=0.xF...x|
000128e0  50 0d c8 8e 20 74 79 70  65 20 ca 0d 78 5a 07 c9  |P... type ..xZ..|
000128f0  20 31 0d 78 64 37 f2 67  65 74 6f 62 6e 28 74 65  | 1.xd7.getobn(te|
00012900  6d 70 31 24 2c 76 61 6c  75 65 2c 64 75 6d 6d 79  |mp1$,value,dummy|
00012910  24 29 3a f4 20 46 69 6e  64 20 74 68 65 20 6e 6f  |$):. Find the no|
00012920  75 6e 20 6e 75 6d 62 65  72 0d 78 6e 0f e7 20 76  |un number.xn.. v|
00012930  61 6c 75 65 3d 30 20 8c  0d 78 78 16 74 65 6d 70  |alue=0 ..xx.temp|
00012940  31 24 3d 22 3a 20 22 2b  74 65 6d 70 31 24 0d 78  |1$=": "+temp1$.x|
00012950  82 41 85 20 31 2c 22 42  61 64 6c 79 20 66 6f 72  |.A. 1,"Badly for|
00012960  6d 65 64 2f 4e 6f 6e 2d  65 78 69 73 74 65 6e 74  |med/Non-existent|
00012970  20 6e 6f 75 6e 3a 20 22  2b c1 6c 69 6e 65 24 2c  | noun: "+.line$,|
00012980  76 70 74 72 2d a9 74 65  6d 70 24 2c 32 30 29 0d  |vptr-.temp$,20).|
00012990  78 8c 05 cc 0d 78 96 43  f2 77 68 69 63 68 5f 6f  |x....x.C.which_o|
000129a0  62 6a 28 76 61 6c 75 65  2c 76 61 6c 24 2c 72 65  |bj(value,val$,re|
000129b0  66 73 29 3a f4 20 46 69  6e 64 20 77 68 69 63 68  |fs):. Find which|
000129c0  20 6f 62 6a 65 63 74 2f  73 20 69 74 20 72 65 66  | object/s it ref|
000129d0  65 72 65 6e 63 65 73 0d  78 a0 3b e7 20 72 65 66  |erences.x.;. ref|
000129e0  73 3d 31 20 8c 20 76 61  6c 75 65 3d bb 28 76 61  |s=1 . value=.(va|
000129f0  6c 24 29 20 8b 20 f2 65  72 72 6f 72 28 32 37 2c  |l$) . .error(27,|
00012a00  74 65 6d 70 31 24 2b 65  72 72 6f 72 24 28 33 37  |temp1$+error$(37|
00012a10  29 29 0d 78 aa 05 cd 0d  78 b4 24 c9 20 32 3a f2  |)).x....x.$. 2:.|
00012a20  67 65 74 76 62 6e 28 74  65 6d 70 31 24 2c 76 61  |getvbn(temp1$,va|
00012a30  6c 75 65 2c 64 75 6d 6d  79 24 29 0d 78 be 24 c9  |lue,dummy$).x.$.|
00012a40  20 33 3a f2 67 65 74 70  72 6e 28 74 65 6d 70 31  | 3:.getprn(temp1|
00012a50  24 2c 76 61 6c 75 65 2c  64 75 6d 6d 79 24 29 0d  |$,value,dummy$).|
00012a60  78 c8 05 cb 0d 78 d2 05  cd 0d 78 dc 05 e1 0d 78  |x....x....x....x|
00012a70  e6 04 0d 78 f0 2a dd 20  f2 67 65 74 5f 76 61 72  |...x.*. .get_var|
00012a80  28 70 6c 61 63 65 2c f8  20 70 6c 61 63 65 2c f8  |(place,. place,.|
00012a90  20 76 61 6c 75 65 2c 76  70 74 72 29 0d 78 fa 2a  | value,vptr).x.*|
00012aa0  c8 95 20 a7 22 20 28 2c  22 2c c1 6c 69 6e 65 24  |.. ." (,",.line$|
00012ab0  2c 70 6c 61 63 65 2c 31  29 29 3c 3e 30 20 70 6c  |,place,1))<>0 pl|
00012ac0  61 63 65 2b 3d 31 0d 79  04 05 ce 0d 79 0e 18 63  |ace+=1.y....y..c|
00012ad0  68 72 24 3d c1 6c 69 6e  65 24 2c 70 6c 61 63 65  |hr$=.line$,place|
00012ae0  2c 31 29 0d 79 18 3c e7  20 63 68 72 24 3c 22 41  |,1).y.<. chr$<"A|
00012af0  22 20 84 20 63 68 72 24  3e 22 7c 22 20 8c 20 f2  |" . chr$>"|" . .|
00012b00  65 72 72 6f 72 28 33 2c  22 3a 20 22 2b c1 6c 69  |error(3,": "+.li|
00012b10  6e 65 24 2c 76 70 74 72  2c 33 30 29 29 3a e1 0d  |ne$,vptr,30)):..|
00012b20  79 22 17 76 61 6c 75 65  3d 97 20 63 68 72 24 20  |y".value=. chr$ |
00012b30  2d 20 97 22 41 22 0d 79  2c 4f 70 6c 61 63 65 2b  |- ."A".y,Oplace+|
00012b40  3d 31 3a e7 20 c1 6c 69  6e 65 24 2c 70 6c 61 63  |=1:. .line$,plac|
00012b50  65 2c 31 29 3c 3e 22 25  22 20 8c 20 f2 65 72 72  |e,1)<>"%" . .err|
00012b60  6f 72 28 33 2c 22 3a 20  22 2b c1 6c 69 6e 65 24  |or(3,": "+.line$|
00012b70  2c 76 70 74 72 2c 33 30  29 29 20 8b 20 70 6c 61  |,vptr,30)) . pla|
00012b80  63 65 2b 3d 31 0d 79 36  05 e1 0d 79 40 04 0d 79  |ce+=1.y6...y@..y|
00012b90  4a 33 dd 20 f2 67 65 74  5f 6e 75 6d 5f 6f 72 5f  |J3. .get_num_or_|
00012ba0  76 61 72 28 70 6c 61 63  65 2c f8 20 70 6c 61 63  |var(place,. plac|
00012bb0  65 2c f8 20 76 61 6c 75  65 2c f8 20 66 6c 61 67  |e,. value,. flag|
00012bc0  29 0d 79 54 2a c8 95 20  a7 22 20 28 2c 22 2c c1  |).yT*.. ." (,",.|
00012bd0  6c 69 6e 65 24 2c 70 6c  61 63 65 2c 31 29 29 3c  |line$,place,1))<|
00012be0  3e 30 20 70 6c 61 63 65  2b 3d 31 0d 79 5e 05 ce  |>0 place+=1.y^..|
00012bf0  0d 79 68 18 63 68 72 24  3d c1 6c 69 6e 65 24 2c  |.yh.chr$=.line$,|
00012c00  70 6c 61 63 65 2c 31 29  0d 79 72 54 e7 20 a7 22  |place,1).yrT. ."|
00012c10  30 31 32 33 34 35 36 37  38 39 22 2c 63 68 72 24  |0123456789",chr$|
00012c20  29 20 8c 20 66 6c 61 67  3d a3 3a f2 64 65 63 6f  |) . flag=.:.deco|
00012c30  64 65 5f 70 61 72 61 6d  65 74 65 72 28 6c 69 6e  |de_parameter(lin|
00012c40  65 24 2c 70 6c 61 63 65  2c 70 6c 61 63 65 2c 76  |e$,place,place,v|
00012c50  61 6c 75 65 2c 76 70 74  72 29 3a e1 0d 79 7c 2b  |alue,vptr):..y|+|
00012c60  f2 67 65 74 5f 76 61 72  28 70 6c 61 63 65 2c 70  |.get_var(place,p|
00012c70  6c 61 63 65 2c 76 61 6c  75 65 2c 76 70 74 72 29  |lace,value,vptr)|
00012c80  3a 66 6c 61 67 3d b9 0d  79 86 05 e1 0d 79 90 04  |:flag=..y....y..|
00012c90  0d 79 9a 0a dd 20 f2 72  75 6e 0d 79 a4 07 ea 20  |.y... .run.y... |
00012ca0  85 0d 79 ae 25 c8 99 20  22 4f 53 5f 42 79 74 65  |..y.%.. "OS_Byte|
00012cb0  22 2c 32 32 39 2c 30 2c  30 20 b8 20 2c 6f 6c 64  |",229,0,0 . ,old|
00012cc0  73 74 61 74 65 25 0d 79  b8 3a 65 72 72 5f 63 6f  |state%.y.:err_co|
00012cd0  6c 3d 31 31 3a f2 63 6f  6c 28 31 33 30 29 3a f2  |l=11:.col(130):.|
00012ce0  63 6f 6c 28 37 29 3a c8  99 20 22 57 69 6d 70 5f  |col(7):.. "Wimp_|
00012cf0  53 65 74 43 6f 6c 6f 75  72 22 2c 31 32 38 2b 32  |SetColour",128+2|
00012d00  0d 79 c2 61 ee 20 85 20  ea 3a f2 63 6f 6c 28 65  |.y.a. . .:.col(e|
00012d10  72 72 5f 63 6f 6c 29 3a  e7 20 9f 3c 3e 31 37 20  |rr_col):. .<>17 |
00012d20  f1 27 22 49 6e 74 65 72  70 72 65 74 65 72 20 72  |.'"Interpreter r|
00012d30  65 70 6f 72 74 73 20 61  20 72 75 6e 2d 74 69 6d  |eports a run-tim|
00012d40  65 20 65 72 72 6f 72 3a  20 22 f6 24 3a e5 20 8d  |e error: ".$:. .|
00012d50  50 6a 7b 20 8b 20 f1 27  f6 24 3a e5 20 8d 50 6a  |Pj{ . .'.$:. .Pj|
00012d60  7b 0d 79 cc 46 f4 20 50  52 4f 43 63 6c 6f 73 65  |{.y.F. PROCclose|
00012d70  28 74 65 78 74 68 61 6e  64 6c 65 29 3a 50 52 4f  |(texthandle):PRO|
00012d80  43 63 6c 6f 73 65 28 6f  62 6a 68 61 6e 64 6c 65  |Cclose(objhandle|
00012d90  29 3a 50 52 4f 43 63 6c  6f 73 65 28 72 6f 6f 6d  |):PROCclose(room|
00012da0  68 61 6e 64 6c 65 29 0d  79 d6 10 f2 75 70 64 61  |handle).y...upda|
00012db0  74 65 5f 64 61 74 61 0d  79 e0 11 e7 20 ac 20 65  |te_data.y... . e|
00012dc0  72 72 66 6c 61 67 20 8c  0d 79 ea 11 21 77 6f 72  |rrflag ..y..!wor|
00012dd0  6b 25 3d 72 64 61 74 61  25 0d 79 f4 13 77 6f 72  |k%=rdata%.y..wor|
00012de0  6b 25 21 34 3d 76 65 72  62 73 2b 33 0d 79 fe 13  |k%!4=verbs+3.y..|
00012df0  77 6f 72 6b 25 21 38 3d  6e 6f 75 6e 73 2b 33 0d  |work%!8=nouns+3.|
00012e00  7a 08 17 77 6f 72 6b 25  21 31 32 3d 70 72 6f 67  |z..work%!12=prog|
00012e10  72 61 6d 25 2b 34 0d 7a  12 14 77 6f 72 6b 25 21  |ram%+4.z..work%!|
00012e20  31 36 3d 74 65 78 74 25  2b 37 0d 7a 1c 14 77 6f  |16=text%+7.z..wo|
00012e30  72 6b 25 21 32 30 3d 64  69 63 74 25 2b 33 0d 7a  |rk%!20=dict%+3.z|
00012e40  26 13 77 6f 72 6b 25 21  32 34 3d 6f 64 61 74 61  |&.work%!24=odata|
00012e50  25 0d 7a 30 16 77 6f 72  6b 25 21 32 38 3d 61 64  |%.z0.work%!28=ad|
00012e60  6a 65 63 74 73 2b 33 0d  7a 3a 14 77 6f 72 6b 25  |jects+3.z:.work%|
00012e70  21 33 32 3d 70 72 65 70  73 2b 33 0d 7a 44 14 77  |!32=preps+3.zD.w|
00012e80  6f 72 6b 25 21 33 36 3d  63 6f 6e 6a 73 2b 33 0d  |ork%!36=conjs+3.|
00012e90  7a 4e 14 77 6f 72 6b 25  21 34 30 3d 73 70 65 63  |zN.work%!40=spec|
00012ea0  73 2b 33 0d 7a 58 14 77  6f 72 6b 25 21 34 34 3d  |s+3.zX.work%!44=|
00012eb0  6e 6f 69 73 65 2b 33 0d  7a 62 13 77 6f 72 6b 25  |noise+3.zb.work%|
00012ec0  21 34 38 3d 70 69 78 73  2b 33 0d 7a 6c 1b f4 20  |!48=pixs+3.zl.. |
00012ed0  20 77 6f 72 6b 25 21 35  32 20 69 73 20 72 65 73  | work%!52 is res|
00012ee0  65 72 76 65 64 0d 7a 76  15 77 6f 72 6b 25 21 35  |erved.zv.work%!5|
00012ef0  36 3d 69 6e 69 74 73 61  76 65 0d 7a 80 16 77 6f  |6=initsave.z..wo|
00012f00  72 6b 25 21 36 30 3d 6c  61 73 74 5f 72 6f 6f 6d  |rk%!60=last_room|
00012f10  0d 7a 8a 1a 77 6f 72 6b  25 21 36 34 3d 6c 61 73  |.z..work%!64=las|
00012f20  74 5f 6f 62 6a 65 63 74  2b 31 0d 7a 94 0c ef 32  |t_object+1.z...2|
00012f30  36 2c 34 2c 31 32 0d 7a  9e 1e f2 63 65 6e 74 72  |6,4,12.z...centr|
00012f40  65 28 22 50 4c 45 41 53  45 20 57 41 49 54 22 2c  |e("PLEASE WAIT",|
00012f50  30 29 3a 87 0d 7a a8 35  e7 20 64 61 74 61 76 61  |0):..z.5. datava|
00012f60  6c 69 64 20 8c 20 f2 63  6f 70 79 5f 66 72 6f 6d  |lid . .copy_from|
00012f70  5f 65 64 69 74 6f 72 20  8b 20 f2 63 6f 70 79 5f  |_editor . .copy_|
00012f80  74 6f 5f 65 64 69 74 6f  72 0d 7a b2 12 21 70 69  |to_editor.z..!pi|
00012f90  63 62 75 66 3d 70 62 73  69 7a 65 0d 7a bc 35 ff  |cbuf=pbsize.z.5.|
00012fa0  28 22 4c 4f 41 44 20 3c  55 73 65 72 73 24 52 65  |("LOAD <Users$Re|
00012fb0  73 6f 75 72 63 65 73 3e  2e 42 75 74 74 6f 6e 73  |sources>.Buttons|
00012fc0  20 22 2b c3 7e 28 70 69  63 62 75 66 2b 34 29 29  | "+.~(picbuf+4))|
00012fd0  0d 7a c6 38 f4 20 52 65  61 64 20 74 68 65 20 73  |.z.8. Read the s|
00012fe0  63 61 6c 65 20 66 61 63  74 6f 72 73 20 61 6e 64  |cale factors and|
00012ff0  20 70 69 78 65 6c 20 74  72 61 6e 73 6c 61 74 69  | pixel translati|
00013000  6f 6e 20 74 61 62 6c 65  0d 7a d0 42 c8 99 20 22  |on table.z.B.. "|
00013010  57 69 6d 70 5f 52 65 61  64 50 69 78 54 72 61 6e  |Wimp_ReadPixTran|
00013020  73 22 2c 26 32 30 30 2c  70 69 63 62 75 66 2c 70  |s",&200,picbuf,p|
00013030  69 63 62 75 66 2b 31 36  2c 30 2c 30 2c 30 2c 73  |icbuf+16,0,0,0,s|
00013040  63 61 6c 65 2c 70 69 78  74 72 0d 7a da 19 f4 20  |cale,pixtr.z... |
00013050  4e 6f 77 20 50 75 74 53  70 72 69 74 65 53 63 61  |Now PutSpriteSca|
00013060  6c 65 64 0d 7a e4 3c c8  99 20 22 4f 53 5f 53 70  |led.z.<.. "OS_Sp|
00013070  72 69 74 65 4f 70 22 2c  26 32 33 34 2c 70 69 63  |riteOp",&234,pic|
00013080  62 75 66 2c 70 69 63 62  75 66 2b 31 36 2c 30 2c  |buf,picbuf+16,0,|
00013090  30 2c 38 2c 73 63 61 6c  65 2c 70 69 78 74 72 0d  |0,8,scale,pixtr.|
000130a0  7a ee 36 ef 20 32 38 2c  30 2c 74 65 78 74 72 6f  |z.6. 28,0,textro|
000130b0  77 73 25 2d 35 2c 74 65  78 74 63 6f 6c 73 25 2c  |ws%-5,textcols%,|
000130c0  30 2c 32 34 2c 30 3b 31  34 38 3b 73 63 72 77 3b  |0,24,0;148;scrw;|
000130d0  73 63 72 68 3b 0d 7a f8  1b f2 63 65 6e 74 72 65  |scrh;.z...centre|
000130e0  28 c4 31 31 2c 22 20 22  29 2c 30 29 3a f1 3a ee  |(.11," "),0):.:.|
000130f0  0d 7b 02 2b 41 25 3d 76  65 72 62 5f 74 79 70 65  |.{.+A%=verb_type|
00013100  3a 42 25 3d 6e 72 65 66  3a 43 25 3d 61 72 65 66  |:B%=nref:C%=aref|
00013110  3a 44 25 3d 72 61 6d 73  61 76 65 0d 7b 0c 2a 45  |:D%=ramsave.{.*E|
00013120  25 3d 70 62 79 74 65 73  3a 46 25 3d 77 6f 72 6b  |%=pbytes:F%=work|
00013130  25 3a 47 25 3d 70 69 63  62 75 66 3a 48 25 3d 70  |%:G%=picbuf:H%=p|
00013140  62 73 69 7a 65 0d 7b 16  0d 63 6c 69 70 6c 65 6e  |bsize.{..cliplen|
00013150  3d 30 0d 7b 20 09 d6 20  72 75 6e 0d 7b 2a 60 ef  |=0.{ .. run.{*`.|
00013160  20 32 36 3a f2 63 65 6e  74 72 65 28 22 50 4c 45  | 26:.centre("PLE|
00013170  41 53 45 20 57 41 49 54  22 2c 32 36 29 3a 87 3a  |ASE WAIT",26):.:|
00013180  f2 73 77 61 70 5f 64 61  74 61 3a 64 61 74 61 76  |.swap_data:datav|
00013190  61 6c 69 64 3d b9 3a f2  63 65 6e 74 72 65 28 c4  |alid=.:.centre(.|
000131a0  31 31 2c 22 20 22 29 2c  32 36 29 3a f2 72 65 74  |11," "),26):.ret|
000131b0  75 72 6e 28 31 38 2c 30  29 3a ee 0d 7b 34 32 f2  |urn(18,0):..{42.|
000131c0  63 68 61 6e 67 65 69 63  6f 6e 28 41 4c 50 53 6d  |changeicon(ALPSm|
000131d0  61 69 6e 2c 73 77 61 70  69 63 6f 6e 2c 22 73 77  |ain,swapicon,"sw|
000131e0  61 70 22 2c 73 77 61 70  69 63 6f 6e 29 0d 7b 3e  |ap",swapicon).{>|
000131f0  4b f4 20 54 68 65 20 63  6f 70 79 2f 73 77 61 70  |K. The copy/swap|
00013200  20 72 6f 75 74 69 6e 65  73 20 61 73 20 75 73 65  | routines as use|
00013210  64 20 61 62 6f 76 65 20  65 6e 73 75 72 65 20 74  |d above ensure t|
00013220  68 65 20 64 61 74 61 20  69 6e 20 74 68 65 20 65  |he data in the e|
00013230  64 69 74 6f 72 20 69 73  0d 7b 48 4c f4 20 41 4c  |ditor is.{HL. AL|
00013240  57 41 59 53 20 76 61 6c  69 64 20 61 66 74 65 72  |WAYS valid after|
00013250  20 72 75 6e 6e 69 6e 67  20 61 20 67 61 6d 65 2c  | running a game,|
00013260  20 65 76 65 6e 20 69 66  20 69 74 20 77 61 73 6e  | even if it wasn|
00013270  27 74 20 62 65 66 6f 72  65 20 72 75 6e 6e 69 6e  |'t before runnin|
00013280  67 20 69 74 0d 7b 52 07  ef 20 35 0d 7b 5c 22 c8  |g it.{R.. 5.{\".|
00013290  99 20 46 6f 72 63 65 52  2c 2d 31 2c 30 2c 30 2c  |. ForceR,-1,0,0,|
000132a0  73 63 72 77 2b 31 2c 73  63 72 68 2b 31 0d 7b 66  |scrw+1,scrh+1.{f|
000132b0  05 cd 0d 7b 70 07 f7 20  85 0d 7b 7a 20 c8 99 20  |...{p.. ..{z .. |
000132c0  22 4f 53 5f 42 79 74 65  22 2c 32 32 39 2c 6f 6c  |"OS_Byte",229,ol|
000132d0  64 73 74 61 74 65 25 2c  30 0d 7b 84 14 c8 99 20  |dstate%,0.{.... |
000132e0  22 4f 53 5f 42 79 74 65  22 2c 31 32 34 0d 7b 8e  |"OS_Byte",124.{.|
000132f0  05 e1 0d 7b 98 04 0d 7b  a2 11 dd 20 f2 63 6f 6c  |...{...{... .col|
00013300  28 63 6f 6c 6f 72 29 0d  7b ac 1e c8 99 20 22 57  |(color).{.... "W|
00013310  69 6d 70 5f 54 65 78 74  43 6f 6c 6f 75 72 22 2c  |imp_TextColour",|
00013320  63 6f 6c 6f 72 0d 7b b6  05 e1 0d 7b c0 04 0d 7b  |color.{....{...{|
00013330  ca 29 dd 20 f2 66 69 6e  64 5f 73 65 63 74 69 6f  |.). .find_sectio|
00013340  6e 28 63 6f 64 65 25 2c  76 61 6c 75 65 25 2c f8  |n(code%,value%,.|
00013350  20 66 6f 75 6e 64 29 0d  7b d4 34 f4 20 53 65 61  | found).{.4. Sea|
00013360  72 63 68 65 73 20 70 72  6f 67 72 61 6d 20 66 6f  |rches program fo|
00013370  72 20 61 20 6d 61 74 63  68 20 77 69 74 68 20 63  |r a match with c|
00013380  6f 64 65 25 2c 76 61 6c  75 65 25 0d 7b de 1f f4  |ode%,value%.{...|
00013390  20 65 67 20 44 45 46 50  52 4f 43 28 33 29 20 2d  | eg DEFPROC(3) -|
000133a0  2d 3e 20 26 38 36 2c 26  30 33 0d 7b e8 41 f4 20  |-> &86,&03.{.A. |
000133b0  53 65 74 73 20 60 6c 69  73 74 70 74 72 60 20 74  |Sets `listptr` t|
000133c0  6f 20 74 68 65 20 61 64  64 72 65 73 73 20 6f 66  |o the address of|
000133d0  20 74 68 65 20 60 63 6f  64 65 25 60 20 62 79 74  | the `code%` byt|
000133e0  65 2c 20 69 66 20 66 6f  75 6e 64 0d 7b f2 0f 70  |e, if found.{..p|
000133f0  74 72 3d 6c 69 73 74 70  74 72 0d 7b fc 11 ea 20  |tr=listptr.{... |
00013400  62 79 74 65 31 2c 62 79  74 65 32 0d 7c 06 0b 66  |byte1,byte2.|..f|
00013410  6f 75 6e 64 3d a3 0d 7c  10 25 45 25 3d 70 62 79  |ound=..|.%E%=pby|
00013420  74 65 73 3a 46 25 3d 77  6f 72 6b 25 3a d6 20 73  |tes:F%=work%:. s|
00013430  65 74 75 70 3a 47 25 3d  70 74 72 0d 7c 1a 05 f5  |etup:G%=ptr.|...|
00013440  0d 7c 24 1b 41 25 3d 63  6f 64 65 25 3a 70 74 72  |.|$.A%=code%:ptr|
00013450  3d ba 20 66 69 6e 64 63  6f 64 65 0d 7c 2e 26 e7  |=. findcode.|.&.|
00013460  20 3f 70 74 72 3d 76 61  6c 75 65 25 20 8c 20 66  | ?ptr=value% . f|
00013470  6f 75 6e 64 3d b9 20 8b  20 47 25 3d 70 74 72 2b  |ound=. . G%=ptr+|
00013480  31 0d 7c 38 13 fd 20 66  6f 75 6e 64 20 84 20 70  |1.|8.. found . p|
00013490  74 72 3d 30 0d 7c 42 3a  e7 20 66 6f 75 6e 64 20  |tr=0.|B:. found |
000134a0  8c 20 6c 69 73 74 70 74  72 3d 70 74 72 2d 31 20  |. listptr=ptr-1 |
000134b0  8b 20 6c 69 73 74 70 74  72 3d 70 72 6f 67 72 61  |. listptr=progra|
000134c0  6d 25 2b 34 2b a4 70 72  67 6c 65 6e 2b 31 0d 7c  |m%+4+.prglen+1.||
000134d0  4c 05 e1 0d 7c 56 04 0d  7c 60 1b dd 20 f2 6c 69  |L...|V..|`.. .li|
000134e0  73 74 28 70 72 67 5f 70  61 72 74 25 2c 76 61 6c  |st(prg_part%,val|
000134f0  24 29 0d 7c 6a 0f ea 20  63 6f 6c 25 2c 72 6f 77  |$).|j.. col%,row|
00013500  25 0d 7c 74 30 f2 66 69  6c 6c 28 74 65 78 74 5f  |%.|t0.fill(text_|
00013510  62 6c 6f 63 6b 25 2c 74  65 78 74 5f 62 6c 6f 63  |block%,text_bloc|
00013520  6b 73 69 7a 65 25 2c 64  75 6d 6d 79 5f 73 70 63  |ksize%,dummy_spc|
00013530  29 0d 7c 7e 15 74 65 78  74 5f 72 6f 77 6c 65 6e  |).|~.text_rowlen|
00013540  25 28 29 3d 2b 30 0d 7c  88 15 c8 99 20 22 48 6f  |%()=+0.|.... "Ho|
00013550  75 72 67 6c 61 73 73 5f  4f 6e 22 0d 7c 92 30 6c  |urglass_On".|.0l|
00013560  69 73 74 70 74 72 3d 70  72 6f 67 72 61 6d 25 2b  |istptr=program%+|
00013570  34 3a 6c 69 6e 65 3d 31  3a 6c 61 73 74 3d 36 35  |4:line=1:last=65|
00013580  35 33 35 3a 66 69 72 73  74 3d 31 0d 7c 9c 11 63  |535:first=1.|..c|
00013590  6f 6c 25 3d 31 3a 72 6f  77 25 3d 30 0d 7c a6 15  |ol%=1:row%=0.|..|
000135a0  73 74 6f 72 65 3d 74 65  78 74 5f 62 6c 6f 63 6b  |store=text_block|
000135b0  25 0d 7c b0 13 65 78 69  73 74 69 6e 67 5f 76 65  |%.|..existing_ve|
000135c0  72 62 3d a3 0d 7c ba 0b  70 72 69 6e 74 3d a3 0d  |rb=..|..print=..|
000135d0  7c c4 0d 65 72 72 66 6c  61 67 3d a3 0d 7c ce 04  ||..errflag=..|..|
000135e0  0d 7c d8 12 c8 8e 20 70  72 67 5f 70 61 72 74 25  |.|.... prg_part%|
000135f0  20 ca 0d 7c e2 3d c9 20  31 3a 66 6f 75 6e 64 3d  | ..|.=. 1:found=|
00013600  b9 3a 65 6e 64 31 25 3d  30 3a 65 6e 64 32 25 3d  |.:end1%=0:end2%=|
00013610  30 3a 70 72 69 6e 74 3d  b9 3a f4 20 50 72 69 6e  |0:print=.:. Prin|
00013620  74 20 77 68 6f 6c 65 20  70 72 6f 67 72 61 6d 0d  |t whole program.|
00013630  7c ec 30 c9 20 32 3a 66  6f 75 6e 64 3d b9 3a 65  ||.0. 2:found=.:e|
00013640  6e 64 31 25 3d 73 74 6f  70 5f 74 6f 6b 65 6e 3a  |nd1%=stop_token:|
00013650  65 6e 64 32 25 3d 64 65  66 5f 74 6f 6b 65 6e 0d  |end2%=def_token.|
00013660  7c f6 23 c9 20 33 2c 34  2c 35 3a 65 6e 64 31 25  ||.#. 3,4,5:end1%|
00013670  3d 65 6e 64 5f 74 6f 6b  65 6e 3a 65 6e 64 32 25  |=end_token:end2%|
00013680  3d 30 0d 7d 00 05 cb 0d  7d 0a 04 0d 7d 14 12 c8  |=0.}....}...}...|
00013690  8e 20 70 72 67 5f 70 61  72 74 25 20 ca 0d 7d 1e  |. prg_part% ..}.|
000136a0  07 c9 20 33 0d 7d 28 2a  f2 66 69 6e 64 5f 73 65  |.. 3.}(*.find_se|
000136b0  63 74 69 6f 6e 28 70 72  6f 63 5f 74 6f 6b 65 6e  |ction(proc_token|
000136c0  2c bb 20 76 61 6c 24 2c  66 6f 75 6e 64 29 0d 7d  |,. val$,found).}|
000136d0  32 14 74 6f 6b 65 6e 3d  70 72 6f 63 5f 74 6f 6b  |2.token=proc_tok|
000136e0  65 6e 0d 7d 3c 07 c9 20  34 0d 7d 46 13 65 78 69  |en.}<.. 4.}F.exi|
000136f0  73 74 69 6e 67 5f 76 65  72 62 3d b9 0d 7d 50 1d  |sting_verb=..}P.|
00013700  f2 67 65 74 76 62 6e 28  76 61 6c 24 2c 76 65 72  |.getvbn(val$,ver|
00013710  62 2c 64 75 6d 6d 79 24  29 0d 7d 5a 27 f2 66 69  |b,dummy$).}Z'.fi|
00013720  6e 64 5f 73 65 63 74 69  6f 6e 28 64 65 66 5f 74  |nd_section(def_t|
00013730  6f 6b 65 6e 2c 76 65 72  62 2c 66 6f 75 6e 64 29  |oken,verb,found)|
00013740  0d 7d 64 13 74 6f 6b 65  6e 3d 64 65 66 5f 74 6f  |.}d.token=def_to|
00013750  6b 65 6e 0d 7d 6e 07 c9  20 35 0d 7d 78 2a f2 66  |ken.}n.. 5.}x*.f|
00013760  69 6e 64 5f 73 65 63 74  69 6f 6e 28 65 78 69 74  |ind_section(exit|
00013770  5f 74 6f 6b 65 6e 2c bb  20 76 61 6c 24 2c 66 6f  |_token,. val$,fo|
00013780  75 6e 64 29 0d 7d 82 14  74 6f 6b 65 6e 3d 65 78  |und).}..token=ex|
00013790  69 74 5f 74 6f 6b 65 6e  0d 7d 8c 05 cb 0d 7d 96  |it_token.}....}.|
000137a0  04 0d 7d a0 0f e7 20 ac  20 66 6f 75 6e 64 20 8c  |..}... . found .|
000137b0  0d 7d aa 39 20 20 f2 65  72 72 6f 72 28 31 30 2c  |.}.9  .error(10,|
000137c0  22 22 2b a4 74 6f 6b 65  6e 5f 74 6f 5f 6b 65 79  |""+.token_to_key|
000137d0  77 6f 72 64 28 74 6f 6b  65 6e 29 2b 22 28 22 2b  |word(token)+"("+|
000137e0  76 61 6c 24 2b 22 29 22  29 0d 7d b4 2a 20 20 6c  |val$+")").}.*  l|
000137f0  69 73 74 70 74 72 2d 3d  31 3a f4 20 50 6f 69 6e  |istptr-=1:. Poin|
00013800  74 20 74 6f 20 65 6e 64  20 6f 66 20 70 72 6f 67  |t to end of prog|
00013810  72 61 6d 0d 7d be 29 20  20 e7 20 74 6f 6b 65 6e  |ram.}.)  . token|
00013820  3d 64 65 66 5f 74 6f 6b  65 6e 20 8c 20 65 78 69  |=def_token . exi|
00013830  73 74 69 6e 67 5f 76 65  72 62 3d a3 0d 7d c8 05  |sting_verb=..}..|
00013840  cd 0d 7d d2 04 0d 7d dc  35 70 73 74 61 72 74 3d  |..}...}.5pstart=|
00013850  6c 69 73 74 70 74 72 3a  f4 20 53 74 61 72 74 20  |listptr:. Start |
00013860  61 64 64 72 65 73 73 20  6f 66 20 70 72 6f 67 72  |address of progr|
00013870  61 6d 20 73 65 63 74 69  6f 6e 0d 7d e6 1e 62 79  |am section.}..by|
00013880  74 65 31 3d 3f 6c 69 73  74 70 74 72 3a 66 6f 75  |te1=?listptr:fou|
00013890  6e 64 5f 65 6e 64 3d a3  0d 7d f0 1d c8 95 20 62  |nd_end=..}.... b|
000138a0  79 74 65 31 3c 3e 30 20  80 20 ac 20 66 6f 75 6e  |yte1<>0 . . foun|
000138b0  64 5f 65 6e 64 0d 7d fa  0a 65 6f 6c 25 3d a3 0d  |d_end.}..eol%=..|
000138c0  7e 04 11 20 20 c8 95 20  62 79 74 65 31 3d 31 33  |~..  .. byte1=13|
000138d0  0d 7e 0e 23 20 20 20 20  6c 69 73 74 70 74 72 2b  |.~.#    listptr+|
000138e0  3d 31 3a f2 70 75 74 28  bd 31 33 29 3a 65 6f 6c  |=1:.put(.13):eol|
000138f0  25 3d b9 0d 7e 18 0f 20  20 20 20 72 6f 77 25 2b  |%=..~..    row%+|
00013900  3d 31 0d 7e 22 16 20 20  20 20 62 79 74 65 31 3d  |=1.~".    byte1=|
00013910  3f 6c 69 73 74 70 74 72  0d 7e 2c 07 20 20 ce 0d  |?listptr.~,.  ..|
00013920  7e 36 22 20 20 e7 20 62  79 74 65 31 3d 30 20 8c  |~6"  . byte1=0 .|
00013930  20 f2 70 75 74 28 bd 28  30 29 29 3a e5 8d 70 7c  | .put(.(0)):..p||
00013940  7f 0d 7e 40 38 20 20 e7  20 28 62 79 74 65 31 3d  |..~@8  . (byte1=|
00013950  65 6e 64 31 25 20 80 20  65 6f 6c 25 29 20 84 20  |end1% . eol%) . |
00013960  62 79 74 65 31 3d 65 6e  64 32 25 20 8c 20 66 6f  |byte1=end2% . fo|
00013970  75 6e 64 5f 65 6e 64 3d  b9 0d 7e 4a 31 20 20 e7  |und_end=..~J1  .|
00013980  20 62 79 74 65 31 3e 26  42 46 20 8c 20 62 79 74  | byte1>&BF . byt|
00013990  65 32 3d 62 79 74 65 31  2d 26 31 30 20 8b 20 62  |e2=byte1-&10 . b|
000139a0  79 74 65 32 3d 62 79 74  65 31 0d 7e 54 1c 20 20  |yte2=byte1.~T.  |
000139b0  74 6f 6b 65 6e 3d 62 79  74 65 32 3a 6c 69 73 74  |token=byte2:list|
000139c0  70 74 72 2b 3d 31 0d 7e  5e 24 20 20 77 6f 72 64  |ptr+=1.~^$  word|
000139d0  24 3d a4 74 6f 6b 65 6e  5f 74 6f 5f 6b 65 79 77  |$=.token_to_keyw|
000139e0  6f 72 64 28 74 6f 6b 65  6e 29 0d 7e 68 11 20 20  |ord(token).~h.  |
000139f0  f2 70 75 74 28 77 6f 72  64 24 29 0d 7e 72 32 20  |.put(word$).~r2 |
00013a00  20 e7 20 62 79 74 65 32  3d 64 65 66 5f 74 6f 6b  | . byte2=def_tok|
00013a10  65 6e 20 8c 20 f2 70 72  74 64 65 66 3a 6c 69 73  |en . .prtdef:lis|
00013a20  74 70 74 72 2b 3d 31 3a  e5 8d 70 7c 7f 0d 7e 7c  |tptr+=1:..p|..~||
00013a30  48 20 20 70 5f 69 6e 66  6f 3d 69 6e 66 6f 25 28  |H  p_info=info%(|
00013a40  69 6e 66 6f 25 28 74 6f  6b 65 6e 2d 66 69 72 73  |info%(token-firs|
00013a50  74 5f 74 6f 6b 65 6e 2b  31 2c 32 29 2c 31 29 3a  |t_token+1,2),1):|
00013a60  70 61 72 61 6d 73 3d 70  5f 69 6e 66 6f 20 80 20  |params=p_info . |
00013a70  25 31 31 31 31 0d 7e 86  29 20 20 e7 20 70 61 72  |%1111.~.)  . par|
00013a80  61 6d 73 3d 30 20 80 20  3f 6c 69 73 74 70 74 72  |ams=0 . ?listptr|
00013a90  3c 3e 31 33 20 f2 70 75  74 28 22 20 22 29 0d 7e  |<>13 .put(" ").~|
00013aa0  90 13 20 20 e7 20 70 61  72 61 6d 73 3c 3e 30 20  |..  . params<>0 |
00013ab0  8c 0d 7e 9a 11 20 20 20  20 f2 70 75 74 28 22 28  |..~..    .put("(|
00013ac0  22 29 0d 7e a4 17 20 20  20 20 e3 20 49 25 3d 31  |").~..    . I%=1|
00013ad0  20 b8 20 70 61 72 61 6d  73 0d 7e ae 3b 20 20 20  | . params.~.;   |
00013ae0  20 20 20 6d 61 78 76 61  6c 75 65 3d 69 6e 66 6f  |   maxvalue=info|
00013af0  25 28 69 6e 66 6f 25 28  74 6f 6b 65 6e 2d 66 69  |%(info%(token-fi|
00013b00  72 73 74 5f 74 6f 6b 65  6e 2b 31 2c 32 29 2c 49  |rst_token+1,2),I|
00013b10  25 2b 32 29 0d 7e b8 22  20 20 20 20 20 20 e7 20  |%+2).~."      . |
00013b20  6d 61 78 76 61 6c 75 65  3c 32 35 36 20 8c 20 62  |maxvalue<256 . b|
00013b30  79 74 65 73 3d 31 0d 7e  c2 33 20 20 20 20 20 20  |ytes=1.~.3      |
00013b40  e7 20 6d 61 78 76 61 6c  75 65 3e 32 35 35 20 80  |. maxvalue>255 .|
00013b50  20 6d 61 78 76 61 6c 75  65 3c 36 35 35 33 36 20  | maxvalue<65536 |
00013b60  8c 20 62 79 74 65 73 3d  32 0d 7e cc 24 20 20 20  |. bytes=2.~.$   |
00013b70  20 20 20 e7 20 6d 61 78  76 61 6c 75 65 3e 36 35  |   . maxvalue>65|
00013b80  35 33 35 20 8c 20 62 79  74 65 73 3d 33 0d 7e d6  |535 . bytes=3.~.|
00013b90  11 20 20 20 20 20 20 76  61 6c 75 65 3d 30 0d 7e  |.      value=0.~|
00013ba0  e0 1a 20 20 20 20 20 20  e3 20 4a 25 3d 30 20 b8  |..      . J%=0 .|
00013bb0  20 62 79 74 65 73 2d 31  0d 7e ea 2b 20 20 20 20  | bytes-1.~.+    |
00013bc0  20 20 20 20 76 61 6c 75  65 3d 76 61 6c 75 65 2b  |    value=value+|
00013bd0  28 4a 25 3f 6c 69 73 74  70 74 72 29 2a 32 35 36  |(J%?listptr)*256|
00013be0  5e 4a 25 0d 7e f4 0e 20  20 20 20 20 20 ed 20 4a  |^J%.~..      . J|
00013bf0  25 0d 7e fe 12 20 20 20  20 20 20 64 6f 6e 65 69  |%.~..      donei|
00013c00  74 3d a3 0d 7f 08 3e 20  20 20 20 20 20 e7 20 49  |t=....>      . I|
00013c10  25 3d 31 20 80 20 28 6c  69 73 74 6f 70 74 69 6f  |%=1 . (listoptio|
00013c20  6e 20 80 20 25 31 30 29  3c 3e 30 20 80 20 a4 66  |n . %10)<>0 . .f|
00013c30  6e 74 79 70 65 28 70 5f  69 6e 66 6f 29 3d 31 20  |ntype(p_info)=1 |
00013c40  8c 0d 7f 12 14 20 20 20  20 20 20 20 20 f2 70 72  |.....        .pr|
00013c50  6e 74 6f 62 6a 0d 7f 1c  0b 20 20 20 20 20 20 cc  |ntobj....      .|
00013c60  0d 7f 26 40 20 20 20 20  20 20 20 20 e7 20 49 25  |..&@        . I%|
00013c70  3d 31 20 80 20 28 6c 69  73 74 6f 70 74 69 6f 6e  |=1 . (listoption|
00013c80  20 80 20 25 31 30 29 3c  3e 30 20 80 20 a4 66 6e  | . %10)<>0 . .fn|
00013c90  74 79 70 65 28 70 5f 69  6e 66 6f 29 3d 32 20 8c  |type(p_info)=2 .|
00013ca0  0d 7f 30 16 20 20 20 20  20 20 20 20 20 20 f2 70  |..0.          .p|
00013cb0  72 6e 74 76 72 62 0d 7f  3a 0d 20 20 20 20 20 20  |rntvrb..:.      |
00013cc0  20 20 cd 0d 7f 44 0b 20  20 20 20 20 20 cd 0d 7f  |  ...D.      ...|
00013cd0  4e 58 20 20 20 20 20 20  e7 20 49 25 3d 31 20 80  |NX      . I%=1 .|
00013ce0  20 28 77 6f 72 64 24 3d  22 50 52 45 50 22 20 84  | (word$="PREP" .|
00013cf0  20 77 6f 72 64 24 3d 22  4e 4f 54 50 52 45 50 22  | word$="NOTPREP"|
00013d00  29 20 80 20 28 6c 69 73  74 6f 70 74 69 6f 6e 20  |) . (listoption |
00013d10  80 20 25 31 30 29 3c 3e  30 20 8c 20 f2 70 72 69  |. %10)<>0 . .pri|
00013d20  6e 74 70 72 65 70 0d 7f  58 57 20 20 20 20 20 20  |ntprep..XW      |
00013d30  e7 20 49 25 3d 32 20 80  20 28 77 6f 72 64 24 3d  |. I%=2 . (word$=|
00013d40  22 50 55 54 49 4e 22 20  84 20 77 6f 72 64 24 3d  |"PUTIN" . word$=|
00013d50  22 54 41 4b 45 4f 55 54  22 29 20 80 20 28 6c 69  |"TAKEOUT") . (li|
00013d60  73 74 6f 70 74 69 6f 6e  20 80 20 25 31 30 29 3c  |stoption . %10)<|
00013d70  3e 30 20 8c 20 f2 70 72  6e 74 6f 62 6a 0d 7f 62  |>0 . .prntobj..b|
00013d80  16 20 20 20 20 20 20 e7  20 ac 20 64 6f 6e 65 69  |.      . . donei|
00013d90  74 20 8c 0d 7f 6c 5b 20  20 20 20 20 20 20 20 e7  |t ...l[        .|
00013da0  20 62 79 74 65 31 3c 76  61 72 5f 74 6f 6b 65 6e  | byte1<var_token|
00013db0  20 84 20 28 49 25 3e 31  20 80 20 62 79 74 65 31  | . (I%>1 . byte1|
00013dc0  3c 26 43 30 29 20 f2 70  75 74 28 c3 28 76 61 6c  |<&C0) .put(.(val|
00013dd0  75 65 29 29 20 8b 20 f2  70 75 74 28 bd 28 76 61  |ue)) . .put(.(va|
00013de0  6c 75 65 2b 97 22 41 22  29 2b 22 25 22 29 0d 7f  |lue+."A")+"%")..|
00013df0  76 0b 20 20 20 20 20 20  cd 0d 7f 80 18 20 20 20  |v.      .....   |
00013e00  20 20 20 6c 69 73 74 70  74 72 2b 3d 62 79 74 65  |   listptr+=byte|
00013e10  73 0d 7f 8a 22 20 20 20  20 20 20 e7 20 49 25 3c  |s..."      . I%<|
00013e20  3e 70 61 72 61 6d 73 20  8c 20 f2 70 75 74 28 22  |>params . .put("|
00013e30  2c 22 29 0d 7f 94 0c 20  20 20 20 ed 20 49 25 0d  |,")....    . I%.|
00013e40  7f 9e 11 20 20 20 20 f2  70 75 74 28 22 29 22 29  |...    .put(")")|
00013e50  0d 7f a8 20 20 20 20 20  e7 20 3f 6c 69 73 74 70  |...     . ?listp|
00013e60  74 72 3c 3e 31 33 20 f2  70 75 74 28 22 20 22 29  |tr<>13 .put(" ")|
00013e70  0d 7f b2 07 20 20 cd 0d  7f bc 16 20 20 20 20 62  |....  .....    b|
00013e80  79 74 65 31 3d 3f 6c 69  73 74 70 74 72 0d 7f c6  |yte1=?listptr...|
00013e90  05 ce 0d 7f d0 1c e7 20  66 6f 75 6e 64 5f 65 6e  |....... found_en|
00013ea0  64 20 f2 70 75 74 28 bd  31 33 2b bd 30 29 0d 7f  |d .put(.13+.0)..|
00013eb0  da 2b 74 65 78 74 5f 65  6e 64 25 3d 73 74 6f 72  |.+text_end%=stor|
00013ec0  65 2d 31 3a 74 65 78 74  5f 70 74 72 25 3d 74 65  |e-1:text_ptr%=te|
00013ed0  78 74 5f 62 6c 6f 63 6b  25 0d 7f e4 31 e7 20 74  |xt_block%...1. t|
00013ee0  65 78 74 5f 65 6e 64 25  3c 74 65 78 74 5f 62 6c  |ext_end%<text_bl|
00013ef0  6f 63 6b 25 20 74 65 78  74 5f 65 6e 64 25 3d 74  |ock% text_end%=t|
00013f00  65 78 74 5f 62 6c 6f 63  6b 25 0d 7f ee 33 70 72  |ext_block%...3pr|
00013f10  67 65 6e 64 3d 6c 69 73  74 70 74 72 3a f4 20 45  |gend=listptr:. E|
00013f20  6e 64 20 61 64 64 72 65  73 73 20 6f 66 20 70 72  |nd address of pr|
00013f30  6f 67 72 61 6d 20 73 65  63 74 69 6f 6e 0d 7f f8  |ogram section...|
00013f40  1b 6c 61 73 74 5f 72 6f  77 25 3d a4 66 69 6e 64  |.last_row%=.find|
00013f50  5f 6c 61 73 74 72 6f 77  0d 80 02 04 0d 80 0c 16  |_lastrow........|
00013f60  e3 20 52 25 3d 30 20 b8  20 6c 61 73 74 5f 72 6f  |. R%=0 . last_ro|
00013f70  77 25 0d 80 16 1f 74 65  78 74 5f 72 6f 77 6c 65  |w%....text_rowle|
00013f80  6e 25 28 52 25 29 3d a9  20 a4 72 6f 77 28 52 25  |n%(R%)=. .row(R%|
00013f90  29 0d 80 20 05 ed 0d 80  2a 04 0d 80 34 16 c8 99  |).. ....*...4...|
00013fa0  20 22 48 6f 75 72 67 6c  61 73 73 5f 4f 66 66 22  | "Hourglass_Off"|
00013fb0  0d 80 3e 05 e1 0d 80 48  04 0d 80 52 11 dd 20 f2  |..>....H...R.. .|
00013fc0  70 75 74 28 74 65 78 74  24 29 0d 80 5c 08 ea 20  |put(text$)..\.. |
00013fd0  49 25 0d 80 66 0f e7 20  ac 20 70 72 69 6e 74 20  |I%..f.. . print |
00013fe0  8c 0d 80 70 11 e7 20 74  65 78 74 24 3c 3e 22 22  |...p.. text$<>""|
00013ff0  20 8c 0d 80 7a 10 24 73  74 6f 72 65 3d 74 65 78  | ...z.$store=tex|
00014000  74 24 0d 80 84 12 73 74  6f 72 65 2b 3d a9 20 74  |t$....store+=. t|
00014010  65 78 74 24 0d 80 8e 05  cd 0d 80 98 05 cc 0d 80  |ext$............|
00014020  a2 0b 2a 46 58 33 2c 31  30 0d 80 ac 0b f1 74 65  |..*FX3,10.....te|
00014030  78 74 24 3b 0d 80 b6 0a  2a 46 58 33 2c 30 0d 80  |xt$;....*FX3,0..|
00014040  c0 05 cd 0d 80 ca 05 e1  0d 80 d4 04 0d 80 de 17  |................|
00014050  dd 20 f2 6c 69 73 74 5f  76 6f 63 61 62 28 76 6f  |. .list_vocab(vo|
00014060  63 25 29 0d 80 e8 15 c8  99 20 22 48 6f 75 72 67  |c%)...... "Hourg|
00014070  6c 61 73 73 5f 4f 6e 22  0d 80 f2 1d 70 72 69 6e  |lass_On"....prin|
00014080  74 3d a3 3a 73 74 6f 72  65 3d 74 65 78 74 5f 62  |t=.:store=text_b|
00014090  6c 6f 63 6b 25 0d 80 fc  30 f2 66 69 6c 6c 28 74  |lock%...0.fill(t|
000140a0  65 78 74 5f 62 6c 6f 63  6b 25 2c 74 65 78 74 5f  |ext_block%,text_|
000140b0  62 6c 6f 63 6b 73 69 7a  65 25 2c 64 75 6d 6d 79  |blocksize%,dummy|
000140c0  5f 73 70 63 29 0d 81 06  11 63 6f 6c 25 3d 31 3a  |_spc)....col%=1:|
000140d0  72 6f 77 25 3d 30 0d 81  10 04 0d 81 1a 0d c8 8e  |row%=0..........|
000140e0  20 76 6f 63 25 20 ca 0d  81 24 13 c9 20 31 3a 20  | voc% ...$.. 1: |
000140f0  f2 6c 69 73 74 6e 6f 75  6e 73 0d 81 2e 13 c9 20  |.listnouns..... |
00014100  32 3a 20 f2 6c 69 73 74  76 65 72 62 73 0d 81 38  |2: .listverbs..8|
00014110  12 c9 20 33 3a 20 f2 6c  69 73 74 61 64 6a 73 0d  |.. 3: .listadjs.|
00014120  81 42 13 c9 20 34 3a 20  f2 6c 69 73 74 70 72 65  |.B.. 4: .listpre|
00014130  70 73 0d 81 4c 13 c9 20  35 3a 20 f2 6c 69 73 74  |ps..L.. 5: .list|
00014140  63 6f 6e 6a 73 0d 81 56  13 c9 20 36 3a 20 f2 6c  |conjs..V.. 6: .l|
00014150  69 73 74 73 70 65 63 73  0d 81 60 13 c9 20 37 3a  |istspecs..`.. 7:|
00014160  20 f2 6c 69 73 74 6e 6f  69 73 65 0d 81 6a 05 cb  | .listnoise..j..|
00014170  0d 81 74 04 0d 81 7e 2b  74 65 78 74 5f 65 6e 64  |..t...~+text_end|
00014180  25 3d 73 74 6f 72 65 2d  31 3a 74 65 78 74 5f 70  |%=store-1:text_p|
00014190  74 72 25 3d 74 65 78 74  5f 62 6c 6f 63 6b 25 0d  |tr%=text_block%.|
000141a0  81 88 31 e7 20 74 65 78  74 5f 65 6e 64 25 3c 74  |..1. text_end%<t|
000141b0  65 78 74 5f 62 6c 6f 63  6b 25 20 74 65 78 74 5f  |ext_block% text_|
000141c0  65 6e 64 25 3d 74 65 78  74 5f 62 6c 6f 63 6b 25  |end%=text_block%|
000141d0  0d 81 92 1b 6c 61 73 74  5f 72 6f 77 25 3d a4 66  |....last_row%=.f|
000141e0  69 6e 64 5f 6c 61 73 74  72 6f 77 0d 81 9c 16 e3  |ind_lastrow.....|
000141f0  20 52 25 3d 30 20 b8 20  6c 61 73 74 5f 72 6f 77  | R%=0 . last_row|
00014200  25 0d 81 a6 21 20 20 74  65 78 74 5f 72 6f 77 6c  |%...!  text_rowl|
00014210  65 6e 25 28 52 25 29 3d  a9 20 a4 72 6f 77 28 52  |en%(R%)=. .row(R|
00014220  25 29 0d 81 b0 05 ed 0d  81 ba 16 c8 99 20 22 48  |%)........... "H|
00014230  6f 75 72 67 6c 61 73 73  5f 4f 66 66 22 0d 81 c4  |ourglass_Off"...|
00014240  05 e1 0d 81 ce 04 0d 81  d8 0f dd 20 f2 6c 69 73  |........... .lis|
00014250  74 5f 70 69 78 0d 81 e2  0a ea 20 6d 70 74 72 0d  |t_pix..... mptr.|
00014260  81 ec 15 c8 99 20 22 48  6f 75 72 67 6c 61 73 73  |..... "Hourglass|
00014270  5f 4f 6e 22 0d 81 f6 1d  70 72 69 6e 74 3d a3 3a  |_On"....print=.:|
00014280  73 74 6f 72 65 3d 74 65  78 74 5f 62 6c 6f 63 6b  |store=text_block|
00014290  25 0d 82 00 30 f2 66 69  6c 6c 28 74 65 78 74 5f  |%...0.fill(text_|
000142a0  62 6c 6f 63 6b 25 2c 74  65 78 74 5f 62 6c 6f 63  |block%,text_bloc|
000142b0  6b 73 69 7a 65 25 2c 64  75 6d 6d 79 5f 73 70 63  |ksize%,dummy_spc|
000142c0  29 0d 82 0a 11 63 6f 6c  25 3d 31 3a 72 6f 77 25  |)....col%=1:row%|
000142d0  3d 30 0d 82 14 04 0d 82  1e 0d e7 20 70 78 6e 3e  |=0......... pxn>|
000142e0  31 20 8c 0d 82 28 0f 6d  70 74 72 3d 70 69 78 73  |1 ...(.mptr=pixs|
000142f0  2b 33 0d 82 32 12 e3 20  49 25 3d 31 20 b8 20 70  |+3..2.. I%=1 . p|
00014300  78 6e 2d 31 0d 82 3c 16  20 20 f2 70 75 74 28 c3  |xn-1..<.  .put(.|
00014310  28 49 25 29 2b 22 3d 20  22 29 0d 82 46 11 20 20  |(I%)+"= ")..F.  |
00014320  f2 70 75 74 28 24 6d 70  74 72 29 0d 82 50 14 20  |.put($mptr)..P. |
00014330  20 6d 70 74 72 2b 3d a9  24 6d 70 74 72 2b 31 0d  | mptr+=.$mptr+1.|
00014340  82 5a 24 20 20 f2 70 75  74 28 22 2c 3c 22 2b 70  |.Z$  .put(",<"+p|
00014350  6f 73 24 28 3f 6d 70 74  72 29 2b 22 3e 22 2b bd  |os$(?mptr)+">"+.|
00014360  31 33 29 0d 82 64 0d 20  20 6d 70 74 72 2b 3d 35  |13)..d.  mptr+=5|
00014370  0d 82 6e 05 ed 0d 82 78  0c f2 70 75 74 28 bd 30  |..n....x..put(.0|
00014380  29 0d 82 82 05 cd 0d 82  8c 04 0d 82 96 2b 74 65  |)............+te|
00014390  78 74 5f 65 6e 64 25 3d  73 74 6f 72 65 2d 31 3a  |xt_end%=store-1:|
000143a0  74 65 78 74 5f 70 74 72  25 3d 74 65 78 74 5f 62  |text_ptr%=text_b|
000143b0  6c 6f 63 6b 25 0d 82 a0  31 e7 20 74 65 78 74 5f  |lock%...1. text_|
000143c0  65 6e 64 25 3c 74 65 78  74 5f 62 6c 6f 63 6b 25  |end%<text_block%|
000143d0  20 74 65 78 74 5f 65 6e  64 25 3d 74 65 78 74 5f  | text_end%=text_|
000143e0  62 6c 6f 63 6b 25 0d 82  aa 1b 6c 61 73 74 5f 72  |block%....last_r|
000143f0  6f 77 25 3d a4 66 69 6e  64 5f 6c 61 73 74 72 6f  |ow%=.find_lastro|
00014400  77 0d 82 b4 04 0d 82 be  16 e3 20 52 25 3d 30 20  |w......... R%=0 |
00014410  b8 20 6c 61 73 74 5f 72  6f 77 25 0d 82 c8 1f 74  |. last_row%....t|
00014420  65 78 74 5f 72 6f 77 6c  65 6e 25 28 52 25 29 3d  |ext_rowlen%(R%)=|
00014430  a9 20 a4 72 6f 77 28 52  25 29 0d 82 d2 05 ed 0d  |. .row(R%)......|
00014440  82 dc 04 0d 82 e6 16 c8  99 20 22 48 6f 75 72 67  |......... "Hourg|
00014450  6c 61 73 73 5f 4f 66 66  22 0d 82 f0 05 e1 0d 82  |lass_Off".......|
00014460  fa 04 0d 83 04 1e dd 20  a4 74 6f 6b 65 6e 5f 74  |....... .token_t|
00014470  6f 5f 6b 65 79 77 6f 72  64 28 74 6f 6b 65 6e 29  |o_keyword(token)|
00014480  0d 83 0e 2b 3d 6b 65 79  77 6f 72 64 24 28 69 6e  |...+=keyword$(in|
00014490  66 6f 25 28 74 6f 6b 65  6e 2d 66 69 72 73 74 5f  |fo%(token-first_|
000144a0  74 6f 6b 65 6e 2b 31 2c  32 29 29 0d 83 18 04 0d  |token+1,2)).....|
000144b0  83 22 0a dd 20 f2 6e 65  77 0d 83 2c 33 6f 62 6e  |.".. .new..,3obn|
000144c0  3d 31 3a 76 62 6e 3d 31  3a 61 64 6e 3d 31 3a 70  |=1:vbn=1:adn=1:p|
000144d0  72 6e 3d 31 3a 63 6a 6e  3d 31 3a 73 70 6e 3d 31  |rn=1:cjn=1:spn=1|
000144e0  3a 6e 73 6e 3d 31 3a 70  78 6e 3d 31 0d 83 36 48  |:nsn=1:pxn=1..6H|
000144f0  6e 78 74 6f 62 6a 3d 6e  6f 75 6e 73 3a 3f 6e 78  |nxtobj=nouns:?nx|
00014500  74 6f 62 6a 3d 6f 62 6e  3a 6e 78 74 6f 62 6a 3f  |tobj=obn:nxtobj?|
00014510  31 3d 33 3a 6e 78 74 6f  62 6a 3f 32 3d 30 3a 6e  |1=3:nxtobj?2=0:n|
00014520  78 74 6f 62 6a 2b 3d 33  3a 3f 6e 78 74 6f 62 6a  |xtobj+=3:?nxtobj|
00014530  3d 26 46 46 0d 83 40 48  6e 78 74 76 72 62 3d 76  |=&FF..@Hnxtvrb=v|
00014540  65 72 62 73 3a 3f 6e 78  74 76 72 62 3d 76 62 6e  |erbs:?nxtvrb=vbn|
00014550  3a 6e 78 74 76 72 62 3f  31 3d 33 3a 6e 78 74 76  |:nxtvrb?1=3:nxtv|
00014560  72 62 3f 32 3d 30 3a 6e  78 74 76 72 62 2b 3d 33  |rb?2=0:nxtvrb+=3|
00014570  3a 3f 6e 78 74 76 72 62  3d 26 46 46 0d 83 4a 4a  |:?nxtvrb=&FF..JJ|
00014580  6e 78 74 61 64 6a 3d 61  64 6a 65 63 74 73 3a 3f  |nxtadj=adjects:?|
00014590  6e 78 74 61 64 6a 3d 61  64 6e 3a 6e 78 74 61 64  |nxtadj=adn:nxtad|
000145a0  6a 3f 31 3d 33 3a 6e 78  74 61 64 6a 3f 32 3d 30  |j?1=3:nxtadj?2=0|
000145b0  3a 6e 78 74 61 64 6a 2b  3d 33 3a 3f 6e 78 74 61  |:nxtadj+=3:?nxta|
000145c0  64 6a 3d 26 46 46 0d 83  54 48 6e 78 74 70 72 70  |dj=&FF..THnxtprp|
000145d0  3d 70 72 65 70 73 3a 3f  6e 78 74 70 72 70 3d 70  |=preps:?nxtprp=p|
000145e0  72 6e 3a 6e 78 74 70 72  70 3f 31 3d 33 3a 6e 78  |rn:nxtprp?1=3:nx|
000145f0  74 70 72 70 3f 32 3d 30  3a 6e 78 74 70 72 70 2b  |tprp?2=0:nxtprp+|
00014600  3d 33 3a 3f 6e 78 74 70  72 70 3d 26 46 46 0d 83  |=3:?nxtprp=&FF..|
00014610  5e 48 6e 78 74 63 6a 6e  3d 63 6f 6e 6a 73 3a 3f  |^Hnxtcjn=conjs:?|
00014620  6e 78 74 63 6a 6e 3d 63  6a 6e 3a 6e 78 74 63 6a  |nxtcjn=cjn:nxtcj|
00014630  6e 3f 31 3d 33 3a 6e 78  74 63 6a 6e 3f 32 3d 30  |n?1=3:nxtcjn?2=0|
00014640  3a 6e 78 74 63 6a 6e 2b  3d 33 3a 3f 6e 78 74 63  |:nxtcjn+=3:?nxtc|
00014650  6a 6e 3d 26 46 46 0d 83  68 48 6e 78 74 73 70 6e  |jn=&FF..hHnxtspn|
00014660  3d 73 70 65 63 73 3a 3f  6e 78 74 73 70 6e 3d 73  |=specs:?nxtspn=s|
00014670  70 6e 3a 6e 78 74 73 70  6e 3f 31 3d 33 3a 6e 78  |pn:nxtspn?1=3:nx|
00014680  74 73 70 6e 3f 32 3d 30  3a 6e 78 74 73 70 6e 2b  |tspn?2=0:nxtspn+|
00014690  3d 33 3a 3f 6e 78 74 73  70 6e 3d 26 46 46 0d 83  |=3:?nxtspn=&FF..|
000146a0  72 48 6e 78 74 6e 73 6e  3d 6e 6f 69 73 65 3a 3f  |rHnxtnsn=noise:?|
000146b0  6e 78 74 6e 73 6e 3d 6e  73 6e 3a 6e 78 74 6e 73  |nxtnsn=nsn:nxtns|
000146c0  6e 3f 31 3d 33 3a 6e 78  74 6e 73 6e 3f 32 3d 30  |n?1=3:nxtnsn?2=0|
000146d0  3a 6e 78 74 6e 73 6e 2b  3d 33 3a 3f 6e 78 74 6e  |:nxtnsn+=3:?nxtn|
000146e0  73 6e 3d 26 46 46 0d 83  7c 47 6e 78 74 70 78 6e  |sn=&FF..|Gnxtpxn|
000146f0  3d 70 69 78 73 3a 3f 6e  78 74 70 78 6e 3d 70 78  |=pixs:?nxtpxn=px|
00014700  6e 3a 6e 78 74 70 78 6e  3f 31 3d 33 3a 6e 78 74  |n:nxtpxn?1=3:nxt|
00014710  70 78 6e 3f 32 3d 30 3a  6e 78 74 70 78 6e 2b 3d  |pxn?2=0:nxtpxn+=|
00014720  33 3a 3f 6e 78 74 70 78  6e 3d 26 46 46 0d 83 86  |3:?nxtpxn=&FF...|
00014730  25 21 61 72 65 66 3d 34  3a 61 72 65 66 3f 34 3d  |%!aref=4:aref?4=|
00014740  30 3a 21 6e 72 65 66 3d  34 3a 6e 72 65 66 3f 34  |0:!nref=4:nref?4|
00014750  3d 30 0d 83 90 11 70 72  65 76 5f 66 69 6c 65 24  |=0....prev_file$|
00014760  3d 22 22 0d 83 9a 05 e1  0d 83 a4 04 0d 83 ae 0b  |="".............|
00014770  dd 20 f2 6c 76 61 72 0d  83 b8 12 76 61 72 73 3d  |. .lvar....vars=|
00014780  77 6f 72 6b 25 2b 26 38  38 0d 83 c2 1b e3 20 49  |work%+&88..... I|
00014790  25 3d 31 20 b8 20 32 2a  6e 75 6d 5f 76 61 72 73  |%=1 . 2*num_vars|
000147a0  20 88 20 38 0d 83 cc 37  f1 8a 38 29 bd 28 49 25  | . 8...7..8).(I%|
000147b0  20 81 20 32 20 2b 97 22  41 22 29 3b 22 25 20 3d  | . 2 +."A");"% =|
000147c0  20 22 3b 76 61 72 73 3f  28 49 25 2d 31 29 2b 76  | ";vars?(I%-1)+v|
000147d0  61 72 73 3f 49 25 2a 32  35 36 3b 0d 83 d6 3c f1  |ars?I%*256;...<.|
000147e0  8a 32 34 29 bd 28 49 25  20 81 20 32 20 2b 97 22  |.24).(I% . 2 +."|
000147f0  42 22 29 3b 22 25 20 3d  20 22 3b 76 61 72 73 3f  |B");"% = ";vars?|
00014800  28 49 25 2b 31 29 2b 76  61 72 73 3f 28 49 25 2b  |(I%+1)+vars?(I%+|
00014810  32 29 2a 32 35 36 3b 0d  83 e0 3c f1 8a 34 30 29  |2)*256;...<..40)|
00014820  bd 28 49 25 20 81 20 32  20 2b 97 22 43 22 29 3b  |.(I% . 2 +."C");|
00014830  22 25 20 3d 20 22 3b 76  61 72 73 3f 28 49 25 2b  |"% = ";vars?(I%+|
00014840  33 29 2b 76 61 72 73 3f  28 49 25 2b 34 29 2a 32  |3)+vars?(I%+4)*2|
00014850  35 36 3b 0d 83 ea 3b f1  8a 35 36 29 bd 28 49 25  |56;...;..56).(I%|
00014860  20 81 20 32 20 2b 97 22  44 22 29 3b 22 25 20 3d  | . 2 +."D");"% =|
00014870  20 22 3b 76 61 72 73 3f  28 49 25 2b 35 29 2b 76  | ";vars?(I%+5)+v|
00014880  61 72 73 3f 28 49 25 2b  36 29 2a 32 35 36 0d 83  |ars?(I%+6)*256..|
00014890  f4 05 ed 0d 83 fe 05 e1  0d 84 08 04 0d 84 12 0c  |................|
000148a0  dd 20 f2 6c 69 73 74 6f  0d 84 1c 12 ea 20 62 69  |. .listo..... bi|
000148b0  74 6d 61 73 6b 24 2c 6f  70 24 0d 84 26 0f c8 8e  |tmask$,op$..&...|
000148c0  20 69 74 65 6d 31 25 20  ca 0d 84 30 29 c9 20 30  | item1% ...0). 0|
000148d0  3a 20 62 69 74 6d 61 73  6b 24 3d 22 25 31 31 31  |: bitmask$="%111|
000148e0  31 31 31 30 31 22 3a 6f  70 24 3d 22 20 41 4e 44  |11101":op$=" AND|
000148f0  20 22 0d 84 3a 28 c9 20  31 3a 20 62 69 74 6d 61  | "..:(. 1: bitma|
00014900  73 6b 24 3d 22 25 30 30  30 30 30 30 31 30 22 3a  |sk$="%00000010":|
00014910  6f 70 24 3d 22 20 4f 52  20 22 0d 84 44 29 c9 20  |op$=" OR "..D). |
00014920  32 3a 20 62 69 74 6d 61  73 6b 24 3d 22 25 31 31  |2: bitmask$="%11|
00014930  31 31 31 30 31 31 22 3a  6f 70 24 3d 22 20 41 4e  |111011":op$=" AN|
00014940  44 20 22 0d 84 4e 28 c9  20 33 3a 20 62 69 74 6d  |D "..N(. 3: bitm|
00014950  61 73 6b 24 3d 22 25 30  30 30 30 30 31 30 30 22  |ask$="%00000100"|
00014960  3a 6f 70 24 3d 22 20 4f  52 20 22 0d 84 58 05 cb  |:op$=" OR "..X..|
00014970  0d 84 62 2a 6c 69 73 74  6f 70 74 69 6f 6e 3d a0  |..b*listoption=.|
00014980  28 c3 6c 69 73 74 6f 70  74 69 6f 6e 2b 6f 70 24  |(.listoption+op$|
00014990  2b 62 69 74 6d 61 73 6b  24 29 0d 84 6c 05 e1 0d  |+bitmask$)..l...|
000149a0  84 76 04 0d 84 80 0d dd  20 f2 73 74 61 74 75 73  |.v...... .status|
000149b0  0d 84 8a 46 f1 8a 31 29  3b 22 55 73 65 72 20 63  |...F..1);"User c|
000149c0  6f 64 65 20 61 64 64 72  65 73 73 20 3d 20 26 22  |ode address = &"|
000149d0  3b 7e 75 73 65 72 63 6f  64 65 25 3b 22 20 28 22  |;~usercode%;" ("|
000149e0  3b 75 73 65 72 63 6f 64  65 25 3b 22 20 64 65 63  |;usercode%;" dec|
000149f0  69 6d 61 6c 29 22 0d 84  94 4e f1 8a 31 29 3b 22  |imal)"...N..1);"|
00014a00  50 72 6f 67 72 61 6d 20  62 79 74 65 73 3a 20 22  |Program bytes: "|
00014a10  3b 8a 32 31 29 3b a4 70  72 67 6c 65 6e 3b 8a 32  |;.21);.prglen;.2|
00014a20  38 29 3b 63 6f 64 65 5f  73 69 7a 65 25 2d a4 70  |8);code_size%-.p|
00014a30  72 67 6c 65 6e 3b 22 20  62 79 74 65 73 20 66 72  |rglen;" bytes fr|
00014a40  65 65 2e 22 0d 84 9e 83  f1 8a 31 29 22 4d 65 73  |ee."......1)"Mes|
00014a50  73 61 67 65 73 20 64 65  66 69 6e 65 64 3a 20 22  |sages defined: "|
00014a60  8a 32 31 29 3b a4 6d 61  78 6d 73 67 3b 8a 32 38  |.21);.maxmsg;.28|
00014a70  29 3b 28 a4 74 65 78 74  5f 65 6e 64 2d 74 65 78  |);(.text_end-tex|
00014a80  74 25 29 3b 22 20 63 68  61 72 61 63 74 65 72 73  |t%);" characters|
00014a90  20 75 73 65 64 2e 20 22  3b 6d 61 78 74 65 78 74  | used. ";maxtext|
00014aa0  25 2d 28 a4 74 65 78 74  5f 65 6e 64 2d 74 65 78  |%-(.text_end-tex|
00014ab0  74 25 29 3b 22 20 63 68  61 72 61 63 74 65 72 73  |t%);" characters|
00014ac0  20 66 72 65 65 2e 22 0d  84 a8 55 f1 8a 31 29 22  | free."...U..1)"|
00014ad0  56 65 72 62 73 20 64 65  66 69 6e 65 64 3a 20 22  |Verbs defined: "|
00014ae0  8a 32 31 29 3b 76 62 6e  2d 31 3b 8a 32 38 29 3b  |.21);vbn-1;.28);|
00014af0  76 65 72 62 5f 73 69 7a  65 2d 28 6e 78 74 76 72  |verb_size-(nxtvr|
00014b00  62 2d 76 65 72 62 73 29  3b 22 20 63 68 61 72 61  |b-verbs);" chara|
00014b10  63 74 65 72 73 20 66 72  65 65 2e 22 0d 84 b2 55  |cters free."...U|
00014b20  f1 8a 31 29 22 4e 6f 75  6e 73 20 64 65 66 69 6e  |..1)"Nouns defin|
00014b30  65 64 3a 20 22 8a 32 31  29 3b 6f 62 6e 2d 31 3b  |ed: ".21);obn-1;|
00014b40  8a 32 38 29 3b 6e 6f 75  6e 5f 73 69 7a 65 2d 28  |.28);noun_size-(|
00014b50  6e 78 74 6f 62 6a 2d 6e  6f 75 6e 73 29 3b 22 20  |nxtobj-nouns);" |
00014b60  63 68 61 72 61 63 74 65  72 73 20 66 72 65 65 2e  |characters free.|
00014b70  22 0d 84 bc 5c f1 8a 31  29 22 41 64 6a 65 63 74  |"...\..1)"Adject|
00014b80  69 76 65 73 20 64 65 66  69 6e 65 64 3a 20 22 8a  |ives defined: ".|
00014b90  32 31 29 3b 61 64 6e 2d  31 3b 8a 32 38 29 3b 61  |21);adn-1;.28);a|
00014ba0  64 6a 63 5f 73 69 7a 65  2d 28 6e 78 74 61 64 6a  |djc_size-(nxtadj|
00014bb0  2d 61 64 6a 65 63 74 73  29 3b 22 20 63 68 61 72  |-adjects);" char|
00014bc0  61 63 74 65 72 73 20 66  72 65 65 2e 22 0d 84 c6  |acters free."...|
00014bd0  5a f1 8a 31 29 22 4f 62  6a 65 63 74 73 20 64 65  |Z..1)"Objects de|
00014be0  66 69 6e 65 64 3a 20 22  8a 32 31 29 3b 6c 61 73  |fined: ".21);las|
00014bf0  74 5f 6f 62 6a 65 63 74  3b 8a 32 38 29 3b 6d 61  |t_object;.28);ma|
00014c00  78 6f 62 73 2d 6c 61 73  74 5f 6f 62 6a 65 63 74  |xobs-last_object|
00014c10  22 20 6f 62 6a 65 63 74  28 73 29 20 72 65 6d 61  |" object(s) rema|
00014c20  69 6e 69 6e 67 2e 22 0d  84 d0 52 f1 8a 31 29 22  |ining."...R..1)"|
00014c30  52 6f 6f 6d 73 20 64 65  66 69 6e 65 64 3a 20 22  |Rooms defined: "|
00014c40  8a 32 31 29 3b 6c 61 73  74 5f 72 6f 6f 6d 3b 8a  |.21);last_room;.|
00014c50  32 38 29 3b 6d 61 78 72  6d 73 2d 6c 61 73 74 5f  |28);maxrms-last_|
00014c60  72 6f 6f 6d 22 20 72 6f  6f 6d 28 73 29 20 72 65  |room" room(s) re|
00014c70  6d 61 69 6e 69 6e 67 2e  22 0d 84 da 70 f1 8a 31  |maining."...p..1|
00014c80  29 22 53 63 72 65 65 6e  20 6d 6f 64 65 3a 20 22  |)"Screen mode: "|
00014c90  3b 6d 6f 64 65 25 3b 22  2c 20 46 69 6c 65 3a 20  |;mode%;", File: |
00014ca0  22 bd 33 34 2b 6c 6f 61  64 65 64 24 2b bd 33 34  |".34+loaded$+.34|
00014cb0  22 2c 20 44 61 74 61 3a  20 22 3b 3a f2 63 6f 6c  |", Data: ";:.col|
00014cc0  28 31 31 29 3a e7 20 64  61 74 61 5f 73 61 76 65  |(11):. data_save|
00014cd0  64 20 f1 22 53 61 76 65  64 22 20 8b 20 f1 22 4e  |d ."Saved" . ."N|
00014ce0  4f 54 20 53 61 76 65 64  22 0d 84 e4 05 e1 0d 84  |OT Saved".......|
00014cf0  ee 04 0d 84 f8 04 0d 85  02 2b f4 20 2d 2d 2d 2d  |.........+. ----|
00014d00  2d 2d 20 56 61 72 69 6f  75 73 20 44 69 73 6b 20  |-- Various Disk |
00014d10  4f 70 65 72 61 74 69 6f  6e 73 20 2d 2d 2d 2d 2d  |Operations -----|
00014d20  2d 0d 85 0c 04 0d 85 16  1e dd 20 f2 63 72 65 61  |-......... .crea|
00014d30  74 65 5f 64 69 72 73 28  61 70 70 24 2c 72 6f 6f  |te_dirs(app$,roo|
00014d40  74 24 29 0d 85 20 1a ea  20 74 24 2c 6c 24 2c 72  |t$).. .. t$,l$,r|
00014d50  24 2c 49 25 2c 72 64 24  2c 6f 75 74 25 0d 85 2a  |$,I%,rd$,out%..*|
00014d60  15 c8 99 20 22 48 6f 75  72 67 6c 61 73 73 5f 4f  |... "Hourglass_O|
00014d70  6e 22 0d 85 34 21 e7 20  c2 72 6f 6f 74 24 2c 31  |n"..4!. .root$,1|
00014d80  29 3c 3e 22 2e 22 20 8c  20 72 6f 6f 74 24 2b 3d  |)<>"." . root$+=|
00014d90  22 2e 22 0d 85 3e 17 74  24 3d 72 6f 6f 74 24 3a  |"."..>.t$=root$:|
00014da0  6c 24 3d 22 22 3a 49 25  3d 30 0d 85 48 13 20 c8  |l$="":I%=0..H. .|
00014db0  95 20 a7 74 24 2c 22 2e  22 29 3c 3e 30 0d 85 52  |. .t$,".")<>0..R|
00014dc0  18 20 20 72 24 3d c0 74  24 2c a7 74 24 2c 22 2e  |.  r$=.t$,.t$,".|
00014dd0  22 29 2d 31 29 0d 85 5c  21 20 20 e7 20 49 25 3e  |")-1)..\!  . I%>|
00014de0  30 20 6c 24 3d 6c 24 2b  22 2e 22 2b 72 24 20 8b  |0 l$=l$+"."+r$ .|
00014df0  20 6c 24 3d 72 24 0d 85  66 0b 20 20 49 25 2b 3d  | l$=r$..f.  I%+=|
00014e00  31 0d 85 70 13 20 20 ff  28 22 43 44 49 52 20 22  |1..p.  .("CDIR "|
00014e10  2b 6c 24 29 0d 85 7a 18  20 20 74 24 3d c1 74 24  |+l$)..z.  t$=.t$|
00014e20  2c a7 74 24 2c 22 2e 22  29 2b 31 29 0d 85 84 06  |,.t$,".")+1)....|
00014e30  20 ce 0d 85 8e 25 20 20  e7 20 c0 61 70 70 24 2c  | ....%  . .app$,|
00014e40  31 29 3c 3e 22 21 22 20  8c 20 61 70 70 24 3d 22  |1)<>"!" . app$="|
00014e50  21 22 2b 61 70 70 24 0d  85 98 14 20 20 61 70 70  |!"+app$....  app|
00014e60  24 3d c0 61 70 70 24 2c  31 30 29 0d 85 a2 30 20  |$=.app$,10)...0 |
00014e70  20 72 61 24 3d 72 6f 6f  74 24 2b 61 70 70 24 3a  | ra$=root$+app$:|
00014e80  f4 20 70 61 74 68 20 74  6f 20 75 73 65 72 73 20  |. path to users |
00014e90  27 41 6c 70 73 27 20 66  69 6c 65 0d 85 ac 14 20  |'Alps' file.... |
00014ea0  20 ff 28 22 43 44 49 52  20 22 2b 72 61 24 29 0d  | .("CDIR "+ra$).|
00014eb0  85 b6 1c 20 20 ff 28 22  43 44 49 52 20 22 2b 72  |...  .("CDIR "+r|
00014ec0  61 24 2b 22 2e 41 4c 50  53 22 29 0d 85 c0 20 20  |a$+".ALPS")...  |
00014ed0  20 ff 28 22 43 44 49 52  20 22 2b 72 61 24 2b 22  | .("CDIR "+ra$+"|
00014ee0  2e 50 49 43 54 55 52 45  53 22 29 0d 85 ca 21 20  |.PICTURES")...! |
00014ef0  20 ff 28 22 43 44 49 52  20 22 2b 72 61 24 2b 22  | .("CDIR "+ra$+"|
00014f00  2e 52 65 73 6f 75 72 63  65 73 22 29 0d 85 d4 30  |.Resources")...0|
00014f10  20 20 72 64 24 3d 72 61  24 2b 22 2e 52 65 73 6f  |  rd$=ra$+".Reso|
00014f20  75 72 63 65 73 2e 22 3a  f4 20 52 65 73 6f 75 72  |urces.":. Resour|
00014f30  63 65 73 20 64 69 72 20  70 61 74 68 0d 85 de 37  |ces dir path...7|
00014f40  20 20 ff 20 22 53 41 56  45 20 22 2b 72 64 24 2b  |  . "SAVE "+rd$+|
00014f50  22 70 62 79 74 65 73 20  22 2b c3 7e 70 62 79 74  |"pbytes "+.~pbyt|
00014f60  65 73 2b 22 2b 22 2b c3  7e 70 62 79 74 65 5f 73  |es+"+"+.~pbyte_s|
00014f70  69 7a 65 0d 85 e8 3c 20  20 ff 28 22 53 41 56 45  |ize...<  .("SAVE|
00014f80  20 22 2b 72 64 24 2b 22  41 53 49 6f 62 6a 63 6f  | "+rd$+"ASIobjco|
00014f90  64 65 20 22 2b c3 7e 61  73 69 63 6f 64 65 25 2b  |de "+.~asicode%+|
00014fa0  22 2b 22 2b c3 7e 63 6f  64 65 73 69 7a 65 29 0d  |"+"+.~codesize).|
00014fb0  85 f2 34 20 20 ff 20 22  53 41 56 45 20 22 2b 72  |..4  . "SAVE "+r|
00014fc0  64 24 2b 22 62 75 74 74  6f 6e 73 20 22 2b c3 7e  |d$+"buttons "+.~|
00014fd0  70 69 63 62 75 66 2b 22  2b 22 2b c3 7e 62 75 74  |picbuf+"+"+.~but|
00014fe0  6c 65 6e 0d 85 fc 27 20  20 ff 20 22 53 45 54 54  |len...'  . "SETT|
00014ff0  59 50 45 20 22 2b 72 64  24 2b 22 62 75 74 74 6f  |YPE "+rd$+"butto|
00015000  6e 73 20 53 70 72 69 74  65 22 0d 86 06 24 20 20  |ns Sprite"...$  |
00015010  ff 20 22 53 45 54 54 59  50 45 20 22 2b 72 64 24  |. "SETTYPE "+rd$|
00015020  2b 22 70 62 79 74 65 73  20 44 61 74 61 22 0d 86  |+"pbytes Data"..|
00015030  10 2c 20 20 ff 20 22 53  45 54 54 59 50 45 20 22  |.,  . "SETTYPE "|
00015040  2b 72 64 24 2b 22 41 53  49 6f 62 6a 63 6f 64 65  |+rd$+"ASIobjcode|
00015050  20 41 62 73 6f 6c 75 74  65 22 0d 86 1a 3f 20 20  | Absolute"...?  |
00015060  ff 20 22 53 41 56 45 20  22 2b 72 61 24 2b 22 2e  |. "SAVE "+ra$+".|
00015070  21 52 75 6e 49 6d 61 67  65 20 22 2b c3 7e 28 70  |!RunImage "+.~(p|
00015080  69 63 62 75 66 2b 62 75  74 6c 65 6e 29 2b 22 2b  |icbuf+butlen)+"+|
00015090  22 2b c3 7e 6c 64 6c 65  6e 0d 86 24 29 20 20 ff  |"+.~ldlen..$)  .|
000150a0  20 22 53 45 54 54 59 50  45 20 22 2b 72 61 24 2b  | "SETTYPE "+ra$+|
000150b0  22 2e 21 52 75 6e 49 6d  61 67 65 20 42 41 53 49  |".!RunImage BASI|
000150c0  43 22 0d 86 2e 45 20 20  c8 99 20 22 4f 53 5f 53  |C"...E  .. "OS_S|
000150d0  70 72 69 74 65 4f 70 22  2c 32 35 36 2b 32 36 2c  |priteOp",256+26,|
000150e0  73 70 72 6c 64 2c 22 21  61 6c 70 73 67 61 6d 65  |sprld,"!alpsgame|
000150f0  73 22 2c 61 70 70 24 3a  f4 20 52 65 6e 61 6d 65  |s",app$:. Rename|
00015100  20 53 70 72 69 74 65 0d  86 38 3d 20 20 c8 99 20  | Sprite..8=  .. |
00015110  22 4f 53 5f 53 70 72 69  74 65 4f 70 22 2c 32 35  |"OS_SpriteOp",25|
00015120  36 2b 31 32 2c 73 70 72  6c 64 2c 72 61 24 2b 22  |6+12,sprld,ra$+"|
00015130  2e 21 53 70 72 69 74 65  73 22 3a f4 20 53 61 76  |.!Sprites":. Sav|
00015140  65 20 69 74 0d 86 42 19  20 20 6f 75 74 25 3d ae  |e it..B.  out%=.|
00015150  28 72 61 24 2b 22 2e 21  52 75 6e 22 29 0d 86 4c  |(ra$+".!Run")..L|
00015160  1b 20 20 6f 75 74 32 25  3d ae 28 72 61 24 2b 22  |.  out2%=.(ra$+"|
00015170  2e 21 42 6f 6f 74 22 29  0d 86 56 29 20 20 d5 23  |.!Boot")..V)  .#|
00015180  6f 75 74 25 2c 22 7c 20  21 52 75 6e 20 66 69 6c  |out%,"| !Run fil|
00015190  65 20 66 6f 72 20 41 4c  50 53 20 67 61 6d 65 73  |e for ALPS games|
000151a0  22 0d 86 60 2b 20 20 d5  23 6f 75 74 32 25 2c 22  |"..`+  .#out2%,"|
000151b0  7c 20 21 42 6f 6f 74 20  66 69 6c 65 20 66 6f 72  || !Boot file for|
000151c0  20 41 4c 50 53 20 67 61  6d 65 73 22 0d 86 6a 10  | ALPS games"..j.|
000151d0  20 20 d5 23 6f 75 74 25  2c 22 7c 22 0d 86 74 26  |  .#out%,"|"..t&|
000151e0  20 20 d5 23 6f 75 74 25  2c 22 53 45 54 20 41 6c  |  .#out%,"SET Al|
000151f0  70 73 24 4e 6f 4d 6f 75  73 65 49 6e 70 75 74 20  |ps$NoMouseInput |
00015200  30 22 0d 86 7e 10 20 20  d5 23 6f 75 74 25 2c 22  |0"..~.  .#out%,"|
00015210  7c 22 0d 86 88 25 20 20  d5 23 6f 75 74 25 2c 22  ||"...%  .#out%,"|
00015220  53 45 54 20 41 6c 70 73  24 53 68 6f 77 41 64 64  |SET Alps$ShowAdd|
00015230  72 65 73 73 20 30 22 0d  86 92 10 20 20 d5 23 6f  |ress 0"....  .#o|
00015240  75 74 25 2c 22 7c 22 0d  86 9c 11 20 20 d5 23 6f  |ut%,"|"....  .#o|
00015250  75 74 32 25 2c 22 7c 22  0d 86 a6 2e 20 20 d5 23  |ut2%,"|"....  .#|
00015260  6f 75 74 25 2c 22 49 63  6f 6e 53 70 72 69 74 65  |out%,"IconSprite|
00015270  73 20 3c 4f 62 65 79 24  44 69 72 3e 2e 21 53 70  |s <Obey$Dir>.!Sp|
00015280  72 69 74 65 73 22 0d 86  b0 2f 20 20 d5 23 6f 75  |rites".../  .#ou|
00015290  74 32 25 2c 22 49 63 6f  6e 53 70 72 69 74 65 73  |t2%,"IconSprites|
000152a0  20 3c 4f 62 65 79 24 44  69 72 3e 2e 21 53 70 72  | <Obey$Dir>.!Spr|
000152b0  69 74 65 73 22 0d 86 ba  2a 20 20 d5 23 6f 75 74  |ites"...*  .#out|
000152c0  25 2c 22 53 45 54 20 41  6c 70 73 47 61 6d 65 24  |%,"SET AlpsGame$|
000152d0  44 69 72 20 3c 4f 62 65  79 24 44 69 72 3e 22 0d  |Dir <Obey$Dir>".|
000152e0  86 c4 3f 20 20 d5 23 6f  75 74 25 2c 22 53 45 54  |..?  .#out%,"SET|
000152f0  20 41 6c 70 73 47 61 6d  65 24 52 65 73 6f 75 72  | AlpsGame$Resour|
00015300  63 65 73 20 3c 41 6c 70  73 47 61 6d 65 24 44 69  |ces <AlpsGame$Di|
00015310  72 3e 2e 52 65 73 6f 75  72 63 65 73 2e 22 0d 86  |r>.Resources."..|
00015320  ce 34 20 20 d5 23 6f 75  74 25 2c 22 53 45 54 20  |.4  .#out%,"SET |
00015330  41 6c 70 73 47 61 6d 65  24 44 61 74 61 20 3c 41  |AlpsGame$Data <A|
00015340  6c 70 73 47 61 6d 65 24  44 69 72 3e 2e 41 6c 70  |lpsGame$Dir>.Alp|
00015350  73 22 0d 86 d8 39 20 20  d5 23 6f 75 74 25 2c 22  |s"...9  .#out%,"|
00015360  53 45 54 20 41 6c 70 73  24 50 69 63 74 75 72 65  |SET Alps$Picture|
00015370  73 20 3c 41 6c 70 73 47  61 6d 65 24 44 69 72 3e  |s <AlpsGame$Dir>|
00015380  2e 50 69 63 74 75 72 65  73 2e 22 0d 86 e2 2b 20  |.Pictures."...+ |
00015390  20 d5 23 6f 75 74 32 25  2c 22 53 45 54 20 41 6c  | .#out2%,"SET Al|
000153a0  70 73 47 61 6d 65 24 44  69 72 20 3c 4f 62 65 79  |psGame$Dir <Obey|
000153b0  24 44 69 72 3e 22 0d 86  ec 40 20 20 d5 23 6f 75  |$Dir>"...@  .#ou|
000153c0  74 32 25 2c 22 53 45 54  20 41 6c 70 73 47 61 6d  |t2%,"SET AlpsGam|
000153d0  65 24 52 65 73 6f 75 72  63 65 73 20 3c 41 6c 70  |e$Resources <Alp|
000153e0  73 47 61 6d 65 24 44 69  72 3e 2e 52 65 73 6f 75  |sGame$Dir>.Resou|
000153f0  72 63 65 73 2e 22 0d 86  f6 35 20 20 d5 23 6f 75  |rces."...5  .#ou|
00015400  74 32 25 2c 22 53 45 54  20 41 6c 70 73 47 61 6d  |t2%,"SET AlpsGam|
00015410  65 24 44 61 74 61 20 3c  41 6c 70 73 47 61 6d 65  |e$Data <AlpsGame|
00015420  24 44 69 72 3e 2e 41 6c  70 73 22 0d 87 00 3a 20  |$Dir>.Alps"...: |
00015430  20 d5 23 6f 75 74 32 25  2c 22 53 45 54 20 41 6c  | .#out2%,"SET Al|
00015440  70 73 24 50 69 63 74 75  72 65 73 20 3c 41 6c 70  |ps$Pictures <Alp|
00015450  73 47 61 6d 65 24 44 69  72 3e 2e 50 69 63 74 75  |sGame$Dir>.Pictu|
00015460  72 65 73 2e 22 0d 87 0a  2b 20 20 d5 23 6f 75 74  |res."...+  .#out|
00015470  25 2c 22 52 75 6e 20 3c  41 6c 70 73 47 61 6d 65  |%,"Run <AlpsGame|
00015480  24 44 69 72 3e 2e 21 52  75 6e 49 6d 61 67 65 22  |$Dir>.!RunImage"|
00015490  0d 87 14 14 20 20 d9 23  6f 75 74 25 3a d9 23 6f  |....  .#out%:.#o|
000154a0  75 74 32 25 0d 87 1e 24  20 20 ff 20 22 2a 53 45  |ut2%...$  . "*SE|
000154b0  54 54 59 50 45 20 22 2b  72 61 24 2b 22 2e 21 52  |TTYPE "+ra$+".!R|
000154c0  75 6e 20 4f 62 65 79 22  0d 87 28 25 20 20 ff 20  |un Obey"..(%  . |
000154d0  22 2a 53 45 54 54 59 50  45 20 22 2b 72 61 24 2b  |"*SETTYPE "+ra$+|
000154e0  22 2e 21 42 6f 6f 74 20  4f 62 65 79 22 0d 87 32  |".!Boot Obey"..2|
000154f0  16 c8 99 20 22 48 6f 75  72 67 6c 61 73 73 5f 4f  |... "Hourglass_O|
00015500  66 66 22 0d 87 3c 05 e1  0d 87 46 04 0d 87 50 16  |ff"..<....F...P.|
00015510  dd 20 f2 6c 6f 61 64 5f  62 69 74 73 28 61 70 70  |. .load_bits(app|
00015520  24 29 0d 87 5a 45 f4 20  4c 6f 61 64 73 20 27 62  |$)..ZE. Loads 'b|
00015530  75 74 74 6f 6e 73 27 20  73 70 72 69 74 65 20 61  |uttons' sprite a|
00015540  6e 64 20 27 4c 6f 61 64  65 72 27 20 70 72 6f 67  |nd 'Loader' prog|
00015550  72 61 6d 20 69 6e 74 6f  20 70 69 63 74 75 72 65  |ram into picture|
00015560  20 62 75 66 66 65 72 0d  87 64 48 f4 20 54 68 65  | buffer..dH. The|
00015570  79 20 77 69 6c 6c 20 74  68 65 6e 20 62 65 20 73  |y will then be s|
00015580  61 76 65 64 20 74 6f 20  74 68 65 20 75 73 65 72  |aved to the user|
00015590  27 73 20 64 61 74 61 20  64 69 73 6b 20 62 79 20  |'s data disk by |
000155a0  50 52 4f 43 63 72 65 61  74 65 5f 64 69 72 73 0d  |PROCcreate_dirs.|
000155b0  87 6e 23 e7 20 c0 61 70  70 24 2c 31 29 3c 3e 22  |.n#. .app$,1)<>"|
000155c0  21 22 20 8c 20 61 70 70  24 3d 22 21 22 2b 61 70  |!" . app$="!"+ap|
000155d0  70 24 0d 87 78 23 62 69  74 24 3d 22 3c 41 6c 70  |p$..x#bit$="<Alp|
000155e0  73 24 52 65 73 6f 75 72  63 65 73 3e 2e 62 75 74  |s$Resources>.but|
000155f0  74 6f 6e 73 22 0d 87 82  29 c8 99 20 22 4f 53 5f  |tons"...).. "OS_|
00015600  46 69 6c 65 22 2c 35 2c  62 69 74 24 20 b8 20 66  |File",5,bit$ . f|
00015610  74 79 70 65 2c 2c 2c 2c  62 75 74 6c 65 6e 0d 87  |type,,,,butlen..|
00015620  8c 1f ff 20 22 4c 4f 41  44 20 22 2b 62 69 74 24  |... "LOAD "+bit$|
00015630  2b 22 20 22 2b c3 7e 70  69 63 62 75 66 0d 87 96  |+" "+.~picbuf...|
00015640  40 c8 99 20 22 4f 53 5f  46 69 6c 65 22 2c 35 2c  |@.. "OS_File",5,|
00015650  22 3c 41 6c 70 73 24 52  65 73 6f 75 72 63 65 73  |"<Alps$Resources|
00015660  3e 2e 21 52 75 6e 69 6d  61 67 65 22 20 b8 20 66  |>.!Runimage" . f|
00015670  74 79 70 65 2c 2c 2c 2c  6c 64 6c 65 6e 0d 87 a0  |type,,,,ldlen...|
00015680  3a ff 20 22 4c 4f 41 44  20 3c 41 6c 70 73 24 52  |:. "LOAD <Alps$R|
00015690  65 73 6f 75 72 63 65 73  3e 2e 21 52 75 6e 69 6d  |esources>.!Runim|
000156a0  61 67 65 20 22 2b c3 7e  28 70 69 63 62 75 66 2b  |age "+.~(picbuf+|
000156b0  62 75 74 6c 65 6e 29 0d  87 aa 40 c8 99 20 22 4f  |butlen)...@.. "O|
000156c0  53 5f 46 69 6c 65 22 2c  35 2c 22 3c 41 6c 70 73  |S_File",5,"<Alps|
000156d0  24 52 65 73 6f 75 72 63  65 73 3e 2e 21 53 70 72  |$Resources>.!Spr|
000156e0  69 74 65 73 22 20 b8 20  66 74 79 70 65 2c 2c 2c  |ites" . ftype,,,|
000156f0  2c 73 70 72 6c 65 6e 0d  87 b4 24 de 20 73 70 72  |,sprlen...$. spr|
00015700  6c 64 20 73 70 72 6c 65  6e 2b 34 3a 21 73 70 72  |ld sprlen+4:!spr|
00015710  6c 64 3d 73 70 72 6c 65  6e 2b 34 0d 87 be 24 73  |ld=sprlen+4...$s|
00015720  70 72 6c 64 21 34 3d 30  3a 73 70 72 6c 64 21 38  |prld!4=0:sprld!8|
00015730  3d 31 36 3a 73 70 72 6c  64 21 31 32 3d 31 36 0d  |=16:sprld!12=16.|
00015740  87 c8 3a c8 99 20 22 4f  53 5f 53 70 72 69 74 65  |..:.. "OS_Sprite|
00015750  4f 70 22 2c 32 36 36 2c  73 70 72 6c 64 2c 22 3c  |Op",266,sprld,"<|
00015760  41 6c 70 73 24 52 65 73  6f 75 72 63 65 73 3e 2e  |Alps$Resources>.|
00015770  21 53 70 72 69 74 65 73  22 0d 87 d2 0d 63 6c 69  |!Sprites"....cli|
00015780  70 6c 65 6e 3d 30 0d 87  dc 05 e1 0d 87 e6 04 0d  |plen=0..........|
00015790  87 f0 17 dd 20 f2 63 6f  6e 76 65 72 74 28 69 6d  |.... .convert(im|
000157a0  70 6f 72 74 24 29 0d 87  fa 16 ea 20 69 6e 25 2c  |port$)..... in%,|
000157b0  49 25 2c 56 25 2c 70 74  72 2c 54 25 0d 88 04 15  |I%,V%,ptr,T%....|
000157c0  c8 99 20 22 48 6f 75 72  67 6c 61 73 73 5f 4f 6e  |.. "Hourglass_On|
000157d0  22 0d 88 0e 0f 21 70 72  6f 67 72 61 6d 25 3d 30  |"....!program%=0|
000157e0  0d 88 18 10 70 72 6f 67  72 61 6d 25 21 34 3d 30  |....program%!4=0|
000157f0  0d 88 22 1f f2 66 69 6c  6c 28 6e 72 65 66 2b 34  |.."..fill(nref+4|
00015800  2c 6e 72 65 66 5f 73 69  7a 65 2d 34 2c 30 29 0d  |,nref_size-4,0).|
00015810  88 2c 11 69 6e 25 3d 8e  20 69 6d 70 6f 72 74 24  |.,.in%=. import$|
00015820  0d 88 36 04 0d 88 40 11  e3 20 49 25 3d 30 20 b8  |..6...@.. I%=0 .|
00015830  20 26 35 37 46 0d 88 4a  0d 20 56 25 3d 9a 23 69  | &57F..J. V%=.#i|
00015840  6e 25 0d 88 54 10 20 76  65 72 62 73 3f 49 25 3d  |n%..T. verbs?I%=|
00015850  56 25 0d 88 5e 08 ed 20  49 25 0d 88 68 0e 76 62  |V%..^.. I%..h.vb|
00015860  6e 3d 3f 76 65 72 62 73  0d 88 72 28 6e 78 74 76  |n=?verbs..r(nxtv|
00015870  72 62 3d 76 65 72 62 73  2b 28 76 65 72 62 73 3f  |rb=verbs+(verbs?|
00015880  31 2b 32 35 36 2a 28 76  65 72 62 73 3f 32 29 29  |1+256*(verbs?2))|
00015890  0d 88 7c 04 0d 88 86 11  e3 20 49 25 3d 30 20 b8  |..|...... I%=0 .|
000158a0  20 26 35 37 46 0d 88 90  0d 20 56 25 3d 9a 23 69  | &57F.... V%=.#i|
000158b0  6e 25 0d 88 9a 10 20 6e  6f 75 6e 73 3f 49 25 3d  |n%.... nouns?I%=|
000158c0  56 25 0d 88 a4 08 ed 20  49 25 0d 88 ae 0e 6f 62  |V%..... I%....ob|
000158d0  6e 3d 3f 6e 6f 75 6e 73  0d 88 b8 28 6e 78 74 6f  |n=?nouns...(nxto|
000158e0  62 6a 3d 6e 6f 75 6e 73  2b 28 6e 6f 75 6e 73 3f  |bj=nouns+(nouns?|
000158f0  31 2b 32 35 36 2a 28 6e  6f 75 6e 73 3f 32 29 29  |1+256*(nouns?2))|
00015900  0d 88 c2 04 0d 88 cc 0c  56 25 3d 9a 23 69 6e 25  |........V%=.#in%|
00015910  0d 88 d6 0c 56 25 3d 9a  23 69 6e 25 0d 88 e0 12  |....V%=.#in%....|
00015920  70 74 72 3d 70 72 6f 67  72 61 6d 25 2b 34 0d 88  |ptr=program%+4..|
00015930  ea 04 0d 88 f4 05 f5 0d  88 fe 0d 20 54 25 3d 9a  |........... T%=.|
00015940  23 69 6e 25 0d 89 08 13  20 3f 70 74 72 3d 54 25  |#in%.... ?ptr=T%|
00015950  3a 70 74 72 2b 3d 31 0d  89 12 18 20 e7 20 54 25  |:ptr+=1.... . T%|
00015960  3e 3d 26 43 30 20 8c 20  54 25 2d 3d 26 31 30 0d  |>=&C0 . T%-=&10.|
00015970  89 1c 10 20 e7 20 54 25  3e 3d 26 37 30 20 8c 0d  |... . T%>=&70 ..|
00015980  89 26 18 20 70 62 3d 6f  6c 64 70 61 72 73 3f 28  |.&. pb=oldpars?(|
00015990  54 25 2d 26 37 30 29 0d  89 30 0d 20 e7 20 70 62  |T%-&70)..0. . pb|
000159a0  3e 30 20 8c 0d 89 3a 11  20 20 e3 20 49 25 3d 31  |>0 ...:.  . I%=1|
000159b0  20 b8 20 70 62 0d 89 44  0f 20 20 20 56 25 3d 9a  | . pb..D.   V%=.|
000159c0  23 69 6e 25 0d 89 4e 15  20 20 20 3f 70 74 72 3d  |#in%..N.   ?ptr=|
000159d0  56 25 3a 70 74 72 2b 3d  31 0d 89 58 0e 20 20 20  |V%:ptr+=1..X.   |
000159e0  c8 8e 20 54 25 20 ca 0d  89 62 39 20 20 20 20 c9  |.. T% ...b9    .|
000159f0  20 26 41 34 2c 26 41 31  2c 26 39 32 2c 26 39 30  | &A4,&A1,&92,&90|
00015a00  2c 26 39 36 2c 26 39 37  2c 26 41 36 2c 26 39 41  |,&96,&97,&A6,&9A|
00015a10  2c 26 41 41 2c 26 38 37  2c 26 38 38 2c 26 37 42  |,&AA,&87,&88,&7B|
00015a20  0d 89 6c 1f 20 20 20 20  20 e7 20 49 25 3d 31 20  |..l.     . I%=1 |
00015a30  8c 20 3f 70 74 72 3d 30  3a 70 74 72 2b 3d 31 0d  |. ?ptr=0:ptr+=1.|
00015a40  89 76 2d 20 20 20 20 c9  20 26 37 41 2c 26 41 35  |.v-    . &7A,&A5|
00015a50  2c 26 42 32 2c 26 42 33  2c 26 42 34 2c 26 42 35  |,&B2,&B3,&B4,&B5|
00015a60  2c 26 42 36 2c 26 42 37  2c 26 42 38 0d 89 80 1f  |,&B6,&B7,&B8....|
00015a70  20 20 20 20 20 e7 20 49  25 3d 32 20 8c 20 3f 70  |     . I%=2 . ?p|
00015a80  74 72 3d 30 3a 70 74 72  2b 3d 31 0d 89 8a 08 20  |tr=0:ptr+=1.... |
00015a90  20 20 cb 0d 89 94 0a 20  20 ed 20 49 25 0d 89 9e  |  .....  . I%...|
00015aa0  06 20 cd 0d 89 a8 05 cd  0d 89 b2 0b fd 20 c5 23  |. ........... .#|
00015ab0  69 6e 25 0d 89 bc 09 d9  23 69 6e 25 0d 89 c6 1e  |in%.....#in%....|
00015ac0  f2 69 6e 63 70 72 67 6c  65 6e 28 70 74 72 2d 35  |.incprglen(ptr-5|
00015ad0  2d 70 72 6f 67 72 61 6d  25 29 0d 89 d0 16 c8 99  |-program%)......|
00015ae0  20 22 48 6f 75 72 67 6c  61 73 73 5f 4f 66 66 22  | "Hourglass_Off"|
00015af0  0d 89 da 05 e1 0d 89 e4  04 0d 89 ee 1b dd 20 f2  |.............. .|
00015b00  69 6d 70 6f 72 74 5f 74  65 78 74 28 69 6d 70 6f  |import_text(impo|
00015b10  72 74 24 29 0d 89 f8 12  e7 20 69 6d 70 6f 72 74  |rt$)..... import|
00015b20  24 3d 22 22 20 8c 0d 8a  02 11 f2 65 72 72 6f 72  |$="" ......error|
00015b30  28 31 36 2c 22 22 29 0d  8a 0c 05 cc 0d 8a 16 25  |(16,"")........%|
00015b40  ff 20 22 4c 4f 41 44 20  22 2b 69 6d 70 6f 72 74  |. "LOAD "+import|
00015b50  24 2b 22 20 22 2b c3 7e  28 74 65 78 74 25 2b 32  |$+" "+.~(text%+2|
00015b60  29 0d 8a 20 0a 6d 70 74  72 3d 31 0d 8a 2a 22 3f  |).. .mptr=1..*"?|
00015b70  74 65 78 74 25 3d 74 65  78 74 25 3f 32 3a 74 65  |text%=text%?2:te|
00015b80  78 74 25 3f 31 3d 74 65  78 74 25 3f 33 0d 8a 34  |xt%?1=text%?3..4|
00015b90  23 74 65 78 74 25 21 32  3d 28 74 65 78 74 25 3f  |#text%!2=(text%?|
00015ba0  34 2b 32 35 36 2a 74 65  78 74 25 3f 35 29 2b 32  |4+256*text%?5)+2|
00015bb0  0d 8a 3e 13 74 65 78 74  25 21 36 3d 74 65 78 74  |..>.text%!6=text|
00015bc0  25 3f 36 0d 8a 48 05 cd  0d 8a 52 05 e1 0d 8a 5c  |%?6..H....R....\|
00015bd0  04 0d 8a 66 1a dd 20 f2  69 6d 70 6f 72 74 5f 6f  |...f.. .import_o|
00015be0  62 6a 28 69 6d 70 6f 72  74 24 29 0d 8a 70 2b ea  |bj(import$)..p+.|
00015bf0  20 69 6e 25 2c 4f 25 2c  4d 25 2c 4a 25 2c 66 6c  | in%,O%,M%,J%,fl|
00015c00  61 67 73 2c 73 74 61 74  65 2c 72 6f 6f 6d 2c 6d  |ags,state,room,m|
00015c10  6c 6f 2c 6d 68 69 0d 8a  7a 0d 4d 25 3d 6f 64 61  |lo,mhi..z.M%=oda|
00015c20  74 61 25 0d 8a 84 12 69  6e 25 3d 8e 28 69 6d 70  |ta%....in%=.(imp|
00015c30  6f 72 74 24 29 0d 8a 8e  1b e7 20 69 6e 25 3d 30  |ort$)..... in%=0|
00015c40  20 f2 65 72 72 6f 72 28  31 30 2c 22 22 29 3a e1  | .error(10,""):.|
00015c50  0d 8a 98 0c 4f 25 3d 9a  23 69 6e 25 0d 8a a2 0b  |....O%=.#in%....|
00015c60  cf 23 69 6e 25 3d 30 0d  8a ac 0f e3 20 49 25 3d  |.#in%=0..... I%=|
00015c70  30 20 b8 20 4f 25 0d 8a  b6 26 66 6c 61 67 73 3d  |0 . O%...&flags=|
00015c80  9a 23 69 6e 25 3a 73 74  61 74 65 3d 9a 23 69 6e  |.#in%:state=.#in|
00015c90  25 3a 72 6f 6f 6d 3d 9a  23 69 6e 25 0d 8a c0 17  |%:room=.#in%....|
00015ca0  6d 6c 6f 3d 9a 23 69 6e  25 3a 6d 68 69 3d 9a 23  |mlo=.#in%:mhi=.#|
00015cb0  69 6e 25 0d 8a ca 19 4d  25 3f 30 3d 66 6c 61 67  |in%....M%?0=flag|
00015cc0  73 3a 4d 25 3f 31 3d 73  74 61 74 65 0d 8a d4 14  |s:M%?1=state....|
00015cd0  4d 25 3f 32 3d 72 6f 6f  6d 3a 4d 25 3f 33 3d 30  |M%?2=room:M%?3=0|
00015ce0  0d 8a de 15 4d 25 3f 34  3d 6d 6c 6f 3a 4d 25 3f  |....M%?4=mlo:M%?|
00015cf0  35 3d 6d 68 69 0d 8a e8  14 e3 20 4a 25 3d 36 20  |5=mhi..... J%=6 |
00015d00  b8 20 6f 5f 6c 65 6e 2d  31 0d 8a f2 0b 4d 25 3f  |. o_len-1....M%?|
00015d10  4a 25 3d 30 0d 8a fc 08  ed 20 4a 25 0d 8b 06 0d  |J%=0..... J%....|
00015d20  4d 25 2b 3d 6f 5f 6c 65  6e 0d 8b 10 08 ed 20 49  |M%+=o_len..... I|
00015d30  25 0d 8b 1a 12 6c 61 73  74 5f 6f 62 6a 65 63 74  |%....last_object|
00015d40  3d 4f 25 0d 8b 24 09 d9  23 69 6e 25 0d 8b 2e 05  |=O%..$..#in%....|
00015d50  e1 0d 8b 38 04 0d 8b 42  1c dd 20 f2 69 6d 70 6f  |...8...B.. .impo|
00015d60  72 74 5f 72 6f 6f 6d 73  28 69 6d 70 6f 72 74 24  |rt_rooms(import$|
00015d70  29 0d 8b 4c 12 ea 20 69  6e 25 2c 52 25 2c 4d 25  |)..L.. in%,R%,M%|
00015d80  2c 4a 25 0d 8b 56 0d 4d  25 3d 72 64 61 74 61 25  |,J%..V.M%=rdata%|
00015d90  0d 8b 60 12 69 6e 25 3d  8e 28 69 6d 70 6f 72 74  |..`.in%=.(import|
00015da0  24 29 0d 8b 6a 1b e7 20  69 6e 25 3d 30 20 f2 65  |$)..j.. in%=0 .e|
00015db0  72 72 6f 72 28 31 30 2c  22 22 29 3a e1 0d 8b 74  |rror(10,""):...t|
00015dc0  0c 52 25 3d 9a 23 69 6e  25 0d 8b 7e 0b cf 23 69  |.R%=.#in%..~..#i|
00015dd0  6e 25 3d 30 0d 8b 88 0f  e3 20 49 25 3d 30 20 b8  |n%=0..... I%=0 .|
00015de0  20 52 25 0d 8b 92 0e e3  20 4a 25 3d 30 20 b8 20  | R%..... J%=0 . |
00015df0  33 0d 8b 9c 0f 4d 25 3f  4a 25 3d 9a 23 69 6e 25  |3....M%?J%=.#in%|
00015e00  0d 8b a6 08 ed 20 4a 25  0d 8b b0 11 4d 25 3f 34  |..... J%....M%?4|
00015e10  3d 30 3a 4d 25 3f 35 3d  30 0d 8b ba 12 e3 20 4a  |=0:M%?5=0..... J|
00015e20  25 3d 36 20 b8 20 31 33  20 88 32 0d 8b c4 1b 4d  |%=6 . 13 .2....M|
00015e30  25 3f 4a 25 3d 9a 23 69  6e 25 3a 4d 25 3f 28 4a  |%?J%=.#in%:M%?(J|
00015e40  25 2b 31 29 3d 30 0d 8b  ce 08 ed 20 4a 25 0d 8b  |%+1)=0..... J%..|
00015e50  d8 10 e3 20 4a 25 3d 31  34 20 b8 20 33 37 0d 8b  |... J%=14 . 37..|
00015e60  e2 0b 4d 25 3f 4a 25 3d  30 0d 8b ec 08 ed 20 4a  |..M%?J%=0..... J|
00015e70  25 0d 8b f6 0f 4d 25 3f  32 32 3d 9a 23 69 6e 25  |%....M%?22=.#in%|
00015e80  0d 8c 00 0f 4d 25 3f 32  34 3d 9a 23 69 6e 25 0d  |....M%?24=.#in%.|
00015e90  8c 0a 10 e3 20 4a 25 3d  33 38 20 b8 20 37 33 0d  |.... J%=38 . 73.|
00015ea0  8c 14 35 e7 20 28 4a 25  3c 34 32 20 84 20 4a 25  |..5. (J%<42 . J%|
00015eb0  3d 34 36 20 84 20 4a 25  3d 34 37 29 20 8c 20 4d  |=46 . J%=47) . M|
00015ec0  25 3f 4a 25 3d 9a 23 69  6e 25 20 8b 20 4d 25 3f  |%?J%=.#in% . M%?|
00015ed0  4a 25 3d 30 0d 8c 1e 08  ed 20 4a 25 0d 8c 28 0d  |J%=0..... J%..(.|
00015ee0  4d 25 2b 3d 72 5f 6c 65  6e 0d 8c 32 08 ed 20 49  |M%+=r_len..2.. I|
00015ef0  25 0d 8c 3c 10 6c 61 73  74 5f 72 6f 6f 6d 3d 52  |%..<.last_room=R|
00015f00  25 0d 8c 46 05 e1 0d 8c  50 04 0d 8c 5a 12 dd 20  |%..F....P...Z.. |
00015f10  f2 75 70 64 61 74 65 5f  64 61 74 61 0d 8c 64 16  |.update_data..d.|
00015f20  20 20 20 f2 72 65 6d 6f  76 65 5f 6d 61 72 6b 65  |   .remove_marke|
00015f30  72 73 0d 8c 6e 17 20 20  20 c8 8e 20 74 65 78 74  |rs..n.   .. text|
00015f40  5f 6f 77 6e 65 72 24 20  ca 0d 8c 78 20 20 20 20  |_owner$ ...x    |
00015f50  20 20 c9 20 22 74 65 78  74 65 64 22 20 3a 20 f2  |  . "texted" : .|
00015f60  73 74 6f 72 65 5f 6d 73  67 0d 8c 82 30 20 20 20  |store_msg...0   |
00015f70  20 20 c9 20 22 70 72 6f  67 72 61 6d 22 20 3a 20  |  . "program" : |
00015f80  e7 20 ac 20 74 65 78 74  5f 6f 6b 20 8c 20 f2 73  |. . text_ok . .s|
00015f90  74 6f 72 65 5f 70 72 6f  67 0d 8c 8c 2f 20 20 20  |tore_prog.../   |
00015fa0  20 20 c9 20 22 76 6f 63  61 62 22 20 3a 20 e7 20  |  . "vocab" : . |
00015fb0  ac 20 74 65 78 74 5f 6f  6b 20 8c 20 f2 73 74 6f  |. text_ok . .sto|
00015fc0  72 65 5f 76 6f 63 61 62  0d 8c 96 1d 20 20 20 20  |re_vocab....    |
00015fd0  20 c9 20 22 70 69 78 22  20 3a 20 f2 73 74 6f 72  | . "pix" : .stor|
00015fe0  65 5f 70 69 78 0d 8c a0  08 20 20 20 cb 0d 8c aa  |e_pix....   ....|
00015ff0  33 20 69 25 3d 54 48 45  6b 65 79 69 63 6f 6e 3a  |3 i%=THEkeyicon:|
00016000  e7 20 69 63 6f 6e 25 28  69 25 29 3c 3e 2d 31 20  |. icon%(i%)<>-1 |
00016010  f2 73 74 6f 72 65 5f 6f  62 6a 28 6f 70 74 72 29  |.store_obj(optr)|
00016020  0d 8c b4 35 20 69 25 3d  54 48 45 64 6f 6f 72 69  |...5 i%=THEdoori|
00016030  63 6f 6e 3a e7 20 69 63  6f 6e 25 28 69 25 29 3c  |con:. icon%(i%)<|
00016040  3e 2d 31 20 f2 73 74 6f  72 65 5f 72 6f 6f 6d 28  |>-1 .store_room(|
00016050  72 70 74 72 29 0d 8c be  06 20 e1 0d 8c c8 04 0d  |rptr).... ......|
00016060  8c d2 13 dd 20 f2 73 61  76 65 5f 61 6c 6c 28 66  |.... .save_all(f|
00016070  24 29 0d 8c dc 17 f4 20  66 24 3d 66 75 6c 6c 20  |$)..... f$=full |
00016080  70 61 74 68 20 6e 61 6d  65 0d 8c e6 71 e7 20 a7  |path name...q. .|
00016090  66 24 2c 22 2e 22 29 3d  30 20 8c 20 85 20 31 2c  |f$,".")=0 . . 1,|
000160a0  22 54 6f 20 73 61 76 65  2c 20 64 72 61 67 20 74  |"To save, drag t|
000160b0  68 65 20 66 69 6c 65 20  69 63 6f 6e 20 74 6f 20  |he file icon to |
000160c0  61 20 64 69 72 65 63 74  6f 72 79 20 76 69 65 77  |a directory view|
000160d0  65 72 20 69 6e 20 77 68  69 63 68 20 74 68 65 72  |er in which ther|
000160e0  65 20 69 73 20 61 6e 20  41 4c 50 53 20 64 69 72  |e is an ALPS dir|
000160f0  65 63 74 6f 72 79 2e 22  3a e1 0d 8c f0 15 c8 99  |ectory.":.......|
00016100  20 22 48 6f 75 72 67 6c  61 73 73 5f 4f 6e 22 0d  | "Hourglass_On".|
00016110  8c fa 04 0d 8d 04 35 f4  20 43 68 61 6e 67 65 73  |......5. Changes|
00016120  20 74 6f 20 70 72 65 76  65 6e 74 20 27 49 6e 70  | to prevent 'Inp|
00016130  75 74 20 66 6f 63 75 73  27 20 62 75 67 20 2d 20  |ut focus' bug - |
00016140  31 32 2e 30 34 2e 39 30  0d 8d 0e 46 f4 20 50 52  |12.04.90...F. PR|
00016150  4f 43 63 6c 6f 73 65 28  74 65 78 74 68 61 6e 64  |OCclose(texthand|
00016160  6c 65 29 3a 50 52 4f 43  63 6c 6f 73 65 28 6f 62  |le):PROCclose(ob|
00016170  6a 68 61 6e 64 6c 65 29  3a 50 52 4f 43 63 6c 6f  |jhandle):PROCclo|
00016180  73 65 28 72 6f 6f 6d 68  61 6e 64 6c 65 29 0d 8d  |se(roomhandle)..|
00016190  18 10 f2 75 70 64 61 74  65 5f 64 61 74 61 0d 8d  |...update_data..|
000161a0  22 1e f4 20 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |".. ------------|
000161b0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0d 8d 2c 11  |------------..,.|
000161c0  e7 20 ac 20 65 72 72 66  6c 61 67 20 8c 0d 8d 36  |. . errflag ...6|
000161d0  1a 70 24 3d 66 24 3a 66  24 3d a4 6c 65 61 66 6e  |.p$=f$:f$=.leafn|
000161e0  61 6d 65 28 70 24 29 0d  8d 40 17 70 24 3d c0 70  |ame(p$)..@.p$=.p|
000161f0  24 2c a9 28 70 24 29 2d  a9 28 66 24 29 29 0d 8d  |$,.(p$)-.(f$))..|
00016200  4a 11 64 24 3d 70 24 2b  22 41 6c 70 73 2e 22 0d  |J.d$=p$+"Alps.".|
00016210  8d 54 1a ff 28 22 53 45  54 20 41 6c 70 73 24 44  |.T..("SET Alps$D|
00016220  61 74 61 20 22 2b 64 24  29 0d 8d 5e 24 f2 73 61  |ata "+d$)..^$.sa|
00016230  76 65 5f 6f 62 6a 73 28  22 3c 41 6c 70 73 24 44  |ve_objs("<Alps$D|
00016240  61 74 61 3e 4f 62 6a 65  63 74 73 22 29 0d 8d 68  |ata>Objects")..h|
00016250  23 f2 73 61 76 65 5f 72  6f 6f 6d 73 28 22 3c 41  |#.save_rooms("<A|
00016260  6c 70 73 24 44 61 74 61  3e 52 6f 6f 6d 73 22 29  |lps$Data>Rooms")|
00016270  0d 8d 72 23 f2 73 61 76  65 5f 66 6c 61 67 73 28  |..r#.save_flags(|
00016280  22 3c 41 6c 70 73 24 44  61 74 61 3e 46 6c 61 67  |"<Alps$Data>Flag|
00016290  73 22 29 0d 8d 7c 24 f2  73 61 76 65 5f 70 69 78  |s")..|$.save_pix|
000162a0  28 22 3c 41 6c 70 73 24  44 61 74 61 3e 50 69 63  |("<Alps$Data>Pic|
000162b0  74 75 72 65 73 22 29 0d  8d 86 13 f2 73 61 76 65  |tures").....save|
000162c0  5f 76 6f 63 61 62 28 66  24 29 0d 8d 90 27 f2 73  |_vocab(f$)...'.s|
000162d0  61 76 65 5f 70 72 6f 67  72 61 6d 28 22 3c 41 6c  |ave_program("<Al|
000162e0  70 73 24 44 61 74 61 3e  50 72 6f 67 72 61 6d 22  |ps$Data>Program"|
000162f0  29 0d 8d 9a 21 f2 73 61  76 65 5f 74 65 78 74 28  |)...!.save_text(|
00016300  22 3c 41 6c 70 73 24 44  61 74 61 3e 54 65 78 74  |"<Alps$Data>Text|
00016310  22 29 0d 8d a4 21 f2 73  61 76 65 5f 64 69 63 74  |")...!.save_dict|
00016320  28 22 3c 41 6c 70 73 24  44 61 74 61 3e 44 69 63  |("<Alps$Data>Dic|
00016330  74 22 29 0d 8d ae 24 f2  73 61 76 65 5f 70 61 6c  |t")...$.save_pal|
00016340  28 22 3c 41 6c 70 73 24  44 61 74 61 3e 21 50 61  |("<Alps$Data>!Pa|
00016350  6c 65 74 74 65 22 29 0d  8d b8 25 f2 73 61 76 65  |lette")...%.save|
00016360  5f 63 68 61 72 73 28 22  3c 41 6c 70 73 24 44 61  |_chars("<Alps$Da|
00016370  74 61 3e 63 68 61 72 73  65 74 22 29 0d 8d c2 1d  |ta>charset")....|
00016380  ff 28 22 43 52 45 41 54  45 20 22 2b 70 24 2b 66  |.("CREATE "+p$+f|
00016390  24 2b 22 20 31 30 30 22  29 0d 8d cc 21 ff 28 22  |$+" 100")...!.("|
000163a0  53 45 54 54 59 50 45 20  22 2b 70 24 2b 66 24 2b  |SETTYPE "+p$+f$+|
000163b0  22 20 22 2b 74 79 70 65  24 29 0d 8d d6 27 ff 28  |" "+type$)...'.(|
000163c0  22 43 52 45 41 54 45 20  3c 41 6c 70 73 24 44 61  |"CREATE <Alps$Da|
000163d0  74 61 3e 47 61 6d 65 44  61 74 61 20 31 30 30 22  |ta>GameData 100"|
000163e0  29 0d 8d e0 21 6f 75 74  25 3d ad 28 22 3c 41 6c  |)...!out%=.("<Al|
000163f0  70 73 24 44 61 74 61 3e  47 61 6d 65 44 61 74 61  |ps$Data>GameData|
00016400  22 29 0d 8d ea 10 d5 23  6f 75 74 25 2c 6d 6f 64  |").....#out%,mod|
00016410  65 25 0d 8d f4 0a d9 23  6f 75 74 25 0d 8d fe 29  |e%.....#out%...)|
00016420  64 61 74 61 5f 73 61 76  65 64 3d b9 3a 6c 6f 61  |data_saved=.:loa|
00016430  64 65 64 24 3d 66 24 3a  24 66 69 6c 65 6e 61 6d  |ded$=f$:$filenam|
00016440  65 25 3d 66 24 0d 8e 08  05 cd 0d 8e 12 32 c8 99  |e%=f$........2..|
00016450  20 43 72 65 61 74 65 4d  2c 2c 2d 31 3a f4 20 43  | CreateM,,-1:. C|
00016460  6c 6f 73 65 20 74 68 65  20 27 53 61 76 65 20 61  |lose the 'Save a|
00016470  73 27 20 6d 65 6e 75 2f  64 62 6f 78 0d 8e 1c 16  |s' menu/dbox....|
00016480  c8 99 20 22 48 6f 75 72  67 6c 61 73 73 5f 4f 66  |.. "Hourglass_Of|
00016490  66 22 0d 8e 26 05 e1 0d  8e 30 04 0d 8e 3a 16 dd  |f"..&....0...:..|
000164a0  20 f2 73 61 76 65 5f 76  6f 63 61 62 28 66 69 24  | .save_vocab(fi$|
000164b0  29 0d 8e 44 0e e7 20 66  69 24 3d 22 22 20 8c 0d  |)..D.. fi$="" ..|
000164c0  8e 4e 11 f2 65 72 72 6f  72 28 31 36 2c 22 22 29  |.N..error(16,"")|
000164d0  0d 8e 58 05 cc 0d 8e 62  23 f2 73 61 76 65 5f 6e  |..X....b#.save_n|
000164e0  6f 75 6e 73 28 22 3c 41  6c 70 73 24 44 61 74 61  |ouns("<Alps$Data|
000164f0  3e 4e 6f 75 6e 73 22 29  0d 8e 6c 23 f2 73 61 76  |>Nouns")..l#.sav|
00016500  65 5f 76 65 72 62 73 28  22 3c 41 6c 70 73 24 44  |e_verbs("<Alps$D|
00016510  61 74 61 3e 56 65 72 62  73 22 29 0d 8e 76 2a f2  |ata>Verbs")..v*.|
00016520  73 61 76 65 5f 61 64 6a  65 63 74 73 28 22 3c 41  |save_adjects("<A|
00016530  6c 70 73 24 44 61 74 61  3e 41 64 6a 65 63 74 69  |lps$Data>Adjecti|
00016540  76 65 73 22 29 0d 8e 80  24 f2 73 61 76 65 5f 70  |ves")...$.save_p|
00016550  72 65 70 73 28 22 3c 41  6c 70 73 24 44 61 74 61  |reps("<Alps$Data|
00016560  3e 50 72 65 70 6f 73 22  29 0d 8e 8a 24 f2 73 61  |>Prepos")...$.sa|
00016570  76 65 5f 63 6f 6e 6a 28  22 3c 41 6c 70 73 24 44  |ve_conj("<Alps$D|
00016580  61 74 61 3e 43 6f 6e 6a  75 6e 63 22 29 0d 8e 94  |ata>Conjunc")...|
00016590  25 f2 73 61 76 65 5f 73  70 65 63 28 22 3c 41 6c  |%.save_spec("<Al|
000165a0  70 73 24 44 61 74 61 3e  53 70 65 63 69 61 6c 73  |ps$Data>Specials|
000165b0  22 29 0d 8e 9e 23 f2 73  61 76 65 5f 6e 6f 69 73  |")...#.save_nois|
000165c0  65 28 22 3c 41 6c 70 73  24 44 61 74 61 3e 4e 6f  |e("<Alps$Data>No|
000165d0  69 73 65 22 29 0d 8e a8  22 f2 73 61 76 65 5f 6e  |ise")...".save_n|
000165e0  72 65 66 73 28 22 3c 41  6c 70 73 24 44 61 74 61  |refs("<Alps$Data|
000165f0  3e 4e 72 65 66 22 29 0d  8e b2 22 f2 73 61 76 65  |>Nref")...".save|
00016600  5f 61 72 65 66 73 28 22  3c 41 6c 70 73 24 44 61  |_arefs("<Alps$Da|
00016610  74 61 3e 41 72 65 66 22  29 0d 8e bc 27 f2 73 61  |ta>Aref")...'.sa|
00016620  76 65 5f 76 74 79 70 65  73 28 22 3c 41 6c 70 73  |ve_vtypes("<Alps|
00016630  24 44 61 74 61 3e 56 65  72 62 54 79 70 65 22 29  |$Data>VerbType")|
00016640  0d 8e c6 05 cd 0d 8e d0  05 e1 0d 8e da 04 0d 8e  |................|
00016650  e4 16 dd 20 f2 73 61 76  65 5f 6e 6f 75 6e 73 28  |... .save_nouns(|
00016660  66 69 24 29 0d 8e ee 0e  e7 20 66 69 24 3d 22 22  |fi$)..... fi$=""|
00016670  20 8c 0d 8e f8 11 f2 65  72 72 6f 72 28 31 36 2c  | ......error(16,|
00016680  22 22 29 0d 8f 02 05 cc  0d 8f 0c 2e ff 20 22 53  |"").......... "S|
00016690  41 56 45 20 22 2b 66 69  24 2b 22 20 22 2b c3 7e  |AVE "+fi$+" "+.~|
000166a0  6e 6f 75 6e 73 2b 22 20  22 2b c3 7e 28 6e 78 74  |nouns+" "+.~(nxt|
000166b0  6f 62 6a 2b 31 29 0d 8f  16 1c ff 20 22 53 45 54  |obj+1)..... "SET|
000166c0  54 59 50 45 20 22 2b 66  69 24 2b 22 20 44 61 74  |TYPE "+fi$+" Dat|
000166d0  61 22 0d 8f 20 05 cd 0d  8f 2a 05 e1 0d 8f 34 04  |a".. ....*....4.|
000166e0  0d 8f 3e 16 dd 20 f2 73  61 76 65 5f 76 65 72 62  |..>.. .save_verb|
000166f0  73 28 66 69 24 29 0d 8f  48 0e e7 20 66 69 24 3d  |s(fi$)..H.. fi$=|
00016700  22 22 20 8c 0d 8f 52 11  f2 65 72 72 6f 72 28 31  |"" ...R..error(1|
00016710  36 2c 22 22 29 0d 8f 5c  05 cc 0d 8f 66 2e ff 20  |6,"")..\....f.. |
00016720  22 53 41 56 45 20 22 2b  66 69 24 2b 22 20 22 2b  |"SAVE "+fi$+" "+|
00016730  c3 7e 76 65 72 62 73 2b  22 20 22 2b c3 7e 28 6e  |.~verbs+" "+.~(n|
00016740  78 74 76 72 62 2b 31 29  0d 8f 70 1c ff 20 22 53  |xtvrb+1)..p.. "S|
00016750  45 54 54 59 50 45 20 22  2b 66 69 24 2b 22 20 44  |ETTYPE "+fi$+" D|
00016760  61 74 61 22 0d 8f 7a 05  cd 0d 8f 84 05 e1 0d 8f  |ata"..z.........|
00016770  8e 04 0d 8f 98 18 dd 20  f2 73 61 76 65 5f 61 64  |....... .save_ad|
00016780  6a 65 63 74 73 28 66 69  24 29 0d 8f a2 0e e7 20  |jects(fi$)..... |
00016790  66 69 24 3d 22 22 20 8c  0d 8f ac 11 f2 65 72 72  |fi$="" ......err|
000167a0  6f 72 28 31 36 2c 22 22  29 0d 8f b6 05 cc 0d 8f  |or(16,"").......|
000167b0  c0 30 ff 20 22 53 41 56  45 20 22 2b 66 69 24 2b  |.0. "SAVE "+fi$+|
000167c0  22 20 22 2b c3 7e 61 64  6a 65 63 74 73 2b 22 20  |" "+.~adjects+" |
000167d0  22 2b c3 7e 28 6e 78 74  61 64 6a 2b 31 29 0d 8f  |"+.~(nxtadj+1)..|
000167e0  ca 1c ff 20 22 53 45 54  54 59 50 45 20 22 2b 66  |... "SETTYPE "+f|
000167f0  69 24 2b 22 20 44 61 74  61 22 0d 8f d4 05 cd 0d  |i$+" Data"......|
00016800  8f de 05 e1 0d 8f e8 04  0d 8f f2 16 dd 20 f2 73  |............. .s|
00016810  61 76 65 5f 70 72 65 70  73 28 66 69 24 29 0d 8f  |ave_preps(fi$)..|
00016820  fc 0e e7 20 66 69 24 3d  22 22 20 8c 0d 90 06 11  |... fi$="" .....|
00016830  f2 65 72 72 6f 72 28 31  36 2c 22 22 29 0d 90 10  |.error(16,"")...|
00016840  05 cc 0d 90 1a 2e ff 20  22 53 41 56 45 20 22 2b  |....... "SAVE "+|
00016850  66 69 24 2b 22 20 22 2b  c3 7e 70 72 65 70 73 2b  |fi$+" "+.~preps+|
00016860  22 20 22 2b c3 7e 28 6e  78 74 70 72 70 2b 31 29  |" "+.~(nxtprp+1)|
00016870  0d 90 24 1c ff 20 22 53  45 54 54 59 50 45 20 22  |..$.. "SETTYPE "|
00016880  2b 66 69 24 2b 22 20 44  61 74 61 22 0d 90 2e 05  |+fi$+" Data"....|
00016890  cd 0d 90 38 05 e1 0d 90  42 04 0d 90 4c 15 dd 20  |...8....B...L.. |
000168a0  f2 73 61 76 65 5f 63 6f  6e 6a 28 66 69 24 29 0d  |.save_conj(fi$).|
000168b0  90 56 0e e7 20 66 69 24  3d 22 22 20 8c 0d 90 60  |.V.. fi$="" ...`|
000168c0  11 f2 65 72 72 6f 72 28  31 36 2c 22 22 29 0d 90  |..error(16,"")..|
000168d0  6a 05 cc 0d 90 74 2e ff  20 22 53 41 56 45 20 22  |j....t.. "SAVE "|
000168e0  2b 66 69 24 2b 22 20 22  2b c3 7e 63 6f 6e 6a 73  |+fi$+" "+.~conjs|
000168f0  2b 22 20 22 2b c3 7e 28  6e 78 74 63 6a 6e 2b 31  |+" "+.~(nxtcjn+1|
00016900  29 0d 90 7e 1c ff 20 22  53 45 54 54 59 50 45 20  |)..~.. "SETTYPE |
00016910  22 2b 66 69 24 2b 22 20  44 61 74 61 22 0d 90 88  |"+fi$+" Data"...|
00016920  05 cd 0d 90 92 05 e1 0d  90 9c 04 0d 90 a6 15 dd  |................|
00016930  20 f2 73 61 76 65 5f 73  70 65 63 28 66 69 24 29  | .save_spec(fi$)|
00016940  0d 90 b0 0e e7 20 66 69  24 3d 22 22 20 8c 0d 90  |..... fi$="" ...|
00016950  ba 11 f2 65 72 72 6f 72  28 31 36 2c 22 22 29 0d  |...error(16,"").|
00016960  90 c4 05 cc 0d 90 ce 2e  ff 20 22 53 41 56 45 20  |......... "SAVE |
00016970  22 2b 66 69 24 2b 22 20  22 2b c3 7e 73 70 65 63  |"+fi$+" "+.~spec|
00016980  73 2b 22 20 22 2b c3 7e  28 6e 78 74 73 70 6e 2b  |s+" "+.~(nxtspn+|
00016990  31 29 0d 90 d8 1c ff 20  22 53 45 54 54 59 50 45  |1)..... "SETTYPE|
000169a0  20 22 2b 66 69 24 2b 22  20 44 61 74 61 22 0d 90  | "+fi$+" Data"..|
000169b0  e2 05 cd 0d 90 ec 05 e1  0d 90 f6 04 0d 91 00 16  |................|
000169c0  dd 20 f2 73 61 76 65 5f  6e 6f 69 73 65 28 66 69  |. .save_noise(fi|
000169d0  24 29 0d 91 0a 0e e7 20  66 69 24 3d 22 22 20 8c  |$)..... fi$="" .|
000169e0  0d 91 14 11 f2 65 72 72  6f 72 28 31 36 2c 22 22  |.....error(16,""|
000169f0  29 0d 91 1e 05 cc 0d 91  28 2e ff 20 22 53 41 56  |).......(.. "SAV|
00016a00  45 20 22 2b 66 69 24 2b  22 20 22 2b c3 7e 6e 6f  |E "+fi$+" "+.~no|
00016a10  69 73 65 2b 22 20 22 2b  c3 7e 28 6e 78 74 6e 73  |ise+" "+.~(nxtns|
00016a20  6e 2b 31 29 0d 91 32 1c  ff 20 22 53 45 54 54 59  |n+1)..2.. "SETTY|
00016a30  50 45 20 22 2b 66 69 24  2b 22 20 44 61 74 61 22  |PE "+fi$+" Data"|
00016a40  0d 91 3c 05 cd 0d 91 46  05 e1 0d 91 50 04 0d 91  |..<....F....P...|
00016a50  5a 17 dd 20 f2 73 61 76  65 5f 76 74 79 70 65 73  |Z.. .save_vtypes|
00016a60  28 66 69 24 29 0d 91 64  0e e7 20 66 69 24 3d 22  |(fi$)..d.. fi$="|
00016a70  22 20 8c 0d 91 6e 11 f2  65 72 72 6f 72 28 31 36  |" ...n..error(16|
00016a80  2c 22 22 29 0d 91 78 05  cc 0d 91 82 36 ff 20 22  |,"")..x.....6. "|
00016a90  53 41 56 45 20 22 2b 66  69 24 2b 22 20 22 2b c3  |SAVE "+fi$+" "+.|
00016aa0  7e 76 65 72 62 5f 74 79  70 65 2b 22 2b 22 2b c3  |~verb_type+"+"+.|
00016ab0  7e 28 32 2a 28 6d 61 78  76 62 6e 2b 31 29 29 0d  |~(2*(maxvbn+1)).|
00016ac0  91 8c 1c ff 20 22 53 45  54 54 59 50 45 20 22 2b  |.... "SETTYPE "+|
00016ad0  66 69 24 2b 22 20 44 61  74 61 22 0d 91 96 05 cd  |fi$+" Data".....|
00016ae0  0d 91 a0 05 e1 0d 91 aa  04 0d 91 b4 16 dd 20 f2  |.............. .|
00016af0  73 61 76 65 5f 61 72 65  66 73 28 66 69 24 29 0d  |save_arefs(fi$).|
00016b00  91 be 0e e7 20 66 69 24  3d 22 22 20 8c 0d 91 c8  |.... fi$="" ....|
00016b10  11 f2 65 72 72 6f 72 28  31 36 2c 22 22 29 0d 91  |..error(16,"")..|
00016b20  d2 05 cc 0d 91 dc 2c ff  20 22 53 41 56 45 20 22  |......,. "SAVE "|
00016b30  2b 66 69 24 2b 22 20 22  2b c3 7e 61 72 65 66 2b  |+fi$+" "+.~aref+|
00016b40  22 2b 22 2b c3 7e 28 21  61 72 65 66 2b 31 29 0d  |"+"+.~(!aref+1).|
00016b50  91 e6 1c ff 20 22 53 45  54 54 59 50 45 20 22 2b  |.... "SETTYPE "+|
00016b60  66 69 24 2b 22 20 44 61  74 61 22 0d 91 f0 05 cd  |fi$+" Data".....|
00016b70  0d 91 fa 05 e1 0d 92 04  04 0d 92 0e 16 dd 20 f2  |.............. .|
00016b80  73 61 76 65 5f 6e 72 65  66 73 28 66 69 24 29 0d  |save_nrefs(fi$).|
00016b90  92 18 0e e7 20 66 69 24  3d 22 22 20 8c 0d 92 22  |.... fi$="" ..."|
00016ba0  11 f2 65 72 72 6f 72 28  31 36 2c 22 22 29 0d 92  |..error(16,"")..|
00016bb0  2c 05 cc 0d 92 36 2c ff  20 22 53 41 56 45 20 22  |,....6,. "SAVE "|
00016bc0  2b 66 69 24 2b 22 20 22  2b c3 7e 6e 72 65 66 2b  |+fi$+" "+.~nref+|
00016bd0  22 2b 22 2b c3 7e 28 21  6e 72 65 66 2b 31 29 0d  |"+"+.~(!nref+1).|
00016be0  92 40 1c ff 20 22 53 45  54 54 59 50 45 20 22 2b  |.@.. "SETTYPE "+|
00016bf0  66 69 24 2b 22 20 44 61  74 61 22 0d 92 4a 05 cd  |fi$+" Data"..J..|
00016c00  0d 92 54 05 e1 0d 92 5e  04 0d 92 68 15 dd 20 f2  |..T....^...h.. .|
00016c10  73 61 76 65 5f 6f 62 6a  73 28 66 69 24 29 0d 92  |save_objs(fi$)..|
00016c20  72 0e e7 20 66 69 24 3d  22 22 20 8c 0d 92 7c 11  |r.. fi$="" ...|.|
00016c30  f2 65 72 72 6f 72 28 31  36 2c 22 22 29 0d 92 86  |.error(16,"")...|
00016c40  05 cc 0d 92 90 28 e7 20  ac 20 64 61 74 61 76 61  |.....(. . datava|
00016c50  6c 69 64 20 f2 73 77 61  70 5f 64 61 74 61 3a 64  |lid .swap_data:d|
00016c60  61 74 61 76 61 6c 69 64  3d b9 0d 92 9a 28 6f 64  |atavalid=....(od|
00016c70  61 74 61 25 3f 31 34 3d  6f 70 74 72 3a 6f 64 61  |ata%?14=optr:oda|
00016c80  74 61 25 3f 31 35 3d 6c  61 73 74 5f 6f 62 6a 65  |ta%?15=last_obje|
00016c90  63 74 0d 92 a4 3c ff 20  22 53 41 56 45 20 22 2b  |ct...<. "SAVE "+|
00016ca0  66 69 24 2b 22 20 22 2b  c3 7e 6f 64 61 74 61 25  |fi$+" "+.~odata%|
00016cb0  2b 22 2b 22 2b c3 7e 28  6f 5f 6c 65 6e 2a 28 6c  |+"+"+.~(o_len*(l|
00016cc0  61 73 74 5f 6f 62 6a 65  63 74 2b 31 29 29 0d 92  |ast_object+1))..|
00016cd0  ae 1c ff 20 22 53 45 54  54 59 50 45 20 22 2b 66  |... "SETTYPE "+f|
00016ce0  69 24 2b 22 20 44 61 74  61 22 0d 92 b8 05 cd 0d  |i$+" Data"......|
00016cf0  92 c2 05 e1 0d 92 cc 04  0d 92 d6 16 dd 20 f2 73  |............. .s|
00016d00  61 76 65 5f 72 6f 6f 6d  73 28 66 69 24 29 0d 92  |ave_rooms(fi$)..|
00016d10  e0 0e e7 20 66 69 24 3d  22 22 20 8c 0d 92 ea 11  |... fi$="" .....|
00016d20  f2 65 72 72 6f 72 28 31  36 2c 22 22 29 0d 92 f4  |.error(16,"")...|
00016d30  05 cc 0d 92 fe 28 e7 20  ac 20 64 61 74 61 76 61  |.....(. . datava|
00016d40  6c 69 64 20 f2 73 77 61  70 5f 64 61 74 61 3a 64  |lid .swap_data:d|
00016d50  61 74 61 76 61 6c 69 64  3d b9 0d 93 08 20 21 72  |atavalid=.... !r|
00016d60  64 61 74 61 25 3d 72 70  74 72 2b 28 6c 61 73 74  |data%=rptr+(last|
00016d70  5f 72 6f 6f 6d 3c 3c 31  36 29 0d 93 12 3a ff 20  |_room<<16)...:. |
00016d80  22 53 41 56 45 20 22 2b  66 69 24 2b 22 20 22 2b  |"SAVE "+fi$+" "+|
00016d90  c3 7e 72 64 61 74 61 25  2b 22 2b 22 2b c3 7e 28  |.~rdata%+"+"+.~(|
00016da0  72 5f 6c 65 6e 2a 28 6c  61 73 74 5f 72 6f 6f 6d  |r_len*(last_room|
00016db0  2b 31 29 29 0d 93 1c 1c  ff 20 22 53 45 54 54 59  |+1))..... "SETTY|
00016dc0  50 45 20 22 2b 66 69 24  2b 22 20 44 61 74 61 22  |PE "+fi$+" Data"|
00016dd0  0d 93 26 05 cd 0d 93 30  05 e1 0d 93 3a 04 0d 93  |..&....0....:...|
00016de0  44 16 dd 20 f2 73 61 76  65 5f 66 6c 61 67 73 28  |D.. .save_flags(|
00016df0  66 69 24 29 0d 93 4e 0e  e7 20 66 69 24 3d 22 22  |fi$)..N.. fi$=""|
00016e00  20 8c 0d 93 58 11 f2 65  72 72 6f 72 28 31 36 2c  | ...X..error(16,|
00016e10  22 22 29 0d 93 62 05 cc  0d 93 6c 0e 63 68 6e 25  |"")..b....l.chn%|
00016e20  3d ae 20 66 69 24 0d 93  76 0e e3 20 66 25 3d 30  |=. fi$..v.. f%=0|
00016e30  20 b8 20 37 0d 93 80 1e  66 6c 61 67 24 3d 24 28  | . 7....flag$=$(|
00016e40  6f 5f 66 6c 61 67 73 25  2b 66 25 2a 6d 61 78 64  |o_flags%+f%*maxd|
00016e50  25 29 0d 93 8a 10 f1 23  63 68 6e 25 2c 66 6c 61  |%).....#chn%,fla|
00016e60  67 24 0d 93 94 05 ed 0d  93 9e 0e e3 20 66 25 3d  |g$.......... f%=|
00016e70  30 20 b8 20 37 0d 93 a8  1e 66 6c 61 67 24 3d 24  |0 . 7....flag$=$|
00016e80  28 72 5f 66 6c 61 67 73  25 2b 66 25 2a 6d 61 78  |(r_flags%+f%*max|
00016e90  64 25 29 0d 93 b2 10 f1  23 63 68 6e 25 2c 66 6c  |d%).....#chn%,fl|
00016ea0  61 67 24 0d 93 bc 05 ed  0d 93 c6 0a d9 23 63 68  |ag$..........#ch|
00016eb0  6e 25 0d 93 d0 05 cd 0d  93 da 05 e1 0d 93 e4 04  |n%..............|
00016ec0  0d 93 ee 14 dd 20 f2 73  61 76 65 5f 70 69 78 28  |..... .save_pix(|
00016ed0  66 69 24 29 0d 93 f8 0e  e7 20 66 69 24 3d 22 22  |fi$)..... fi$=""|
00016ee0  20 8c 0d 94 02 11 f2 65  72 72 6f 72 28 31 36 2c  | ......error(16,|
00016ef0  22 22 29 0d 94 0c 05 cc  0d 94 16 2d ff 20 22 53  |"")........-. "S|
00016f00  41 56 45 20 22 2b 66 69  24 2b 22 20 22 2b c3 7e  |AVE "+fi$+" "+.~|
00016f10  70 69 78 73 2b 22 20 22  2b c3 7e 28 6e 78 74 70  |pixs+" "+.~(nxtp|
00016f20  78 6e 2b 31 29 0d 94 20  1c ff 20 22 53 45 54 54  |xn+1).. .. "SETT|
00016f30  59 50 45 20 22 2b 66 69  24 2b 22 20 44 61 74 61  |YPE "+fi$+" Data|
00016f40  22 0d 94 2a 05 cd 0d 94  34 05 e1 0d 94 3e 04 0d  |"..*....4....>..|
00016f50  94 48 18 dd 20 f2 73 61  76 65 5f 70 72 6f 67 72  |.H.. .save_progr|
00016f60  61 6d 28 66 69 24 29 0d  94 52 0e e7 20 66 69 24  |am(fi$)..R.. fi$|
00016f70  3d 22 22 20 8c 0d 94 5c  11 f2 65 72 72 6f 72 28  |="" ...\..error(|
00016f80  31 36 2c 22 22 29 0d 94  66 05 cc 0d 94 70 34 ff  |16,"")..f....p4.|
00016f90  20 22 53 41 56 45 20 22  2b 66 69 24 2b 22 20 22  | "SAVE "+fi$+" "|
00016fa0  2b c3 7e 70 72 6f 67 72  61 6d 25 2b 22 2b 22 2b  |+.~program%+"+"+|
00016fb0  c3 7e 28 a4 70 72 67 6c  65 6e 2b 34 2b 31 29 0d  |.~(.prglen+4+1).|
00016fc0  94 7a 1c ff 20 22 53 45  54 54 59 50 45 20 22 2b  |.z.. "SETTYPE "+|
00016fd0  66 69 24 2b 22 20 44 61  74 61 22 0d 94 84 05 cd  |fi$+" Data".....|
00016fe0  0d 94 8e 05 e1 0d 94 98  04 0d 94 a2 15 dd 20 f2  |.............. .|
00016ff0  73 61 76 65 5f 74 65 78  74 28 66 69 24 29 0d 94  |save_text(fi$)..|
00017000  ac 0e e7 20 66 69 24 3d  22 22 20 8c 0d 94 b6 11  |... fi$="" .....|
00017010  f2 65 72 72 6f 72 28 31  36 2c 22 22 29 0d 94 c0  |.error(16,"")...|
00017020  05 cc 0d 94 ca 2d ff 20  22 53 41 56 45 20 22 2b  |.....-. "SAVE "+|
00017030  66 69 24 2b 22 20 22 2b  c3 7e 74 65 78 74 25 2b  |fi$+" "+.~text%+|
00017040  22 20 22 2b c3 7e a4 74  65 78 74 5f 65 6e 64 0d  |" "+.~.text_end.|
00017050  94 d4 1c ff 20 22 53 45  54 54 59 50 45 20 22 2b  |.... "SETTYPE "+|
00017060  66 69 24 2b 22 20 44 61  74 61 22 0d 94 de 05 cd  |fi$+" Data".....|
00017070  0d 94 e8 05 e1 0d 94 f2  04 0d 94 fc 15 dd 20 f2  |.............. .|
00017080  73 61 76 65 5f 64 69 63  74 28 66 69 24 29 0d 95  |save_dict(fi$)..|
00017090  06 0e e7 20 66 69 24 3d  22 22 20 8c 0d 95 10 11  |... fi$="" .....|
000170a0  f2 65 72 72 6f 72 28 31  36 2c 22 22 29 0d 95 1a  |.error(16,"")...|
000170b0  05 cc 0d 95 24 3e ff 20  22 53 41 56 45 20 22 2b  |....$>. "SAVE "+|
000170c0  66 69 24 2b 22 20 22 2b  c3 7e 64 69 63 74 25 2b  |fi$+" "+.~dict%+|
000170d0  22 20 22 2b c3 7e 28 64  69 63 74 25 2b 3f 64 69  |" "+.~(dict%+?di|
000170e0  63 74 25 2b 32 35 36 2a  64 69 63 74 25 3f 31 29  |ct%+256*dict%?1)|
000170f0  0d 95 2e 1c ff 20 22 53  45 54 54 59 50 45 20 22  |..... "SETTYPE "|
00017100  2b 66 69 24 2b 22 20 44  61 74 61 22 0d 95 38 05  |+fi$+" Data"..8.|
00017110  cd 0d 95 42 05 e1 0d 95  4c 04 0d 95 56 13 dd 20  |...B....L...V.. |
00017120  f2 6c 6f 61 64 5f 61 6c  6c 28 66 24 29 0d 95 60  |.load_all(f$)..`|
00017130  1d f4 20 66 24 20 69 73  20 74 68 65 20 66 75 6c  |.. f$ is the ful|
00017140  6c 20 70 61 74 68 6e 61  6d 65 0d 95 6a 15 c8 99  |l pathname..j...|
00017150  20 22 48 6f 75 72 67 6c  61 73 73 5f 4f 6e 22 0d  | "Hourglass_On".|
00017160  95 74 3b f2 63 6c 6f 73  65 28 74 65 78 74 68 61  |.t;.close(textha|
00017170  6e 64 6c 65 29 3a f2 63  6c 6f 73 65 28 6f 62 6a  |ndle):.close(obj|
00017180  68 61 6e 64 6c 65 29 3a  f2 63 6c 6f 73 65 28 72  |handle):.close(r|
00017190  6f 6f 6d 68 61 6e 64 6c  65 29 0d 95 7e 1a 70 24  |oomhandle)..~.p$|
000171a0  3d 66 24 3a 66 24 3d a4  6c 65 61 66 6e 61 6d 65  |=f$:f$=.leafname|
000171b0  28 70 24 29 0d 95 88 17  70 24 3d c0 70 24 2c a9  |(p$)....p$=.p$,.|
000171c0  28 70 24 29 2d a9 28 66  24 29 29 0d 95 92 11 64  |(p$)-.(f$))....d|
000171d0  24 3d 70 24 2b 22 41 6c  70 73 2e 22 0d 95 9c 15  |$=p$+"Alps."....|
000171e0  72 24 3d 70 24 2b 22 52  65 73 6f 75 72 63 65 73  |r$=p$+"Resources|
000171f0  22 0d 95 a6 20 ff 28 22  53 45 54 20 55 73 65 72  |"... .("SET User|
00017200  73 24 52 65 73 6f 75 72  63 65 73 20 22 2b 72 24  |s$Resources "+r$|
00017210  29 0d 95 b0 2a ff 28 22  53 45 54 20 41 6c 70 73  |)...*.("SET Alps|
00017220  24 50 69 63 74 75 72 65  73 20 22 2b 70 24 2b 22  |$Pictures "+p$+"|
00017230  50 69 63 74 75 72 65 73  2e 22 29 0d 95 ba 1a ff  |Pictures.").....|
00017240  28 22 53 45 54 20 41 6c  70 73 24 44 61 74 61 20  |("SET Alps$Data |
00017250  22 2b 64 24 29 0d 95 c4  24 f2 6c 6f 61 64 5f 6f  |"+d$)...$.load_o|
00017260  62 6a 73 28 22 3c 41 6c  70 73 24 44 61 74 61 3e  |bjs("<Alps$Data>|
00017270  4f 62 6a 65 63 74 73 22  29 0d 95 ce 23 f2 6c 6f  |Objects")...#.lo|
00017280  61 64 5f 72 6f 6f 6d 73  28 22 3c 41 6c 70 73 24  |ad_rooms("<Alps$|
00017290  44 61 74 61 3e 52 6f 6f  6d 73 22 29 0d 95 d8 23  |Data>Rooms")...#|
000172a0  f2 6c 6f 61 64 5f 66 6c  61 67 73 28 22 3c 41 6c  |.load_flags("<Al|
000172b0  70 73 24 44 61 74 61 3e  46 6c 61 67 73 22 29 0d  |ps$Data>Flags").|
000172c0  95 e2 24 f2 6c 6f 61 64  5f 70 69 78 28 22 3c 41  |..$.load_pix("<A|
000172d0  6c 70 73 24 44 61 74 61  3e 50 69 63 74 75 72 65  |lps$Data>Picture|
000172e0  73 22 29 0d 95 ec 13 f2  6c 6f 61 64 5f 76 6f 63  |s").....load_voc|
000172f0  61 62 28 66 24 29 0d 95  f6 27 f2 6c 6f 61 64 5f  |ab(f$)...'.load_|
00017300  70 72 6f 67 72 61 6d 28  22 3c 41 6c 70 73 24 44  |program("<Alps$D|
00017310  61 74 61 3e 50 72 6f 67  72 61 6d 22 29 0d 96 00  |ata>Program")...|
00017320  21 f2 6c 6f 61 64 5f 74  65 78 74 28 22 3c 41 6c  |!.load_text("<Al|
00017330  70 73 24 44 61 74 61 3e  54 65 78 74 22 29 0d 96  |ps$Data>Text")..|
00017340  0a 21 f2 6c 6f 61 64 5f  64 69 63 74 28 22 3c 41  |.!.load_dict("<A|
00017350  6c 70 73 24 44 61 74 61  3e 44 69 63 74 22 29 0d  |lps$Data>Dict").|
00017360  96 14 21 ff 28 22 50 52  49 4e 54 20 3c 41 6c 70  |..!.("PRINT <Alp|
00017370  73 24 44 61 74 61 3e 63  68 61 72 73 65 74 22 29  |s$Data>charset")|
00017380  0d 96 1e 29 64 61 74 61  5f 73 61 76 65 64 3d b9  |...)data_saved=.|
00017390  3a 6c 6f 61 64 65 64 24  3d 66 24 3a 24 66 69 6c  |:loaded$=f$:$fil|
000173a0  65 6e 61 6d 65 25 3d 66  24 0d 96 28 16 c8 99 20  |ename%=f$..(... |
000173b0  22 48 6f 75 72 67 6c 61  73 73 5f 4f 66 66 22 0d  |"Hourglass_Off".|
000173c0  96 32 05 e1 0d 96 3c 04  0d 96 46 15 dd 20 f2 6c  |.2....<...F.. .l|
000173d0  6f 61 64 5f 76 6f 63 61  62 28 66 24 29 0d 96 50  |oad_vocab(f$)..P|
000173e0  0d e7 20 66 24 3d 22 22  20 8c 0d 96 5a 11 f2 65  |.. f$="" ...Z..e|
000173f0  72 72 6f 72 28 31 36 2c  22 22 29 0d 96 64 05 cc  |rror(16,"")..d..|
00017400  0d 96 6e 23 f2 6c 6f 61  64 5f 6e 6f 75 6e 73 28  |..n#.load_nouns(|
00017410  22 3c 41 6c 70 73 24 44  61 74 61 3e 4e 6f 75 6e  |"<Alps$Data>Noun|
00017420  73 22 29 0d 96 78 23 f2  6c 6f 61 64 5f 76 65 72  |s")..x#.load_ver|
00017430  62 73 28 22 3c 41 6c 70  73 24 44 61 74 61 3e 56  |bs("<Alps$Data>V|
00017440  65 72 62 73 22 29 0d 96  82 2a f2 6c 6f 61 64 5f  |erbs")...*.load_|
00017450  61 64 6a 65 63 74 73 28  22 3c 41 6c 70 73 24 44  |adjects("<Alps$D|
00017460  61 74 61 3e 41 64 6a 65  63 74 69 76 65 73 22 29  |ata>Adjectives")|
00017470  0d 96 8c 24 f2 6c 6f 61  64 5f 70 72 65 70 73 28  |...$.load_preps(|
00017480  22 3c 41 6c 70 73 24 44  61 74 61 3e 50 72 65 70  |"<Alps$Data>Prep|
00017490  6f 73 22 29 0d 96 96 24  f2 6c 6f 61 64 5f 63 6f  |os")...$.load_co|
000174a0  6e 6a 28 22 3c 41 6c 70  73 24 44 61 74 61 3e 43  |nj("<Alps$Data>C|
000174b0  6f 6e 6a 75 6e 63 22 29  0d 96 a0 25 f2 6c 6f 61  |onjunc")...%.loa|
000174c0  64 5f 73 70 65 63 28 22  3c 41 6c 70 73 24 44 61  |d_spec("<Alps$Da|
000174d0  74 61 3e 53 70 65 63 69  61 6c 73 22 29 0d 96 aa  |ta>Specials")...|
000174e0  23 f2 6c 6f 61 64 5f 6e  6f 69 73 65 28 22 3c 41  |#.load_noise("<A|
000174f0  6c 70 73 24 44 61 74 61  3e 4e 6f 69 73 65 22 29  |lps$Data>Noise")|
00017500  0d 96 b4 27 f2 6c 6f 61  64 5f 76 74 79 70 65 73  |...'.load_vtypes|
00017510  28 22 3c 41 6c 70 73 24  44 61 74 61 3e 56 65 72  |("<Alps$Data>Ver|
00017520  62 54 79 70 65 22 29 0d  96 be 22 f2 6c 6f 61 64  |bType")...".load|
00017530  5f 6e 72 65 66 73 28 22  3c 41 6c 70 73 24 44 61  |_nrefs("<Alps$Da|
00017540  74 61 3e 4e 72 65 66 22  29 0d 96 c8 22 f2 6c 6f  |ta>Nref")...".lo|
00017550  61 64 5f 61 72 65 66 73  28 22 3c 41 6c 70 73 24  |ad_arefs("<Alps$|
00017560  44 61 74 61 3e 41 72 65  66 22 29 0d 96 d2 05 cd  |Data>Aref").....|
00017570  0d 96 dc 05 e1 0d 96 e6  04 0d 96 f0 16 dd 20 f2  |.............. .|
00017580  6c 6f 61 64 5f 6e 6f 75  6e 73 28 66 69 24 29 0d  |load_nouns(fi$).|
00017590  96 fa 0e e7 20 66 69 24  3d 22 22 20 8c 0d 97 04  |.... fi$="" ....|
000175a0  11 f2 65 72 72 6f 72 28  31 36 2c 22 22 29 0d 97  |..error(16,"")..|
000175b0  0e 05 cc 0d 97 18 1d ff  20 22 4c 4f 41 44 20 22  |........ "LOAD "|
000175c0  2b 66 69 24 2b 22 20 22  2b c3 7e 6e 6f 75 6e 73  |+fi$+" "+.~nouns|
000175d0  0d 97 22 0e 6f 62 6e 3d  3f 6e 6f 75 6e 73 0d 97  |..".obn=?nouns..|
000175e0  2c 28 6e 78 74 6f 62 6a  3d 6e 6f 75 6e 73 2b 28  |,(nxtobj=nouns+(|
000175f0  6e 6f 75 6e 73 3f 31 2b  32 35 36 2a 28 6e 6f 75  |nouns?1+256*(nou|
00017600  6e 73 3f 32 29 29 0d 97  36 05 cd 0d 97 40 05 e1  |ns?2))..6....@..|
00017610  0d 97 4a 04 0d 97 54 16  dd 20 f2 6c 6f 61 64 5f  |..J...T.. .load_|
00017620  76 65 72 62 73 28 66 69  24 29 0d 97 5e 0e e7 20  |verbs(fi$)..^.. |
00017630  66 69 24 3d 22 22 20 8c  0d 97 68 11 f2 65 72 72  |fi$="" ...h..err|
00017640  6f 72 28 31 36 2c 22 22  29 0d 97 72 05 cc 0d 97  |or(16,"")..r....|
00017650  7c 1d ff 20 22 4c 4f 41  44 20 22 2b 66 69 24 2b  ||.. "LOAD "+fi$+|
00017660  22 20 22 2b c3 7e 76 65  72 62 73 0d 97 86 0e 76  |" "+.~verbs....v|
00017670  62 6e 3d 3f 76 65 72 62  73 0d 97 90 28 6e 78 74  |bn=?verbs...(nxt|
00017680  76 72 62 3d 76 65 72 62  73 2b 28 76 65 72 62 73  |vrb=verbs+(verbs|
00017690  3f 31 2b 32 35 36 2a 28  76 65 72 62 73 3f 32 29  |?1+256*(verbs?2)|
000176a0  29 0d 97 9a 05 cd 0d 97  a4 05 e1 0d 97 ae 04 0d  |)...............|
000176b0  97 b8 18 dd 20 f2 6c 6f  61 64 5f 61 64 6a 65 63  |.... .load_adjec|
000176c0  74 73 28 66 69 24 29 0d  97 c2 0e e7 20 66 69 24  |ts(fi$)..... fi$|
000176d0  3d 22 22 20 8c 0d 97 cc  11 f2 65 72 72 6f 72 28  |="" ......error(|
000176e0  31 36 2c 22 22 29 0d 97  d6 05 cc 0d 97 e0 1f ff  |16,"")..........|
000176f0  20 22 4c 4f 41 44 20 22  2b 66 69 24 2b 22 20 22  | "LOAD "+fi$+" "|
00017700  2b c3 7e 61 64 6a 65 63  74 73 0d 97 ea 10 61 64  |+.~adjects....ad|
00017710  6e 3d 3f 61 64 6a 65 63  74 73 0d 97 f4 2e 6e 78  |n=?adjects....nx|
00017720  74 61 64 6a 3d 61 64 6a  65 63 74 73 2b 28 61 64  |tadj=adjects+(ad|
00017730  6a 65 63 74 73 3f 31 2b  32 35 36 2a 28 61 64 6a  |jects?1+256*(adj|
00017740  65 63 74 73 3f 32 29 29  0d 97 fe 05 cd 0d 98 08  |ects?2))........|
00017750  05 e1 0d 98 12 04 0d 98  1c 16 dd 20 f2 6c 6f 61  |........... .loa|
00017760  64 5f 70 72 65 70 73 28  66 69 24 29 0d 98 26 0e  |d_preps(fi$)..&.|
00017770  e7 20 66 69 24 3d 22 22  20 8c 0d 98 30 11 f2 65  |. fi$="" ...0..e|
00017780  72 72 6f 72 28 31 36 2c  22 22 29 0d 98 3a 05 cc  |rror(16,"")..:..|
00017790  0d 98 44 1d ff 20 22 4c  4f 41 44 20 22 2b 66 69  |..D.. "LOAD "+fi|
000177a0  24 2b 22 20 22 2b c3 7e  70 72 65 70 73 0d 98 4e  |$+" "+.~preps..N|
000177b0  0e 70 72 6e 3d 3f 70 72  65 70 73 0d 98 58 28 6e  |.prn=?preps..X(n|
000177c0  78 74 70 72 70 3d 70 72  65 70 73 2b 28 70 72 65  |xtprp=preps+(pre|
000177d0  70 73 3f 31 2b 32 35 36  2a 28 70 72 65 70 73 3f  |ps?1+256*(preps?|
000177e0  32 29 29 0d 98 62 05 cd  0d 98 6c 05 e1 0d 98 76  |2))..b....l....v|
000177f0  04 0d 98 80 15 dd 20 f2  6c 6f 61 64 5f 63 6f 6e  |...... .load_con|
00017800  6a 28 66 69 24 29 0d 98  8a 0e e7 20 66 69 24 3d  |j(fi$)..... fi$=|
00017810  22 22 20 8c 0d 98 94 11  f2 65 72 72 6f 72 28 31  |"" ......error(1|
00017820  36 2c 22 22 29 0d 98 9e  05 cc 0d 98 a8 1d ff 20  |6,"").......... |
00017830  22 4c 4f 41 44 20 22 2b  66 69 24 2b 22 20 22 2b  |"LOAD "+fi$+" "+|
00017840  c3 7e 63 6f 6e 6a 73 0d  98 b2 0e 63 6a 6e 3d 3f  |.~conjs....cjn=?|
00017850  63 6f 6e 6a 73 0d 98 bc  28 6e 78 74 63 6a 6e 3d  |conjs...(nxtcjn=|
00017860  63 6f 6e 6a 73 2b 28 63  6f 6e 6a 73 3f 31 2b 32  |conjs+(conjs?1+2|
00017870  35 36 2a 28 63 6f 6e 6a  73 3f 32 29 29 0d 98 c6  |56*(conjs?2))...|
00017880  05 cd 0d 98 d0 05 e1 0d  98 da 04 0d 98 e4 15 dd  |................|
00017890  20 f2 6c 6f 61 64 5f 73  70 65 63 28 66 69 24 29  | .load_spec(fi$)|
000178a0  0d 98 ee 0e e7 20 66 69  24 3d 22 22 20 8c 0d 98  |..... fi$="" ...|
000178b0  f8 11 f2 65 72 72 6f 72  28 31 36 2c 22 22 29 0d  |...error(16,"").|
000178c0  99 02 05 cc 0d 99 0c 1d  ff 20 22 4c 4f 41 44 20  |......... "LOAD |
000178d0  22 2b 66 69 24 2b 22 20  22 2b c3 7e 73 70 65 63  |"+fi$+" "+.~spec|
000178e0  73 0d 99 16 0e 73 70 6e  3d 3f 73 70 65 63 73 0d  |s....spn=?specs.|
000178f0  99 20 28 6e 78 74 73 70  6e 3d 73 70 65 63 73 2b  |. (nxtspn=specs+|
00017900  28 73 70 65 63 73 3f 31  2b 32 35 36 2a 28 73 70  |(specs?1+256*(sp|
00017910  65 63 73 3f 32 29 29 0d  99 2a 05 cd 0d 99 34 05  |ecs?2))..*....4.|
00017920  e1 0d 99 3e 04 0d 99 48  16 dd 20 f2 6c 6f 61 64  |...>...H.. .load|
00017930  5f 6e 6f 69 73 65 28 66  69 24 29 0d 99 52 0e e7  |_noise(fi$)..R..|
00017940  20 66 69 24 3d 22 22 20  8c 0d 99 5c 11 f2 65 72  | fi$="" ...\..er|
00017950  72 6f 72 28 31 36 2c 22  22 29 0d 99 66 05 cc 0d  |ror(16,"")..f...|
00017960  99 70 1d ff 20 22 4c 4f  41 44 20 22 2b 66 69 24  |.p.. "LOAD "+fi$|
00017970  2b 22 20 22 2b c3 7e 6e  6f 69 73 65 0d 99 7a 0e  |+" "+.~noise..z.|
00017980  6e 73 6e 3d 3f 6e 6f 69  73 65 0d 99 84 28 6e 78  |nsn=?noise...(nx|
00017990  74 6e 73 6e 3d 6e 6f 69  73 65 2b 28 6e 6f 69 73  |tnsn=noise+(nois|
000179a0  65 3f 31 2b 32 35 36 2a  28 6e 6f 69 73 65 3f 32  |e?1+256*(noise?2|
000179b0  29 29 0d 99 8e 05 cd 0d  99 98 05 e1 0d 99 a2 04  |))..............|
000179c0  0d 99 ac 17 dd 20 f2 6c  6f 61 64 5f 76 74 79 70  |..... .load_vtyp|
000179d0  65 73 28 66 69 24 29 0d  99 b6 0e e7 20 66 69 24  |es(fi$)..... fi$|
000179e0  3d 22 22 20 8c 0d 99 c0  11 f2 65 72 72 6f 72 28  |="" ......error(|
000179f0  31 36 2c 22 22 29 0d 99  ca 05 cc 0d 99 d4 21 ff  |16,"")........!.|
00017a00  20 22 4c 4f 41 44 20 22  2b 66 69 24 2b 22 20 22  | "LOAD "+fi$+" "|
00017a10  2b c3 7e 76 65 72 62 5f  74 79 70 65 0d 99 de 05  |+.~verb_type....|
00017a20  cd 0d 99 e8 05 e1 0d 99  f2 04 0d 99 fc 16 dd 20  |............... |
00017a30  f2 6c 6f 61 64 5f 61 72  65 66 73 28 66 69 24 29  |.load_arefs(fi$)|
00017a40  0d 9a 06 0e e7 20 66 69  24 3d 22 22 20 8c 0d 9a  |..... fi$="" ...|
00017a50  10 11 f2 65 72 72 6f 72  28 31 36 2c 22 22 29 0d  |...error(16,"").|
00017a60  9a 1a 05 cc 0d 9a 24 1c  ff 20 22 4c 4f 41 44 20  |......$.. "LOAD |
00017a70  22 2b 66 69 24 2b 22 20  22 2b c3 7e 61 72 65 66  |"+fi$+" "+.~aref|
00017a80  0d 9a 2e 05 cd 0d 9a 38  05 e1 0d 9a 42 04 0d 9a  |.......8....B...|
00017a90  4c 16 dd 20 f2 6c 6f 61  64 5f 6e 72 65 66 73 28  |L.. .load_nrefs(|
00017aa0  66 69 24 29 0d 9a 56 0e  e7 20 66 69 24 3d 22 22  |fi$)..V.. fi$=""|
00017ab0  20 8c 0d 9a 60 11 f2 65  72 72 6f 72 28 31 36 2c  | ...`..error(16,|
00017ac0  22 22 29 0d 9a 6a 05 cc  0d 9a 74 1c ff 20 22 4c  |"")..j....t.. "L|
00017ad0  4f 41 44 20 22 2b 66 69  24 2b 22 20 22 2b c3 7e  |OAD "+fi$+" "+.~|
00017ae0  6e 72 65 66 0d 9a 7e 05  cd 0d 9a 88 05 e1 0d 9a  |nref..~.........|
00017af0  92 04 0d 9a 9c 15 dd 20  f2 6c 6f 61 64 5f 6f 62  |....... .load_ob|
00017b00  6a 73 28 66 69 24 29 0d  9a a6 0e e7 20 66 69 24  |js(fi$)..... fi$|
00017b10  3d 22 22 20 8c 0d 9a b0  11 f2 65 72 72 6f 72 28  |="" ......error(|
00017b20  31 36 2c 22 22 29 0d 9a  ba 05 cc 0d 9a c4 1e ff  |16,"")..........|
00017b30  20 22 4c 4f 41 44 20 22  2b 66 69 24 2b 22 20 22  | "LOAD "+fi$+" "|
00017b40  2b c3 7e 6f 64 61 74 61  25 0d 9a ce 12 6f 70 74  |+.~odata%....opt|
00017b50  72 3d 6f 64 61 74 61 25  3f 31 34 0d 9a d8 19 6c  |r=odata%?14....l|
00017b60  61 73 74 5f 6f 62 6a 65  63 74 3d 6f 64 61 74 61  |ast_object=odata|
00017b70  25 3f 31 35 0d 9a e2 05  cd 0d 9a ec 05 e1 0d 9a  |%?15............|
00017b80  f6 04 0d 9b 00 16 dd 20  f2 6c 6f 61 64 5f 72 6f  |....... .load_ro|
00017b90  6f 6d 73 28 66 69 24 29  0d 9b 0a 0e e7 20 66 69  |oms(fi$)..... fi|
00017ba0  24 3d 22 22 20 8c 0d 9b  14 11 f2 65 72 72 6f 72  |$="" ......error|
00017bb0  28 31 36 2c 22 22 29 0d  9b 1e 05 cc 0d 9b 28 1e  |(16,"").......(.|
00017bc0  ff 20 22 4c 4f 41 44 20  22 2b 66 69 24 2b 22 20  |. "LOAD "+fi$+" |
00017bd0  22 2b c3 7e 72 64 61 74  61 25 0d 9b 32 18 72 70  |"+.~rdata%..2.rp|
00017be0  74 72 3d 21 72 64 61 74  61 25 20 80 20 26 46 46  |tr=!rdata% . &FF|
00017bf0  46 46 0d 9b 3c 27 6c 61  73 74 5f 72 6f 6f 6d 3d  |FF..<'last_room=|
00017c00  28 21 72 64 61 74 61 25  20 80 20 26 46 46 46 46  |(!rdata% . &FFFF|
00017c10  30 30 30 30 29 3e 3e 31  36 0d 9b 46 05 cd 0d 9b  |0000)>>16..F....|
00017c20  50 05 e1 0d 9b 5a 04 0d  9b 64 16 dd 20 f2 6c 6f  |P....Z...d.. .lo|
00017c30  61 64 5f 66 6c 61 67 73  28 66 69 24 29 0d 9b 6e  |ad_flags(fi$)..n|
00017c40  0e e7 20 66 69 24 3d 22  22 20 8c 0d 9b 78 11 f2  |.. fi$="" ...x..|
00017c50  65 72 72 6f 72 28 31 36  2c 22 22 29 0d 9b 82 05  |error(16,"")....|
00017c60  cc 0d 9b 8c 0e 63 68 6e  25 3d 8e 20 66 69 24 0d  |.....chn%=. fi$.|
00017c70  9b 96 0e e3 20 66 25 3d  30 20 b8 20 37 0d 9b a0  |.... f%=0 . 7...|
00017c80  10 e8 23 63 68 6e 25 2c  66 6c 61 67 24 0d 9b aa  |..#chn%,flag$...|
00017c90  1e 24 28 6f 5f 66 6c 61  67 73 25 2b 66 25 2a 6d  |.$(o_flags%+f%*m|
00017ca0  61 78 64 25 29 3d 66 6c  61 67 24 0d 9b b4 05 ed  |axd%)=flag$.....|
00017cb0  0d 9b be 04 0d 9b c8 0e  e3 20 66 25 3d 30 20 b8  |......... f%=0 .|
00017cc0  20 37 0d 9b d2 10 e8 23  63 68 6e 25 2c 66 6c 61  | 7.....#chn%,fla|
00017cd0  67 24 0d 9b dc 1e 24 28  72 5f 66 6c 61 67 73 25  |g$....$(r_flags%|
00017ce0  2b 66 25 2a 6d 61 78 64  25 29 3d 66 6c 61 67 24  |+f%*maxd%)=flag$|
00017cf0  0d 9b e6 05 ed 0d 9b f0  0a d9 23 63 68 6e 25 0d  |..........#chn%.|
00017d00  9b fa 05 cd 0d 9c 04 05  e1 0d 9c 0e 04 0d 9c 18  |................|
00017d10  14 dd 20 f2 6c 6f 61 64  5f 70 69 78 28 66 69 24  |.. .load_pix(fi$|
00017d20  29 0d 9c 22 0e e7 20 66  69 24 3d 22 22 20 8c 0d  |)..".. fi$="" ..|
00017d30  9c 2c 11 f2 65 72 72 6f  72 28 31 36 2c 22 22 29  |.,..error(16,"")|
00017d40  0d 9c 36 05 cc 0d 9c 40  1c ff 20 22 4c 4f 41 44  |..6....@.. "LOAD|
00017d50  20 22 2b 66 69 24 2b 22  20 22 2b c3 7e 70 69 78  | "+fi$+" "+.~pix|
00017d60  73 0d 9c 4a 0d 70 78 6e  3d 3f 70 69 78 73 0d 9c  |s..J.pxn=?pixs..|
00017d70  54 25 6e 78 74 70 78 6e  3d 70 69 78 73 2b 28 70  |T%nxtpxn=pixs+(p|
00017d80  69 78 73 3f 31 2b 32 35  36 2a 28 70 69 78 73 3f  |ixs?1+256*(pixs?|
00017d90  32 29 29 0d 9c 5e 05 cd  0d 9c 68 05 e1 0d 9c 72  |2))..^....h....r|
00017da0  04 0d 9c 7c 18 dd 20 f2  6c 6f 61 64 5f 70 72 6f  |...|.. .load_pro|
00017db0  67 72 61 6d 28 66 69 24  29 0d 9c 86 0e e7 20 66  |gram(fi$)..... f|
00017dc0  69 24 3d 22 22 20 8c 0d  9c 90 11 f2 65 72 72 6f  |i$="" ......erro|
00017dd0  72 28 31 36 2c 22 22 29  0d 9c 9a 05 cc 0d 9c a4  |r(16,"")........|
00017de0  20 ff 20 22 4c 4f 41 44  20 22 2b 66 69 24 2b 22  | . "LOAD "+fi$+"|
00017df0  20 22 2b c3 7e 70 72 6f  67 72 61 6d 25 0d 9c ae  | "+.~program%...|
00017e00  05 cd 0d 9c b8 05 e1 0d  9c c2 04 0d 9c cc 15 dd  |................|
00017e10  20 f2 6c 6f 61 64 5f 74  65 78 74 28 66 69 24 29  | .load_text(fi$)|
00017e20  0d 9c d6 0e e7 20 66 69  24 3d 22 22 20 8c 0d 9c  |..... fi$="" ...|
00017e30  e0 11 f2 65 72 72 6f 72  28 31 36 2c 22 22 29 0d  |...error(16,"").|
00017e40  9c ea 05 cc 0d 9c f4 1d  ff 20 22 4c 4f 41 44 20  |......... "LOAD |
00017e50  22 2b 66 69 24 2b 22 20  22 2b c3 7e 74 65 78 74  |"+fi$+" "+.~text|
00017e60  25 0d 9c fe 0a 6d 70 74  72 3d 31 0d 9d 08 05 cd  |%....mptr=1.....|
00017e70  0d 9d 12 05 e1 0d 9d 1c  04 0d 9d 26 15 dd 20 f2  |...........&.. .|
00017e80  6c 6f 61 64 5f 64 69 63  74 28 66 69 24 29 0d 9d  |load_dict(fi$)..|
00017e90  30 0b ea 20 49 25 2c 4c  25 0d 9d 3a 0e e7 20 66  |0.. I%,L%..:.. f|
00017ea0  69 24 3d 22 22 20 8c 0d  9d 44 11 f2 65 72 72 6f  |i$="" ...D..erro|
00017eb0  72 28 31 36 2c 22 22 29  0d 9d 4e 05 cc 0d 9d 58  |r(16,"")..N....X|
00017ec0  1d ff 20 22 4c 4f 41 44  20 22 2b 66 69 24 2b 22  |.. "LOAD "+fi$+"|
00017ed0  20 22 2b c3 7e 64 69 63  74 25 0d 9d 62 15 74 6f  | "+.~dict%..b.to|
00017ee0  6b 25 3d 64 69 63 74 25  3f 32 3a 4c 25 3d 30 0d  |k%=dict%?2:L%=0.|
00017ef0  9d 6c 21 e7 20 74 6f 6b  25 3d 30 20 74 6f 6b 25  |.l!. tok%=0 tok%|
00017f00  3d 31 32 38 20 8b 20 74  6f 6b 25 2d 3d 31 32 38  |=128 . tok%-=128|
00017f10  0d 9d 76 11 e3 20 49 25  3d 31 20 b8 20 74 6f 6b  |..v.. I%=1 . tok|
00017f20  25 0d 9d 80 1a 74 6f 6b  24 28 49 25 29 3d 24 28  |%....tok$(I%)=$(|
00017f30  64 69 63 74 25 2b 33 2b  4c 25 29 0d 9d 8a 13 4c  |dict%+3+L%)....L|
00017f40  25 2b 3d a9 74 6f 6b 24  28 49 25 29 2b 31 0d 9d  |%+=.tok$(I%)+1..|
00017f50  94 05 ed 0d 9d 9e 05 cd  0d 9d a8 05 e1 0d 9d b2  |................|
00017f60  04 0d 9d bc 15 dd 20 f2  73 65 74 75 70 5f 64 69  |...... .setup_di|
00017f70  73 6b 28 53 25 29 0d 9d  c6 1d f2 67 65 74 77 28  |sk(S%).....getw(|
00017f80  73 65 74 75 70 68 29 3a  f2 67 65 74 70 6f 69 6e  |setuph):.getpoin|
00017f90  74 65 72 0d 9d d0 34 f2  6f 70 65 6e 28 73 65 74  |ter...4.open(set|
00017fa0  75 70 68 2c 6d 6f 75 73  65 78 25 2d 36 34 2c 6d  |uph,mousex%-64,m|
00017fb0  6f 75 73 65 79 25 2c 78  31 25 2d 78 30 25 2c 79  |ousey%,x1%-x0%,y|
00017fc0  31 25 2d 79 30 25 29 0d  9d da 43 f2 73 79 73 5f  |1%-y0%)...C.sys_|
00017fd0  63 6c 61 69 6d 69 6e 70  75 74 66 6f 63 75 73 28  |claiminputfocus(|
00017fe0  73 65 74 75 70 68 2c 32  2c 30 2c 30 2c 2d 31 2c  |setuph,2,0,0,-1,|
00017ff0  a9 28 a4 67 65 74 69 63  6f 6e 64 61 74 61 28 73  |.(.geticondata(s|
00018000  65 74 75 70 68 2c 32 29  29 29 0d 9d e4 11 f2 67  |etuph,2))).....g|
00018010  65 74 77 28 73 65 74 75  70 68 29 0d 9d ee 21 c8  |etw(setuph)...!.|
00018020  97 20 c8 93 20 78 30 25  2c 79 30 25 2c 78 31 25  |. .. x0%,y0%,x1%|
00018030  2d 78 30 25 2c 79 31 25  2d 79 30 25 0d 9d f8 10  |-x0%,y1%-y0%....|
00018040  64 69 61 6c 6f 67 75 65  25 3d 53 25 0d 9e 02 05  |dialogue%=S%....|
00018050  e1 0d 9e 0c 04 0d 9e 16  0f dd 20 f2 71 75 69 74  |.......... .quit|
00018060  28 53 25 29 0d 9e 20 14  e7 20 ac 20 64 61 74 61  |(S%).. .. . data|
00018070  5f 73 61 76 65 64 20 8c  0d 9e 2a 5e 61 6e 73 20  |_saved ...*^ans |
00018080  3d 20 a4 65 72 72 6f 72  62 6f 78 28 22 54 68 65  |= .errorbox("The|
00018090  72 65 20 69 73 20 75 6e  73 61 76 65 64 20 64 61  |re is unsaved da|
000180a0  74 61 20 69 6e 20 74 68  65 20 6d 65 6d 6f 72 79  |ta in the memory|
000180b0  2e 20 44 6f 20 79 6f 75  20 72 65 61 6c 6c 79 20  |. Do you really |
000180c0  77 61 6e 74 20 74 6f 20  71 75 69 74 3f 22 2c 30  |want to quit?",0|
000180d0  2c 33 2c 53 25 29 0d 9e  34 05 cc 0d 9e 3e 0b 71  |,3,S%)..4....>.q|
000180e0  75 69 74 25 3d b9 0d 9e  48 05 cd 0d 9e 52 05 e1  |uit%=...H....R..|
000180f0  0d 9e 5c 04 0d 9e 66 14  dd 20 f2 65 6e 73 75 72  |..\...f.. .ensur|
00018100  65 28 53 25 2c 54 24 29  0d 9e 70 22 64 69 61 6c  |e(S%,T$)..p"dial|
00018110  6f 67 75 65 25 3d a4 65  72 72 6f 72 62 6f 78 28  |ogue%=.errorbox(|
00018120  54 24 2c 30 2c 33 2c 53  25 29 0d 9e 7a 05 e1 0d  |T$,0,3,S%)..z...|
00018130  9e 84 04 0d 9e 8e 04 0d  9e 98 27 f4 20 2d 2d 2d  |..........'. ---|
00018140  2d 2d 2d 20 56 6f 63 61  62 75 6c 61 72 79 20 72  |--- Vocabulary r|
00018150  6f 75 74 69 6e 65 73 20  2d 2d 2d 2d 2d 2d 0d 9e  |outines ------..|
00018160  a2 04 0d 9e ac 23 dd 20  f2 67 65 74 6f 62 6e 28  |.....#. .getobn(|
00018170  74 65 78 74 24 2c f8 20  6e 75 6d 2c f8 20 66 6f  |text$,. num,. fo|
00018180  75 6e 64 24 29 0d 9e b6  2f 73 70 74 72 3d 6e 6f  |und$).../sptr=no|
00018190  75 6e 73 2b 33 3a f2 73  65 61 72 63 68 28 73 70  |uns+3:.search(sp|
000181a0  74 72 2c 74 65 78 74 24  2c 6e 75 6d 2c 66 6f 75  |tr,text$,num,fou|
000181b0  6e 64 24 29 0d 9e c0 05  e1 0d 9e ca 04 0d 9e d4  |nd$)............|
000181c0  23 dd 20 f2 67 65 74 76  62 6e 28 74 65 78 74 24  |#. .getvbn(text$|
000181d0  2c f8 20 6e 75 6d 2c f8  20 66 6f 75 6e 64 24 29  |,. num,. found$)|
000181e0  0d 9e de 2f 73 70 74 72  3d 76 65 72 62 73 2b 33  |.../sptr=verbs+3|
000181f0  3a f2 73 65 61 72 63 68  28 73 70 74 72 2c 74 65  |:.search(sptr,te|
00018200  78 74 24 2c 6e 75 6d 2c  66 6f 75 6e 64 24 29 0d  |xt$,num,found$).|
00018210  9e e8 05 e1 0d 9e f2 04  0d 9e fc 23 dd 20 f2 67  |...........#. .g|
00018220  65 74 61 64 6e 28 74 65  78 74 24 2c f8 20 6e 75  |etadn(text$,. nu|
00018230  6d 2c f8 20 66 6f 75 6e  64 24 29 0d 9f 06 31 73  |m,. found$)...1s|
00018240  70 74 72 3d 61 64 6a 65  63 74 73 2b 33 3a f2 73  |ptr=adjects+3:.s|
00018250  65 61 72 63 68 28 73 70  74 72 2c 74 65 78 74 24  |earch(sptr,text$|
00018260  2c 6e 75 6d 2c 66 6f 75  6e 64 24 29 0d 9f 10 05  |,num,found$)....|
00018270  e1 0d 9f 1a 04 0d 9f 24  23 dd 20 f2 67 65 74 70  |.......$#. .getp|
00018280  72 6e 28 74 65 78 74 24  2c f8 20 6e 75 6d 2c f8  |rn(text$,. num,.|
00018290  20 66 6f 75 6e 64 24 29  0d 9f 2e 2f 73 70 74 72  | found$).../sptr|
000182a0  3d 70 72 65 70 73 2b 33  3a f2 73 65 61 72 63 68  |=preps+3:.search|
000182b0  28 73 70 74 72 2c 74 65  78 74 24 2c 6e 75 6d 2c  |(sptr,text$,num,|
000182c0  66 6f 75 6e 64 24 29 0d  9f 38 05 e1 0d 9f 42 04  |found$)..8....B.|
000182d0  0d 9f 4c 23 dd 20 f2 67  65 74 63 6a 6e 28 74 65  |..L#. .getcjn(te|
000182e0  78 74 24 2c f8 20 6e 75  6d 2c f8 20 66 6f 75 6e  |xt$,. num,. foun|
000182f0  64 24 29 0d 9f 56 2f 73  70 74 72 3d 63 6f 6e 6a  |d$)..V/sptr=conj|
00018300  73 2b 33 3a f2 73 65 61  72 63 68 28 73 70 74 72  |s+3:.search(sptr|
00018310  2c 74 65 78 74 24 2c 6e  75 6d 2c 66 6f 75 6e 64  |,text$,num,found|
00018320  24 29 0d 9f 60 05 e1 0d  9f 6a 04 0d 9f 74 23 dd  |$)..`....j...t#.|
00018330  20 f2 67 65 74 73 70 6e  28 74 65 78 74 24 2c f8  | .getspn(text$,.|
00018340  20 6e 75 6d 2c f8 20 66  6f 75 6e 64 24 29 0d 9f  | num,. found$)..|
00018350  7e 2f 73 70 74 72 3d 73  70 65 63 73 2b 33 3a f2  |~/sptr=specs+3:.|
00018360  73 65 61 72 63 68 28 73  70 74 72 2c 74 65 78 74  |search(sptr,text|
00018370  24 2c 6e 75 6d 2c 66 6f  75 6e 64 24 29 0d 9f 88  |$,num,found$)...|
00018380  05 e1 0d 9f 92 04 0d 9f  9c 23 dd 20 f2 67 65 74  |.........#. .get|
00018390  6e 73 6e 28 74 65 78 74  24 2c f8 20 6e 75 6d 2c  |nsn(text$,. num,|
000183a0  f8 20 66 6f 75 6e 64 24  29 0d 9f a6 2f 73 70 74  |. found$).../spt|
000183b0  72 3d 6e 6f 69 73 65 2b  33 3a f2 73 65 61 72 63  |r=noise+3:.searc|
000183c0  68 28 73 70 74 72 2c 74  65 78 74 24 2c 6e 75 6d  |h(sptr,text$,num|
000183d0  2c 66 6f 75 6e 64 24 29  0d 9f b0 05 e1 0d 9f ba  |,found$)........|
000183e0  04 0d 9f c4 2c dd 20 f2  73 65 61 72 63 68 28 73  |....,. .search(s|
000183f0  70 74 72 2c 73 65 61 72  63 68 24 2c f8 20 6e 75  |ptr,search$,. nu|
00018400  6d 62 65 72 2c f8 20 74  65 6d 70 24 29 0d 9f ce  |mber,. temp$)...|
00018410  11 ea 20 74 65 6d 70 24  2c 66 6f 75 6e 64 0d 9f  |.. temp$,found..|
00018420  d8 0c 6e 75 6d 62 65 72  3d 30 0d 9f e2 48 46 25  |..number=0...HF%|
00018430  3d 77 6f 72 6b 25 3a 42  25 3d 73 70 74 72 3a 24  |=work%:B%=sptr:$|
00018440  28 77 6f 72 6b 25 2b 26  31 32 38 29 3d 73 65 61  |(work%+&128)=sea|
00018450  72 63 68 24 3a f4 20 70  75 74 20 73 65 61 72 63  |rch$:. put searc|
00018460  68 20 73 74 72 69 6e 67  20 69 6e 20 27 74 65 78  |h string in 'tex|
00018470  74 27 0d 9f ec 0c d6 20  73 65 61 72 63 68 0d 9f  |t'..... search..|
00018480  f6 18 6e 75 6d 62 65 72  3d 21 28 77 6f 72 6b 25  |..number=!(work%|
00018490  2b 26 31 34 38 29 0d a0  00 05 e1 0d a0 0a 04 0d  |+&148)..........|
000184a0  a0 14 17 dd 20 f2 77 6f  72 64 28 74 79 70 65 2c  |.... .word(type,|
000184b0  6c 69 6e 65 24 29 0d a0  1e 31 f4 20 41 64 64 20  |line$)...1. Add |
000184c0  77 6f 72 64 73 20 74 6f  20 74 68 65 20 76 6f 63  |words to the voc|
000184d0  61 62 75 6c 61 72 79 20  6f 72 20 70 69 63 74 75  |abulary or pictu|
000184e0  72 65 20 6c 69 73 74 0d  a0 28 3b f4 20 77 6f 72  |re list..(;. wor|
000184f0  64 20 74 79 70 65 73 20  61 72 65 20 2d 20 6e 6f  |d types are - no|
00018500  75 6e 73 20 3d 20 31 2c  20 76 65 72 62 73 20 3d  |uns = 1, verbs =|
00018510  20 32 2c 20 61 64 6a 65  63 74 69 76 65 73 20 3d  | 2, adjectives =|
00018520  20 33 0d a0 32 47 f4 20  20 20 20 20 20 20 20 20  | 3..2G.         |
00018530  20 20 20 20 20 20 20 20  20 70 72 65 70 6f 73 69  |         preposi|
00018540  74 69 6f 6e 73 20 3d 20  34 2c 20 63 6f 6e 6a 75  |tions = 4, conju|
00018550  6e 63 74 69 6f 6e 73 20  3d 20 35 2c 20 73 70 65  |nctions = 5, spe|
00018560  63 69 61 6c 73 20 3d 20  36 0d a0 3c 29 f4 20 20  |cials = 6..<).  |
00018570  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00018580  70 69 63 74 75 72 65 20  6e 61 6d 65 73 20 3d 20  |picture names = |
00018590  31 30 0d a0 46 21 ea 20  69 6e 64 65 78 2c 70 74  |10..F!. index,pt|
000185a0  72 2c 49 25 2c 6c 65 6e  2c 6c 65 6e 32 2c 74 65  |r,I%,len,len2,te|
000185b0  6d 70 24 0d a0 50 04 0d  a0 5a 12 e7 20 6c 69 6e  |mp$..P...Z.. lin|
000185c0  65 24 3d 22 22 20 8c 20  e1 0d a0 64 04 0d a0 6e  |e$="" . ...d...n|
000185d0  23 c8 95 20 a7 22 30 31  32 33 34 35 36 37 38 39  |#.. ."0123456789|
000185e0  3d 22 2c c0 6c 69 6e 65  24 2c 31 29 29 3c 3e 30  |=",.line$,1))<>0|
000185f0  0d a0 78 13 6c 69 6e 65  24 3d c1 6c 69 6e 65 24  |..x.line$=.line$|
00018600  2c 32 29 0d a0 82 05 ce  0d a0 8c 04 0d a0 96 14  |,2).............|
00018610  c8 95 20 c0 6c 69 6e 65  24 2c 31 29 3d 22 20 22  |.. .line$,1)=" "|
00018620  0d a0 a0 13 6c 69 6e 65  24 3d c1 6c 69 6e 65 24  |....line$=.line$|
00018630  2c 32 29 0d a0 aa 05 ce  0d a0 b4 04 0d a0 be 18  |,2).............|
00018640  e7 20 74 79 70 65 3c 34  20 84 20 74 79 70 65 3d  |. type<4 . type=|
00018650  31 30 20 8c 0d a0 c8 37  65 6e 64 3d a7 6c 69 6e  |10 ....7end=.lin|
00018660  65 24 2c 22 3c 22 29 3a  e7 20 65 6e 64 3d 30 20  |e$,"<"):. end=0 |
00018670  8c 20 f2 65 72 72 6f 72  28 32 32 2c 22 22 29 3a  |. .error(22,""):|
00018680  65 72 72 66 6c 61 67 3d  b9 3a e1 0d a0 d2 2d 6e  |errflag=.:....-n|
00018690  75 6d 62 65 72 24 3d c1  6c 69 6e 65 24 2c 65 6e  |umber$=.line$,en|
000186a0  64 2b 31 29 3a 6c 69 6e  65 24 3d c0 6c 69 6e 65  |d+1):line$=.line|
000186b0  24 2c 65 6e 64 2d 31 29  0d a0 dc 34 e7 20 c2 6e  |$,end-1)...4. .n|
000186c0  75 6d 62 65 72 24 2c 31  29 3d 22 3e 22 20 8c 20  |umber$,1)=">" . |
000186d0  6e 75 6d 62 65 72 24 3d  c0 6e 75 6d 62 65 72 24  |number$=.number$|
000186e0  2c a9 6e 75 6d 62 65 72  24 2d 31 29 0d a0 e6 05  |,.number$-1)....|
000186f0  cc 0d a0 f0 0e 6e 75 6d  62 65 72 24 3d 22 22 0d  |.....number$="".|
00018700  a0 fa 05 cd 0d a1 04 04  0d a1 0e 12 e7 20 6e 75  |............. nu|
00018710  6d 62 65 72 24 3d 22 22  20 8c 0d a1 18 0d c8 8e  |mber$="" .......|
00018720  20 74 79 70 65 20 ca 0d  a1 22 09 c9 20 31 2c 33  | type ...".. 1,3|
00018730  0d a1 2c 12 6e 75 6d 62  65 72 24 3d c3 28 6f 62  |..,.number$=.(ob|
00018740  6e 29 0d a1 36 07 c9 20  32 0d a1 40 2b 6e 75 6d  |n)..6.. 2..@+num|
00018750  62 65 72 24 3d 22 30 22  3a f4 20 44 65 66 61 75  |ber$="0":. Defau|
00018760  6c 74 20 76 65 72 62 20  74 79 70 65 20 69 73 20  |lt verb type is |
00018770  7a 65 72 6f 0d a1 4a 05  7f 0d a1 54 0e 6e 75 6d  |zero..J....T.num|
00018780  62 65 72 24 3d 22 22 0d  a1 5e 05 cb 0d a1 68 05  |ber$=""..^....h.|
00018790  cd 0d a1 72 04 0d a1 7c  0b 69 6e 64 65 78 3d 30  |...r...|.index=0|
000187a0  0d a1 86 13 70 74 72 3d  a7 6c 69 6e 65 24 2c 22  |....ptr=.line$,"|
000187b0  2c 22 29 0d a1 90 0d e7  20 70 74 72 3d 30 20 8c  |,")..... ptr=0 .|
000187c0  0d a1 9a 21 61 5f 6c 69  73 74 24 28 69 6e 64 65  |...!a_list$(inde|
000187d0  78 29 3d c0 6c 69 6e 65  24 2c 6d 61 78 6c 65 6e  |x)=.line$,maxlen|
000187e0  29 0d a1 a4 05 cc 0d a1  ae 18 c8 95 20 70 74 72  |)........... ptr|
000187f0  3c 3e 30 20 80 20 69 6e  64 65 78 3c 31 31 0d a1  |<>0 . index<11..|
00018800  b8 17 74 65 6d 70 24 3d  c0 6c 69 6e 65 24 2c 70  |..temp$=.line$,p|
00018810  74 72 2d 31 29 0d a1 c2  10 6c 65 6e 3d a9 28 6c  |tr-1)....len=.(l|
00018820  69 6e 65 24 29 0d a1 cc  19 6c 69 6e 65 24 3d c2  |ine$)....line$=.|
00018830  6c 69 6e 65 24 2c 6c 65  6e 2d 70 74 72 29 0d a1  |line$,len-ptr)..|
00018840  d6 21 61 5f 6c 69 73 74  24 28 69 6e 64 65 78 29  |.!a_list$(index)|
00018850  3d c0 74 65 6d 70 24 2c  6d 61 78 6c 65 6e 29 0d  |=.temp$,maxlen).|
00018860  a1 e0 0c 69 6e 64 65 78  2b 3d 31 0d a1 ea 13 70  |...index+=1....p|
00018870  74 72 3d a7 6c 69 6e 65  24 2c 22 2c 22 29 0d a1  |tr=.line$,",")..|
00018880  f4 05 ce 0d a1 fe 21 61  5f 6c 69 73 74 24 28 69  |......!a_list$(i|
00018890  6e 64 65 78 29 3d c0 6c  69 6e 65 24 2c 6d 61 78  |ndex)=.line$,max|
000188a0  6c 65 6e 29 0d a2 08 05  cd 0d a2 12 04 0d a2 1c  |len)............|
000188b0  0d c8 8e 20 74 79 70 65  20 ca 0d a2 26 04 0d a2  |... type ...&...|
000188c0  30 07 c9 20 31 0d a2 3a  12 e7 20 6f 62 6e 3d 6d  |0.. 1..:.. obn=m|
000188d0  61 78 6f 62 6e 20 8c 0d  a2 44 29 f2 65 72 72 6f  |axobn ...D).erro|
000188e0  72 28 31 37 2c 22 61 74  20 22 2b 61 5f 6c 69 73  |r(17,"at "+a_lis|
000188f0  74 24 28 30 29 29 3a 65  72 72 66 6c 61 67 3d b9  |t$(0)):errflag=.|
00018900  0d a2 4e 05 cc 0d a2 58  12 e3 20 49 25 3d 30 20  |..N....X.. I%=0 |
00018910  b8 20 69 6e 64 65 78 0d  a2 62 18 20 20 6c 65 6e  |. index..b.  len|
00018920  32 3d a9 20 61 5f 6c 69  73 74 24 28 49 25 29 0d  |2=. a_list$(I%).|
00018930  a2 6c 10 20 20 e7 20 6c  65 6e 32 3e 30 20 8c 0d  |.l.  . len2>0 ..|
00018940  a2 76 23 20 20 f2 67 65  74 6f 62 6e 28 61 5f 6c  |.v#  .getobn(a_l|
00018950  69 73 74 24 28 49 25 29  2c 6e 75 6d 2c 66 6e 64  |ist$(I%),num,fnd|
00018960  24 29 0d a2 80 2e 20 20  e7 20 6e 75 6d 3c 3e 30  |$)....  . num<>0|
00018970  20 f2 65 72 72 6f 72 28  35 2c 61 5f 6c 69 73 74  | .error(5,a_list|
00018980  24 28 49 25 29 29 3a 65  72 72 66 6c 61 67 3d b9  |$(I%)):errflag=.|
00018990  0d a2 8a 3e 20 20 e7 20  6e 78 74 6f 62 6a 2b 6c  |...>  . nxtobj+l|
000189a0  65 6e 32 3e 6e 6f 75 6e  5f 65 6e 64 2d 32 20 f2  |en2>noun_end-2 .|
000189b0  65 72 72 6f 72 28 31 33  2c 65 72 72 6f 72 24 28  |error(13,error$(|
000189c0  33 38 29 29 3a 65 72 72  66 6c 61 67 3d b9 0d a2  |38)):errflag=...|
000189d0  94 13 20 20 e7 20 ac 20  65 72 72 66 6c 61 67 20  |..  . . errflag |
000189e0  8c 0d a2 9e 43 20 20 20  20 24 6e 78 74 6f 62 6a  |....C    $nxtobj|
000189f0  3d 61 5f 6c 69 73 74 24  28 49 25 29 3a 3f 28 6e  |=a_list$(I%):?(n|
00018a00  78 74 6f 62 6a 2b 6c 65  6e 32 2d 31 29 3d 3f 28  |xtobj+len2-1)=?(|
00018a10  6e 78 74 6f 62 6a 2b 6c  65 6e 32 2d 31 29 20 84  |nxtobj+len2-1) .|
00018a20  20 31 32 38 0d a2 a8 36  20 20 20 20 6e 78 74 6f  | 128...6    nxto|
00018a30  62 6a 2b 3d 6c 65 6e 32  3a 3f 6e 78 74 6f 62 6a  |bj+=len2:?nxtobj|
00018a40  3d 6f 62 6e 3a 6e 78 74  6f 62 6a 2b 3d 31 3a 3f  |=obn:nxtobj+=1:?|
00018a50  6e 78 74 6f 62 6a 3d 26  46 46 0d a2 b2 07 20 20  |nxtobj=&FF....  |
00018a60  cd 0d a2 bc 07 20 20 cd  0d a2 c6 08 ed 20 49 25  |.....  ...... I%|
00018a70  0d a2 d0 13 20 20 e7 20  ac 20 65 72 72 66 6c 61  |....  . . errfla|
00018a80  67 20 8c 0d a2 da 0e 20  20 20 20 6f 62 6e 2b 3d  |g .....    obn+=|
00018a90  31 0d a2 e4 4c 20 20 20  20 3f 6e 6f 75 6e 73 3d  |1...L    ?nouns=|
00018aa0  6f 62 6e 3a 6e 6f 75 6e  73 3f 31 3d 28 6e 78 74  |obn:nouns?1=(nxt|
00018ab0  6f 62 6a 2d 6e 6f 75 6e  73 29 20 83 20 32 35 36  |obj-nouns) . 256|
00018ac0  3a 6e 6f 75 6e 73 3f 32  3d 28 6e 78 74 6f 62 6a  |:nouns?2=(nxtobj|
00018ad0  2d 6e 6f 75 6e 73 29 20  81 20 32 35 36 0d a2 ee  |-nouns) . 256...|
00018ae0  3e 20 20 20 20 70 74 72  3d 31 3a 6d 65 6d 70 74  |>    ptr=1:mempt|
00018af0  72 3d 6e 72 65 66 2b 21  6e 72 65 66 3a 73 76 6d  |r=nref+!nref:svm|
00018b00  70 74 72 3d 6d 65 6d 70  74 72 3a 72 65 66 73 3d  |ptr=memptr:refs=|
00018b10  30 3a 6d 65 6d 70 74 72  2b 3d 31 0d a2 f8 09 20  |0:memptr+=1.... |
00018b20  20 20 20 f5 0d a3 02 30  20 20 20 20 f2 64 65 63  |   ....0    .dec|
00018b30  6f 64 65 5f 70 61 72 61  6d 65 74 65 72 28 6e 75  |ode_parameter(nu|
00018b40  6d 62 65 72 24 2c 70 74  72 2c 70 74 72 2c 76 61  |mber$,ptr,ptr,va|
00018b50  6c 2c 30 29 0d a3 0c 33  20 20 20 20 e7 20 ac 20  |l,0)...3    . . |
00018b60  65 72 72 66 6c 61 67 20  8c 20 3f 6d 65 6d 70 74  |errflag . ?mempt|
00018b70  72 3d 76 61 6c 3a 6d 65  6d 70 74 72 2b 3d 31 3a  |r=val:memptr+=1:|
00018b80  72 65 66 73 2b 3d 31 0d  a3 16 20 20 20 20 20 fd  |refs+=1...     .|
00018b90  20 70 74 72 3e a9 6e 75  6d 62 65 72 24 20 84 20  | ptr>.number$ . |
00018ba0  65 72 72 66 6c 61 67 0d  a3 20 24 20 20 20 20 3f  |errflag.. $    ?|
00018bb0  6d 65 6d 70 74 72 3d 30  3a 21 6e 72 65 66 3d 21  |memptr=0:!nref=!|
00018bc0  6e 72 65 66 2b 72 65 66  73 2b 31 0d a3 2a 14 20  |nref+refs+1..*. |
00018bd0  20 20 20 3f 73 76 6d 70  74 72 3d 72 65 66 73 0d  |   ?svmptr=refs.|
00018be0  a3 34 07 20 20 cd 0d a3  3e 05 cd 0d a3 48 07 c9  |.4.  ...>....H..|
00018bf0  20 32 0d a3 52 12 e7 20  76 62 6e 3d 6d 61 78 76  | 2..R.. vbn=maxv|
00018c00  62 6e 20 8c 0d a3 5c 29  f2 65 72 72 6f 72 28 31  |bn ...\).error(1|
00018c10  38 2c 22 61 74 20 22 2b  61 5f 6c 69 73 74 24 28  |8,"at "+a_list$(|
00018c20  30 29 29 3a 65 72 72 66  6c 61 67 3d b9 0d a3 66  |0)):errflag=...f|
00018c30  05 cc 0d a3 70 12 e3 20  49 25 3d 30 20 b8 20 69  |....p.. I%=0 . i|
00018c40  6e 64 65 78 0d a3 7a 18  20 20 6c 65 6e 32 3d a9  |ndex..z.  len2=.|
00018c50  20 61 5f 6c 69 73 74 24  28 49 25 29 0d a3 84 10  | a_list$(I%)....|
00018c60  20 20 e7 20 6c 65 6e 32  3e 30 20 8c 0d a3 8e 23  |  . len2>0 ....#|
00018c70  20 20 f2 67 65 74 76 62  6e 28 61 5f 6c 69 73 74  |  .getvbn(a_list|
00018c80  24 28 49 25 29 2c 6e 75  6d 2c 66 6e 64 24 29 0d  |$(I%),num,fnd$).|
00018c90  a3 98 2e 20 20 e7 20 6e  75 6d 3c 3e 30 20 f2 65  |...  . num<>0 .e|
00018ca0  72 72 6f 72 28 38 2c 61  5f 6c 69 73 74 24 28 49  |rror(8,a_list$(I|
00018cb0  25 29 29 3a 65 72 72 66  6c 61 67 3d b9 0d a3 a2  |%)):errflag=....|
00018cc0  3e 20 20 e7 20 6e 78 74  76 72 62 2b 6c 65 6e 32  |>  . nxtvrb+len2|
00018cd0  3e 76 65 72 62 5f 65 6e  64 2d 32 20 f2 65 72 72  |>verb_end-2 .err|
00018ce0  6f 72 28 31 33 2c 65 72  72 6f 72 24 28 33 39 29  |or(13,error$(39)|
00018cf0  29 3a 65 72 72 66 6c 61  67 3d b9 0d a3 ac 13 20  |):errflag=..... |
00018d00  20 e7 20 ac 20 65 72 72  66 6c 61 67 20 8c 0d a3  | . . errflag ...|
00018d10  b6 43 20 20 20 20 24 6e  78 74 76 72 62 3d 61 5f  |.C    $nxtvrb=a_|
00018d20  6c 69 73 74 24 28 49 25  29 3a 3f 28 6e 78 74 76  |list$(I%):?(nxtv|
00018d30  72 62 2b 6c 65 6e 32 2d  31 29 3d 3f 28 6e 78 74  |rb+len2-1)=?(nxt|
00018d40  76 72 62 2b 6c 65 6e 32  2d 31 29 20 84 20 31 32  |vrb+len2-1) . 12|
00018d50  38 0d a3 c0 36 20 20 20  20 6e 78 74 76 72 62 2b  |8...6    nxtvrb+|
00018d60  3d 6c 65 6e 32 3a 3f 6e  78 74 76 72 62 3d 76 62  |=len2:?nxtvrb=vb|
00018d70  6e 3a 6e 78 74 76 72 62  2b 3d 31 3a 3f 6e 78 74  |n:nxtvrb+=1:?nxt|
00018d80  76 72 62 3d 26 46 46 0d  a3 ca 07 20 20 cd 0d a3  |vrb=&FF....  ...|
00018d90  d4 07 20 20 cd 0d a3 de  08 ed 20 49 25 0d a3 e8  |..  ...... I%...|
00018da0  11 e7 20 ac 20 65 72 72  66 6c 61 67 20 8c 0d a3  |.. . errflag ...|
00018db0  f2 09 70 74 72 3d 31 0d  a3 fc 2c f2 64 65 63 6f  |..ptr=1...,.deco|
00018dc0  64 65 5f 70 61 72 61 6d  65 74 65 72 28 6e 75 6d  |de_parameter(num|
00018dd0  62 65 72 24 2c 70 74 72  2c 70 74 72 2c 76 61 6c  |ber$,ptr,ptr,val|
00018de0  2c 30 29 0d a4 06 11 e7  20 ac 20 65 72 72 66 6c  |,0)..... . errfl|
00018df0  61 67 20 8c 0d a4 10 19  76 65 72 62 5f 74 79 70  |ag .....verb_typ|
00018e00  65 3f 28 32 2a 76 62 6e  29 3d 76 61 6c 0d a4 1a  |e?(2*vbn)=val...|
00018e10  23 6f 6c 6f 63 24 3d c1  6e 75 6d 62 65 72 24 2c  |#oloc$=.number$,|
00018e20  70 74 72 2b 31 29 3a 6f  6c 6f 63 66 6c 67 3d 30  |ptr+1):olocflg=0|
00018e30  0d a4 24 20 e7 20 a7 6f  6c 6f 63 24 2c 22 43 22  |..$ . .oloc$,"C"|
00018e40  29 3c 3e 30 20 8c 20 6f  6c 6f 63 66 6c 67 3d 31  |)<>0 . olocflg=1|
00018e50  0d a4 2e 2a e7 20 a7 6f  6c 6f 63 24 2c 22 50 22  |...*. .oloc$,"P"|
00018e60  29 3c 3e 30 20 8c 20 6f  6c 6f 63 66 6c 67 3d 6f  |)<>0 . olocflg=o|
00018e70  6c 6f 63 66 6c 67 20 84  20 32 0d a4 38 1f 76 65  |locflg . 2..8.ve|
00018e80  72 62 5f 74 79 70 65 3f  28 32 2a 76 62 6e 2b 31  |rb_type?(2*vbn+1|
00018e90  29 3d 6f 6c 6f 63 66 6c  67 0d a4 42 0a 76 62 6e  |)=olocflg..B.vbn|
00018ea0  2b 3d 31 0d a4 4c 48 3f  76 65 72 62 73 3d 76 62  |+=1..LH?verbs=vb|
00018eb0  6e 3a 76 65 72 62 73 3f  31 3d 28 6e 78 74 76 72  |n:verbs?1=(nxtvr|
00018ec0  62 2d 76 65 72 62 73 29  20 83 20 32 35 36 3a 76  |b-verbs) . 256:v|
00018ed0  65 72 62 73 3f 32 3d 28  6e 78 74 76 72 62 2d 76  |erbs?2=(nxtvrb-v|
00018ee0  65 72 62 73 29 20 81 20  32 35 36 0d a4 56 05 cd  |erbs) . 256..V..|
00018ef0  0d a4 60 05 cd 0d a4 6a  05 cd 0d a4 74 07 c9 20  |..`....j....t.. |
00018f00  33 0d a4 7e 12 e7 20 61  64 6e 3d 6d 61 78 61 64  |3..~.. adn=maxad|
00018f10  6a 20 8c 0d a4 88 29 f2  65 72 72 6f 72 28 31 39  |j ....).error(19|
00018f20  2c 22 61 74 20 22 2b 61  5f 6c 69 73 74 24 28 30  |,"at "+a_list$(0|
00018f30  29 29 3a 65 72 72 66 6c  61 67 3d b9 0d a4 92 05  |)):errflag=.....|
00018f40  cc 0d a4 9c 12 e3 20 49  25 3d 30 20 b8 20 69 6e  |...... I%=0 . in|
00018f50  64 65 78 0d a4 a6 18 20  20 6c 65 6e 32 3d a9 20  |dex....  len2=. |
00018f60  61 5f 6c 69 73 74 24 28  49 25 29 0d a4 b0 10 20  |a_list$(I%).... |
00018f70  20 e7 20 6c 65 6e 32 3e  30 20 8c 0d a4 ba 23 20  | . len2>0 ....# |
00018f80  20 f2 67 65 74 61 64 6e  28 61 5f 6c 69 73 74 24  | .getadn(a_list$|
00018f90  28 49 25 29 2c 6e 75 6d  2c 66 6e 64 24 29 0d a4  |(I%),num,fnd$)..|
00018fa0  c4 2e 20 20 e7 20 6e 75  6d 3c 3e 30 20 f2 65 72  |..  . num<>0 .er|
00018fb0  72 6f 72 28 38 2c 61 5f  6c 69 73 74 24 28 49 25  |ror(8,a_list$(I%|
00018fc0  29 29 3a 65 72 72 66 6c  61 67 3d b9 0d a4 ce 3e  |)):errflag=....>|
00018fd0  20 20 e7 20 6e 78 74 61  64 6a 2b 6c 65 6e 32 3e  |  . nxtadj+len2>|
00018fe0  61 64 6a 63 5f 65 6e 64  2d 32 20 f2 65 72 72 6f  |adjc_end-2 .erro|
00018ff0  72 28 31 33 2c 65 72 72  6f 72 24 28 34 30 29 29  |r(13,error$(40))|
00019000  3a 65 72 72 66 6c 61 67  3d b9 0d a4 d8 13 20 20  |:errflag=.....  |
00019010  e7 20 ac 20 65 72 72 66  6c 61 67 20 8c 0d a4 e2  |. . errflag ....|
00019020  43 20 20 20 20 24 6e 78  74 61 64 6a 3d 61 5f 6c  |C    $nxtadj=a_l|
00019030  69 73 74 24 28 49 25 29  3a 3f 28 6e 78 74 61 64  |ist$(I%):?(nxtad|
00019040  6a 2b 6c 65 6e 32 2d 31  29 3d 3f 28 6e 78 74 61  |j+len2-1)=?(nxta|
00019050  64 6a 2b 6c 65 6e 32 2d  31 29 20 84 20 31 32 38  |dj+len2-1) . 128|
00019060  0d a4 ec 36 20 20 20 20  6e 78 74 61 64 6a 2b 3d  |...6    nxtadj+=|
00019070  6c 65 6e 32 3a 3f 6e 78  74 61 64 6a 3d 61 64 6e  |len2:?nxtadj=adn|
00019080  3a 6e 78 74 61 64 6a 2b  3d 31 3a 3f 6e 78 74 61  |:nxtadj+=1:?nxta|
00019090  64 6a 3d 26 46 46 0d a4  f6 07 20 20 cd 0d a5 00  |dj=&FF....  ....|
000190a0  07 20 20 cd 0d a5 0a 08  ed 20 49 25 0d a5 14 13  |.  ...... I%....|
000190b0  20 20 e7 20 ac 20 65 72  72 66 6c 61 67 20 8c 0d  |  . . errflag ..|
000190c0  a5 1e 0a 61 64 6e 2b 3d  31 0d a5 28 52 3f 61 64  |...adn+=1..(R?ad|
000190d0  6a 65 63 74 73 3d 61 64  6e 3a 61 64 6a 65 63 74  |jects=adn:adject|
000190e0  73 3f 31 3d 28 6e 78 74  61 64 6a 2d 61 64 6a 65  |s?1=(nxtadj-adje|
000190f0  63 74 73 29 20 83 20 32  35 36 3a 61 64 6a 65 63  |cts) . 256:adjec|
00019100  74 73 3f 32 3d 28 6e 78  74 61 64 6a 2d 61 64 6a  |ts?2=(nxtadj-adj|
00019110  65 63 74 73 29 20 81 20  32 35 36 0d a5 32 3e 20  |ects) . 256..2> |
00019120  20 20 20 70 74 72 3d 31  3a 6d 65 6d 70 74 72 3d  |   ptr=1:memptr=|
00019130  61 72 65 66 2b 21 61 72  65 66 3a 73 76 6d 70 74  |aref+!aref:svmpt|
00019140  72 3d 6d 65 6d 70 74 72  3a 72 65 66 73 3d 30 3a  |r=memptr:refs=0:|
00019150  6d 65 6d 70 74 72 2b 3d  31 0d a5 3c 09 20 20 20  |memptr+=1..<.   |
00019160  20 f5 0d a5 46 30 20 20  20 20 f2 64 65 63 6f 64  | ...F0    .decod|
00019170  65 5f 70 61 72 61 6d 65  74 65 72 28 6e 75 6d 62  |e_parameter(numb|
00019180  65 72 24 2c 70 74 72 2c  70 74 72 2c 76 61 6c 2c  |er$,ptr,ptr,val,|
00019190  30 29 0d a5 50 33 20 20  20 20 e7 20 ac 20 65 72  |0)..P3    . . er|
000191a0  72 66 6c 61 67 20 8c 20  3f 6d 65 6d 70 74 72 3d  |rflag . ?memptr=|
000191b0  76 61 6c 3a 6d 65 6d 70  74 72 2b 3d 31 3a 72 65  |val:memptr+=1:re|
000191c0  66 73 2b 3d 31 0d a5 5a  20 20 20 20 20 fd 20 70  |fs+=1..Z     . p|
000191d0  74 72 3e a9 6e 75 6d 62  65 72 24 20 84 20 65 72  |tr>.number$ . er|
000191e0  72 66 6c 61 67 0d a5 64  24 20 20 20 20 3f 6d 65  |rflag..d$    ?me|
000191f0  6d 70 74 72 3d 30 3a 21  61 72 65 66 3d 21 61 72  |mptr=0:!aref=!ar|
00019200  65 66 2b 72 65 66 73 2b  31 0d a5 6e 14 20 20 20  |ef+refs+1..n.   |
00019210  20 3f 73 76 6d 70 74 72  3d 72 65 66 73 0d a5 78  | ?svmptr=refs..x|
00019220  07 20 20 cd 0d a5 82 05  cd 0d a5 8c 07 c9 20 34  |.  ........... 4|
00019230  0d a5 96 13 e7 20 70 72  6e 3d 6d 61 78 70 72 65  |..... prn=maxpre|
00019240  70 20 8c 0d a5 a0 29 f2  65 72 72 6f 72 28 32 30  |p ....).error(20|
00019250  2c 22 61 74 20 22 2b 61  5f 6c 69 73 74 24 28 30  |,"at "+a_list$(0|
00019260  29 29 3a 65 72 72 66 6c  61 67 3d b9 0d a5 aa 05  |)):errflag=.....|
00019270  cc 0d a5 b4 12 e3 20 49  25 3d 30 20 b8 20 69 6e  |...... I%=0 . in|
00019280  64 65 78 0d a5 be 18 20  20 6c 65 6e 32 3d a9 20  |dex....  len2=. |
00019290  61 5f 6c 69 73 74 24 28  49 25 29 0d a5 c8 10 20  |a_list$(I%).... |
000192a0  20 e7 20 6c 65 6e 32 3e  30 20 8c 0d a5 d2 23 20  | . len2>0 ....# |
000192b0  20 f2 67 65 74 70 72 6e  28 61 5f 6c 69 73 74 24  | .getprn(a_list$|
000192c0  28 49 25 29 2c 6e 75 6d  2c 66 6e 64 24 29 0d a5  |(I%),num,fnd$)..|
000192d0  dc 2e 20 20 e7 20 6e 75  6d 3c 3e 30 20 f2 65 72  |..  . num<>0 .er|
000192e0  72 6f 72 28 38 2c 61 5f  6c 69 73 74 24 28 49 25  |ror(8,a_list$(I%|
000192f0  29 29 3a 65 72 72 66 6c  61 67 3d b9 0d a5 e6 3e  |)):errflag=....>|
00019300  20 20 e7 20 6e 78 74 70  72 70 2b 6c 65 6e 32 3e  |  . nxtprp+len2>|
00019310  70 72 65 70 5f 65 6e 64  2d 32 20 f2 65 72 72 6f  |prep_end-2 .erro|
00019320  72 28 31 33 2c 65 72 72  6f 72 24 28 34 31 29 29  |r(13,error$(41))|
00019330  3a 65 72 72 66 6c 61 67  3d b9 0d a5 f0 13 20 20  |:errflag=.....  |
00019340  e7 20 ac 20 65 72 72 66  6c 61 67 20 8c 0d a5 fa  |. . errflag ....|
00019350  43 20 20 20 20 24 6e 78  74 70 72 70 3d 61 5f 6c  |C    $nxtprp=a_l|
00019360  69 73 74 24 28 49 25 29  3a 3f 28 6e 78 74 70 72  |ist$(I%):?(nxtpr|
00019370  70 2b 6c 65 6e 32 2d 31  29 3d 3f 28 6e 78 74 70  |p+len2-1)=?(nxtp|
00019380  72 70 2b 6c 65 6e 32 2d  31 29 20 84 20 31 32 38  |rp+len2-1) . 128|
00019390  0d a6 04 36 20 20 20 20  6e 78 74 70 72 70 2b 3d  |...6    nxtprp+=|
000193a0  6c 65 6e 32 3a 3f 6e 78  74 70 72 70 3d 70 72 6e  |len2:?nxtprp=prn|
000193b0  3a 6e 78 74 70 72 70 2b  3d 31 3a 3f 6e 78 74 70  |:nxtprp+=1:?nxtp|
000193c0  72 70 3d 26 46 46 0d a6  0e 07 20 20 cd 0d a6 18  |rp=&FF....  ....|
000193d0  07 20 20 cd 0d a6 22 08  ed 20 49 25 0d a6 2c 13  |.  ...".. I%..,.|
000193e0  20 20 e7 20 ac 20 65 72  72 66 6c 61 67 20 8c 0d  |  . . errflag ..|
000193f0  a6 36 0e 20 20 20 20 70  72 6e 2b 3d 31 0d a6 40  |.6.    prn+=1..@|
00019400  4c 20 20 20 20 3f 70 72  65 70 73 3d 70 72 6e 3a  |L    ?preps=prn:|
00019410  70 72 65 70 73 3f 31 3d  28 6e 78 74 70 72 70 2d  |preps?1=(nxtprp-|
00019420  70 72 65 70 73 29 20 83  20 32 35 36 3a 70 72 65  |preps) . 256:pre|
00019430  70 73 3f 32 3d 28 6e 78  74 70 72 70 2d 70 72 65  |ps?2=(nxtprp-pre|
00019440  70 73 29 20 81 20 32 35  36 0d a6 4a 07 20 20 cd  |ps) . 256..J.  .|
00019450  0d a6 54 05 cd 0d a6 5e  07 c9 20 35 0d a6 68 13  |..T....^.. 5..h.|
00019460  e7 20 63 6a 6e 3d 6d 61  78 63 6f 6e 6a 20 8c 0d  |. cjn=maxconj ..|
00019470  a6 72 29 f2 65 72 72 6f  72 28 32 31 2c 22 61 74  |.r).error(21,"at|
00019480  20 22 2b 61 5f 6c 69 73  74 24 28 30 29 29 3a 65  | "+a_list$(0)):e|
00019490  72 72 66 6c 61 67 3d b9  0d a6 7c 05 cc 0d a6 86  |rrflag=...|.....|
000194a0  12 e3 20 49 25 3d 30 20  b8 20 69 6e 64 65 78 0d  |.. I%=0 . index.|
000194b0  a6 90 18 20 20 6c 65 6e  32 3d a9 20 61 5f 6c 69  |...  len2=. a_li|
000194c0  73 74 24 28 49 25 29 0d  a6 9a 10 20 20 e7 20 6c  |st$(I%)....  . l|
000194d0  65 6e 32 3e 30 20 8c 0d  a6 a4 23 20 20 f2 67 65  |en2>0 ....#  .ge|
000194e0  74 63 6a 6e 28 61 5f 6c  69 73 74 24 28 49 25 29  |tcjn(a_list$(I%)|
000194f0  2c 6e 75 6d 2c 66 6e 64  24 29 0d a6 ae 2e 20 20  |,num,fnd$)....  |
00019500  e7 20 6e 75 6d 3c 3e 30  20 f2 65 72 72 6f 72 28  |. num<>0 .error(|
00019510  38 2c 61 5f 6c 69 73 74  24 28 49 25 29 29 3a 65  |8,a_list$(I%)):e|
00019520  72 72 66 6c 61 67 3d b9  0d a6 b8 3e 20 20 e7 20  |rrflag=....>  . |
00019530  6e 78 74 63 6a 6e 2b 6c  65 6e 32 3e 63 6f 6e 6a  |nxtcjn+len2>conj|
00019540  5f 65 6e 64 2d 32 20 f2  65 72 72 6f 72 28 31 33  |_end-2 .error(13|
00019550  2c 65 72 72 6f 72 24 28  34 32 29 29 3a 65 72 72  |,error$(42)):err|
00019560  66 6c 61 67 3d b9 0d a6  c2 13 20 20 e7 20 ac 20  |flag=.....  . . |
00019570  65 72 72 66 6c 61 67 20  8c 0d a6 cc 43 20 20 20  |errflag ....C   |
00019580  20 24 6e 78 74 63 6a 6e  3d 61 5f 6c 69 73 74 24  | $nxtcjn=a_list$|
00019590  28 49 25 29 3a 3f 28 6e  78 74 63 6a 6e 2b 6c 65  |(I%):?(nxtcjn+le|
000195a0  6e 32 2d 31 29 3d 3f 28  6e 78 74 63 6a 6e 2b 6c  |n2-1)=?(nxtcjn+l|
000195b0  65 6e 32 2d 31 29 20 84  20 31 32 38 0d a6 d6 36  |en2-1) . 128...6|
000195c0  20 20 20 20 6e 78 74 63  6a 6e 2b 3d 6c 65 6e 32  |    nxtcjn+=len2|
000195d0  3a 3f 6e 78 74 63 6a 6e  3d 63 6a 6e 3a 6e 78 74  |:?nxtcjn=cjn:nxt|
000195e0  63 6a 6e 2b 3d 31 3a 3f  6e 78 74 63 6a 6e 3d 26  |cjn+=1:?nxtcjn=&|
000195f0  46 46 0d a6 e0 07 20 20  cd 0d a6 ea 07 20 20 cd  |FF....  .....  .|
00019600  0d a6 f4 08 ed 20 49 25  0d a6 fe 13 20 20 e7 20  |..... I%....  . |
00019610  ac 20 65 72 72 66 6c 61  67 20 8c 0d a7 08 0e 20  |. errflag ..... |
00019620  20 20 20 63 6a 6e 2b 3d  31 0d a7 12 4c 20 20 20  |   cjn+=1...L   |
00019630  20 3f 63 6f 6e 6a 73 3d  63 6a 6e 3a 63 6f 6e 6a  | ?conjs=cjn:conj|
00019640  73 3f 31 3d 28 6e 78 74  63 6a 6e 2d 63 6f 6e 6a  |s?1=(nxtcjn-conj|
00019650  73 29 20 83 20 32 35 36  3a 63 6f 6e 6a 73 3f 32  |s) . 256:conjs?2|
00019660  3d 28 6e 78 74 63 6a 6e  2d 63 6f 6e 6a 73 29 20  |=(nxtcjn-conjs) |
00019670  81 20 32 35 36 0d a7 1c  07 20 20 cd 0d a7 26 05  |. 256....  ...&.|
00019680  cd 0d a7 30 07 c9 20 36  0d a7 3a 13 e7 20 73 70  |...0.. 6..:.. sp|
00019690  6e 3d 6d 61 78 73 70 65  63 20 8c 0d a7 44 29 f2  |n=maxspec ...D).|
000196a0  65 72 72 6f 72 28 32 34  2c 22 61 74 20 22 2b 61  |error(24,"at "+a|
000196b0  5f 6c 69 73 74 24 28 30  29 29 3a 65 72 72 66 6c  |_list$(0)):errfl|
000196c0  61 67 3d b9 0d a7 4e 05  cc 0d a7 58 12 e3 20 49  |ag=...N....X.. I|
000196d0  25 3d 30 20 b8 20 69 6e  64 65 78 0d a7 62 18 20  |%=0 . index..b. |
000196e0  20 6c 65 6e 32 3d a9 20  61 5f 6c 69 73 74 24 28  | len2=. a_list$(|
000196f0  49 25 29 0d a7 6c 10 20  20 e7 20 6c 65 6e 32 3e  |I%)..l.  . len2>|
00019700  30 20 8c 0d a7 76 23 20  20 f2 67 65 74 73 70 6e  |0 ...v#  .getspn|
00019710  28 61 5f 6c 69 73 74 24  28 49 25 29 2c 6e 75 6d  |(a_list$(I%),num|
00019720  2c 66 6e 64 24 29 0d a7  80 2e 20 20 e7 20 6e 75  |,fnd$)....  . nu|
00019730  6d 3c 3e 30 20 f2 65 72  72 6f 72 28 38 2c 61 5f  |m<>0 .error(8,a_|
00019740  6c 69 73 74 24 28 49 25  29 29 3a 65 72 72 66 6c  |list$(I%)):errfl|
00019750  61 67 3d b9 0d a7 8a 3e  20 20 e7 20 6e 78 74 73  |ag=....>  . nxts|
00019760  70 6e 2b 6c 65 6e 32 3e  73 70 65 63 5f 65 6e 64  |pn+len2>spec_end|
00019770  2d 32 20 f2 65 72 72 6f  72 28 31 33 2c 65 72 72  |-2 .error(13,err|
00019780  6f 72 24 28 34 33 29 29  3a 65 72 72 66 6c 61 67  |or$(43)):errflag|
00019790  3d b9 0d a7 94 13 20 20  e7 20 ac 20 65 72 72 66  |=.....  . . errf|
000197a0  6c 61 67 20 8c 0d a7 9e  43 20 20 20 20 24 6e 78  |lag ....C    $nx|
000197b0  74 73 70 6e 3d 61 5f 6c  69 73 74 24 28 49 25 29  |tspn=a_list$(I%)|
000197c0  3a 3f 28 6e 78 74 73 70  6e 2b 6c 65 6e 32 2d 31  |:?(nxtspn+len2-1|
000197d0  29 3d 3f 28 6e 78 74 73  70 6e 2b 6c 65 6e 32 2d  |)=?(nxtspn+len2-|
000197e0  31 29 20 84 20 31 32 38  0d a7 a8 36 20 20 20 20  |1) . 128...6    |
000197f0  6e 78 74 73 70 6e 2b 3d  6c 65 6e 32 3a 3f 6e 78  |nxtspn+=len2:?nx|
00019800  74 73 70 6e 3d 73 70 6e  3a 6e 78 74 73 70 6e 2b  |tspn=spn:nxtspn+|
00019810  3d 31 3a 3f 6e 78 74 73  70 6e 3d 26 46 46 0d a7  |=1:?nxtspn=&FF..|
00019820  b2 07 20 20 cd 0d a7 bc  07 20 20 cd 0d a7 c6 08  |..  .....  .....|
00019830  ed 20 49 25 0d a7 d0 13  20 20 e7 20 ac 20 65 72  |. I%....  . . er|
00019840  72 66 6c 61 67 20 8c 0d  a7 da 0e 20 20 20 20 73  |rflag .....    s|
00019850  70 6e 2b 3d 31 0d a7 e4  4c 20 20 20 20 3f 73 70  |pn+=1...L    ?sp|
00019860  65 63 73 3d 73 70 6e 3a  73 70 65 63 73 3f 31 3d  |ecs=spn:specs?1=|
00019870  28 6e 78 74 73 70 6e 2d  73 70 65 63 73 29 20 83  |(nxtspn-specs) .|
00019880  20 32 35 36 3a 73 70 65  63 73 3f 32 3d 28 6e 78  | 256:specs?2=(nx|
00019890  74 73 70 6e 2d 73 70 65  63 73 29 20 81 20 32 35  |tspn-specs) . 25|
000198a0  36 0d a7 ee 07 20 20 cd  0d a7 f8 05 cd 0d a8 02  |6....  .........|
000198b0  07 c9 20 37 0d a8 0c 14  e7 20 6e 73 6e 3d 6d 61  |.. 7..... nsn=ma|
000198c0  78 6e 6f 69 73 65 20 8c  0d a8 16 29 f2 65 72 72  |xnoise ....).err|
000198d0  6f 72 28 32 35 2c 22 61  74 20 22 2b 61 5f 6c 69  |or(25,"at "+a_li|
000198e0  73 74 24 28 30 29 29 3a  65 72 72 66 6c 61 67 3d  |st$(0)):errflag=|
000198f0  b9 0d a8 20 05 cc 0d a8  2a 12 e3 20 49 25 3d 30  |... ....*.. I%=0|
00019900  20 b8 20 69 6e 64 65 78  0d a8 34 18 20 20 6c 65  | . index..4.  le|
00019910  6e 32 3d a9 20 61 5f 6c  69 73 74 24 28 49 25 29  |n2=. a_list$(I%)|
00019920  0d a8 3e 10 20 20 e7 20  6c 65 6e 32 3e 30 20 8c  |..>.  . len2>0 .|
00019930  0d a8 48 23 20 20 f2 67  65 74 6e 73 6e 28 61 5f  |..H#  .getnsn(a_|
00019940  6c 69 73 74 24 28 49 25  29 2c 6e 75 6d 2c 66 6e  |list$(I%),num,fn|
00019950  64 24 29 0d a8 52 2e 20  20 e7 20 6e 75 6d 3c 3e  |d$)..R.  . num<>|
00019960  30 20 f2 65 72 72 6f 72  28 38 2c 61 5f 6c 69 73  |0 .error(8,a_lis|
00019970  74 24 28 49 25 29 29 3a  65 72 72 66 6c 61 67 3d  |t$(I%)):errflag=|
00019980  b9 0d a8 5c 3f 20 20 e7  20 6e 78 74 6e 73 6e 2b  |...\?  . nxtnsn+|
00019990  6c 65 6e 32 3e 6e 6f 69  73 65 5f 65 6e 64 2d 32  |len2>noise_end-2|
000199a0  20 f2 65 72 72 6f 72 28  31 33 2c 65 72 72 6f 72  | .error(13,error|
000199b0  24 28 34 34 29 29 3a 65  72 72 66 6c 61 67 3d b9  |$(44)):errflag=.|
000199c0  0d a8 66 13 20 20 e7 20  ac 20 65 72 72 66 6c 61  |..f.  . . errfla|
000199d0  67 20 8c 0d a8 70 43 20  20 20 20 24 6e 78 74 6e  |g ...pC    $nxtn|
000199e0  73 6e 3d 61 5f 6c 69 73  74 24 28 49 25 29 3a 3f  |sn=a_list$(I%):?|
000199f0  28 6e 78 74 6e 73 6e 2b  6c 65 6e 32 2d 31 29 3d  |(nxtnsn+len2-1)=|
00019a00  3f 28 6e 78 74 6e 73 6e  2b 6c 65 6e 32 2d 31 29  |?(nxtnsn+len2-1)|
00019a10  20 84 20 31 32 38 0d a8  7a 36 20 20 20 20 6e 78  | . 128..z6    nx|
00019a20  74 6e 73 6e 2b 3d 6c 65  6e 32 3a 3f 6e 78 74 6e  |tnsn+=len2:?nxtn|
00019a30  73 6e 3d 6e 73 6e 3a 6e  78 74 6e 73 6e 2b 3d 31  |sn=nsn:nxtnsn+=1|
00019a40  3a 3f 6e 78 74 6e 73 6e  3d 26 46 46 0d a8 84 07  |:?nxtnsn=&FF....|
00019a50  20 20 cd 0d a8 8e 07 20  20 cd 0d a8 98 08 ed 20  |  .....  ...... |
00019a60  49 25 0d a8 a2 13 20 20  e7 20 ac 20 65 72 72 66  |I%....  . . errf|
00019a70  6c 61 67 20 8c 0d a8 ac  0e 20 20 20 20 6e 73 6e  |lag .....    nsn|
00019a80  2b 3d 31 0d a8 b6 4c 20  20 20 20 3f 6e 6f 69 73  |+=1...L    ?nois|
00019a90  65 3d 6e 73 6e 3a 6e 6f  69 73 65 3f 31 3d 28 6e  |e=nsn:noise?1=(n|
00019aa0  78 74 6e 73 6e 2d 6e 6f  69 73 65 29 20 83 20 32  |xtnsn-noise) . 2|
00019ab0  35 36 3a 6e 6f 69 73 65  3f 32 3d 28 6e 78 74 6e  |56:noise?2=(nxtn|
00019ac0  73 6e 2d 6e 6f 69 73 65  29 20 81 20 32 35 36 0d  |sn-noise) . 256.|
00019ad0  a8 c0 07 20 20 cd 0d a8  ca 05 cd 0d a8 d4 08 c9  |...  ...........|
00019ae0  20 31 30 0d a8 de 12 e7  20 70 78 6e 3d 6d 61 78  | 10..... pxn=max|
00019af0  70 69 78 20 8c 0d a8 e8  29 f2 65 72 72 6f 72 28  |pix ....).error(|
00019b00  32 36 2c 22 61 74 20 22  2b 61 5f 6c 69 73 74 24  |26,"at "+a_list$|
00019b10  28 30 29 29 3a 65 72 72  66 6c 61 67 3d b9 0d a8  |(0)):errflag=...|
00019b20  f2 05 cc 0d a8 fc 12 e3  20 49 25 3d 30 20 b8 20  |........ I%=0 . |
00019b30  69 6e 64 65 78 0d a9 06  18 20 20 6c 65 6e 32 3d  |index....  len2=|
00019b40  a9 20 61 5f 6c 69 73 74  24 28 49 25 29 0d a9 10  |. a_list$(I%)...|
00019b50  10 20 20 e7 20 6c 65 6e  32 3e 30 20 8c 0d a9 1a  |.  . len2>0 ....|
00019b60  3d 20 20 e7 20 6e 78 74  70 78 6e 2b 6c 65 6e 32  |=  . nxtpxn+len2|
00019b70  3e 70 69 78 5f 65 6e 64  2d 32 20 f2 65 72 72 6f  |>pix_end-2 .erro|
00019b80  72 28 31 33 2c 65 72 72  6f 72 24 28 34 35 29 29  |r(13,error$(45))|
00019b90  3a 65 72 72 66 6c 61 67  3d b9 0d a9 24 13 20 20  |:errflag=...$.  |
00019ba0  e7 20 ac 20 65 72 72 66  6c 61 67 20 8c 0d a9 2e  |. . errflag ....|
00019bb0  46 20 20 20 20 24 6e 78  74 70 78 6e 3d 61 5f 6c  |F    $nxtpxn=a_l|
00019bc0  69 73 74 24 28 49 25 29  3a f4 20 3f 28 6e 78 74  |ist$(I%):. ?(nxt|
00019bd0  70 78 6e 2b 6c 65 6e 32  2d 31 29 3d 3f 28 6e 78  |pxn+len2-1)=?(nx|
00019be0  74 70 78 6e 2b 6c 65 6e  32 2d 31 29 20 4f 52 20  |tpxn+len2-1) OR |
00019bf0  31 32 38 0d a9 38 16 20  20 20 20 6e 78 74 70 78  |128..8.    nxtpx|
00019c00  6e 2b 3d 6c 65 6e 32 2b  31 0d a9 42 07 20 20 cd  |n+=len2+1..B.  .|
00019c10  0d a9 4c 07 20 20 cd 0d  a9 56 08 ed 20 49 25 0d  |..L.  ...V.. I%.|
00019c20  a9 60 13 20 20 e7 20 ac  20 65 72 72 66 6c 61 67  |.`.  . . errflag|
00019c30  20 8c 0d a9 6a 18 20 20  20 20 6c 6f 63 24 3d c1  | ...j.    loc$=.|
00019c40  6e 75 6d 62 65 72 24 2c  31 29 0d a9 74 14 20 20  |number$,1)..t.  |
00019c50  20 20 e7 20 6c 6f 63 24  3c 3e 22 22 20 8c 0d a9  |  . loc$<>"" ...|
00019c60  7e 3a 20 20 20 20 20 20  e7 20 a7 22 54 42 4c 52  |~:      . ."TBLR|
00019c70  22 2c 6c 6f 63 24 29 3c  3e 30 20 8c 20 76 61 6c  |",loc$)<>0 . val|
00019c80  3d a7 22 54 42 4c 52 22  2c 6c 6f 63 24 29 2d 31  |=."TBLR",loc$)-1|
00019c90  20 8b 20 76 61 6c 3d 30  0d a9 88 0f 20 20 20 20  | . val=0....    |
00019ca0  cc 20 76 61 6c 3d 30 0d  a9 92 09 20 20 20 20 cd  |. val=0....    .|
00019cb0  0d a9 9c 29 20 20 20 20  3f 6e 78 74 70 78 6e 3d  |...)    ?nxtpxn=|
00019cc0  76 61 6c 3a 6e 78 74 70  78 6e 2b 3d 35 3a 3f 6e  |val:nxtpxn+=5:?n|
00019cd0  78 74 70 78 6e 3d 26 46  46 0d a9 a6 0e 20 20 20  |xtpxn=&FF....   |
00019ce0  20 70 78 6e 2b 3d 31 0d  a9 b0 47 20 20 20 20 3f  | pxn+=1...G    ?|
00019cf0  70 69 78 73 3d 70 78 6e  3a 70 69 78 73 3f 31 3d  |pixs=pxn:pixs?1=|
00019d00  28 6e 78 74 70 78 6e 2d  70 69 78 73 29 20 83 20  |(nxtpxn-pixs) . |
00019d10  32 35 36 3a 70 69 78 73  3f 32 3d 28 6e 78 74 70  |256:pixs?2=(nxtp|
00019d20  78 6e 2d 70 69 78 73 29  20 81 20 32 35 36 0d a9  |xn-pixs) . 256..|
00019d30  ba 07 20 20 cd 0d a9 c4  05 cd 0d a9 ce 05 cb 0d  |..  ............|
00019d40  a9 d8 05 e1 0d a9 e2 04  0d a9 ec 2c dd 20 f2 67  |...........,. .g|
00019d50  65 74 73 74 72 28 74 65  73 74 24 2c 70 6c 61 63  |etstr(test$,plac|
00019d60  65 2c f8 20 70 6c 61 63  65 2c f8 20 72 65 73 75  |e,. place,. resu|
00019d70  6c 74 24 29 0d a9 f6 18  63 68 72 24 3d c1 74 65  |lt$)....chr$=.te|
00019d80  73 74 24 2c 70 6c 61 63  65 2c 31 29 0d aa 00 1d  |st$,place,1)....|
00019d90  e7 20 63 68 72 24 3d bd  31 33 20 8c 20 72 65 73  |. chr$=.13 . res|
00019da0  75 6c 74 24 3d 22 22 3a  e1 0d aa 0a 23 c8 95 20  |ult$="":....#.. |
00019db0  63 68 72 24 3d 22 20 22  20 84 20 63 68 72 24 3d  |chr$=" " . chr$=|
00019dc0  22 2c 22 20 70 6c 61 63  65 2b 3d 31 0d aa 14 18  |"," place+=1....|
00019dd0  63 68 72 24 3d c1 74 65  73 74 24 2c 70 6c 61 63  |chr$=.test$,plac|
00019de0  65 2c 31 29 0d aa 1e 05  ce 0d aa 28 04 0d aa 32  |e,1).......(...2|
00019df0  33 e7 20 63 68 72 24 3c  3e bd 20 33 34 20 f2 65  |3. chr$<>. 34 .e|
00019e00  72 72 6f 72 28 36 2c 22  20 3a 20 22 2b 6c 69 6e  |rror(6," : "+lin|
00019e10  65 24 29 3a 72 65 73 75  6c 74 24 3d 22 22 3a e1  |e$):result$="":.|
00019e20  0d aa 3c 0c 70 6c 61 63  65 2b 3d 31 0d aa 46 4e  |..<.place+=1..FN|
00019e30  70 6c 61 63 65 32 3d a7  6c 69 6e 65 24 2c bd 33  |place2=.line$,.3|
00019e40  34 2c 70 6c 61 63 65 29  3a e7 20 70 6c 61 63 65  |4,place):. place|
00019e50  32 3c 70 6c 61 63 65 20  f2 65 72 72 6f 72 28 36  |2<place .error(6|
00019e60  2c 22 20 3a 20 22 2b 6c  69 6e 65 24 29 3a 72 65  |," : "+line$):re|
00019e70  73 75 6c 74 24 3d 22 22  3a e1 0d aa 50 04 0d aa  |sult$="":...P...|
00019e80  5a 26 72 65 73 75 6c 74  24 3d c1 6c 69 6e 65 24  |Z&result$=.line$|
00019e90  2c 70 6c 61 63 65 2c 70  6c 61 63 65 32 2d 70 6c  |,place,place2-pl|
00019ea0  61 63 65 29 0d aa 64 12  70 6c 61 63 65 3d 70 6c  |ace)..d.place=pl|
00019eb0  61 63 65 32 2b 31 0d aa  6e 05 e1 0d aa 78 04 0d  |ace2+1..n....x..|
00019ec0  aa 82 10 dd 20 f2 6c 69  73 74 6e 6f 75 6e 73 0d  |.... .listnouns.|
00019ed0  aa 8c 15 ea 20 6d 70 74  72 2c 49 25 2c 4a 25 2c  |.... mptr,I%,J%,|
00019ee0  72 65 66 73 0d aa 96 0f  e7 20 6f 62 6e 3d 31 20  |refs..... obn=1 |
00019ef0  8c 20 e1 0d aa a0 0f 6d  70 74 72 3d 6e 72 65 66  |. .....mptr=nref|
00019f00  2b 34 0d aa aa 12 e3 20  49 25 3d 31 20 b8 20 6f  |+4..... I%=1 . o|
00019f10  62 6e 2d 31 0d aa b4 14  f2 70 75 74 28 c3 28 49  |bn-1.....put(.(I|
00019f20  25 29 2b 22 3d 20 22 29  0d aa be 1c f2 70 76 6f  |%)+"= ").....pvo|
00019f30  6b 28 49 25 2c 31 2c b9  29 3a f2 70 75 74 28 22  |k(I%,1,.):.put("|
00019f40  2c 3c 22 29 0d aa c8 0e  72 65 66 73 3d 3f 6d 70  |,<")....refs=?mp|
00019f50  74 72 0d aa d2 0e e7 20  72 65 66 73 3e 30 20 8c  |tr..... refs>0 .|
00019f60  0d aa dc 11 e3 20 4a 25  3d 31 20 b8 20 72 65 66  |..... J%=1 . ref|
00019f70  73 0d aa e6 14 f2 70 75  74 28 c3 28 4a 25 3f 6d  |s.....put(.(J%?m|
00019f80  70 74 72 29 29 0d aa f0  17 e7 20 4a 25 3c 72 65  |ptr))..... J%<re|
00019f90  66 73 20 f2 70 75 74 28  22 2c 22 29 0d aa fa 05  |fs .put(",")....|
00019fa0  ed 0d ab 04 05 cd 0d ab  0e 10 6d 70 74 72 2b 3d  |..........mptr+=|
00019fb0  72 65 66 73 2b 31 0d ab  18 11 f2 70 75 74 28 22  |refs+1.....put("|
00019fc0  3e 22 2b bd 31 33 29 0d  ab 22 05 ed 0d ab 2c 0c  |>"+.13).."....,.|
00019fd0  f2 70 75 74 28 bd 30 29  0d ab 36 05 e1 0d ab 40  |.put(.0)..6....@|
00019fe0  04 0d ab 4a 10 dd 20 f2  6c 69 73 74 76 65 72 62  |...J.. .listverb|
00019ff0  73 0d ab 54 0f e7 20 76  62 6e 3d 31 20 8c 20 e1  |s..T.. vbn=1 . .|
0001a000  0d ab 5e 12 e3 20 49 25  3d 31 20 b8 20 76 62 6e  |..^.. I%=1 . vbn|
0001a010  2d 31 0d ab 68 14 f2 70  75 74 28 c3 28 49 25 29  |-1..h..put(.(I%)|
0001a020  2b 22 3d 20 22 29 0d ab  72 1a 76 74 79 70 65 3d  |+"= ")..r.vtype=|
0001a030  76 65 72 62 5f 74 79 70  65 3f 28 32 2a 49 25 29  |verb_type?(2*I%)|
0001a040  0d ab 7c 25 f2 70 76 6f  6b 28 49 25 2c 30 2c b9  |..|%.pvok(I%,0,.|
0001a050  29 3a f2 70 75 74 28 22  2c 3c 22 2b c3 28 76 74  |):.put(",<"+.(vt|
0001a060  79 70 65 29 29 0d ab 86  25 6f 6c 66 6c 67 3d 76  |ype))...%olflg=v|
0001a070  65 72 62 5f 74 79 70 65  3f 28 32 2a 49 25 2b 31  |erb_type?(2*I%+1|
0001a080  29 3a 6f 6c 6f 63 24 3d  22 22 0d ab 90 0f e7 20  |):oloc$=""..... |
0001a090  76 74 79 70 65 3e 30 20  8c 0d ab 9a 21 e7 20 28  |vtype>0 ....!. (|
0001a0a0  6f 6c 66 6c 67 20 80 20  31 29 3c 3e 30 20 8c 20  |olflg . 1)<>0 . |
0001a0b0  6f 6c 6f 63 24 2b 3d 22  43 22 0d ab a4 21 e7 20  |oloc$+="C"...!. |
0001a0c0  28 6f 6c 66 6c 67 20 80  20 32 29 3c 3e 30 20 8c  |(olflg . 2)<>0 .|
0001a0d0  20 6f 6c 6f 63 24 2b 3d  22 50 22 0d ab ae 0d f2  | oloc$+="P".....|
0001a0e0  70 75 74 28 22 2c 22 29  0d ab b8 05 cd 0d ab c2  |put(",")........|
0001a0f0  17 f2 70 75 74 28 6f 6c  6f 63 24 2b 22 3e 22 2b  |..put(oloc$+">"+|
0001a100  bd 31 33 29 0d ab cc 05  ed 0d ab d6 0c f2 70 75  |.13)..........pu|
0001a110  74 28 bd 30 29 0d ab e0  05 e1 0d ab ea 04 0d ab  |t(.0)...........|
0001a120  f4 0f dd 20 f2 6c 69 73  74 61 64 6a 73 0d ab fe  |... .listadjs...|
0001a130  15 ea 20 6d 70 74 72 2c  49 25 2c 4a 25 2c 72 65  |.. mptr,I%,J%,re|
0001a140  66 73 0d ac 08 0f e7 20  61 64 6e 3d 31 20 8c 20  |fs..... adn=1 . |
0001a150  e1 0d ac 12 0f 6d 70 74  72 3d 61 72 65 66 2b 34  |.....mptr=aref+4|
0001a160  0d ac 1c 12 e3 20 49 25  3d 31 20 b8 20 61 64 6e  |..... I%=1 . adn|
0001a170  2d 31 0d ac 26 14 f2 70  75 74 28 c3 28 49 25 29  |-1..&..put(.(I%)|
0001a180  2b 22 3d 20 22 29 0d ac  30 1c f2 70 76 6f 6b 28  |+"= ")..0..pvok(|
0001a190  49 25 2c 32 2c b9 29 3a  f2 70 75 74 28 22 2c 3c  |I%,2,.):.put(",<|
0001a1a0  22 29 0d ac 3a 0e 72 65  66 73 3d 3f 6d 70 74 72  |")..:.refs=?mptr|
0001a1b0  0d ac 44 0e e7 20 72 65  66 73 3e 30 20 8c 0d ac  |..D.. refs>0 ...|
0001a1c0  4e 11 e3 20 4a 25 3d 31  20 b8 20 72 65 66 73 0d  |N.. J%=1 . refs.|
0001a1d0  ac 58 14 f2 70 75 74 28  c3 28 4a 25 3f 6d 70 74  |.X..put(.(J%?mpt|
0001a1e0  72 29 29 0d ac 62 17 e7  20 4a 25 3c 72 65 66 73  |r))..b.. J%<refs|
0001a1f0  20 f2 70 75 74 28 22 2c  22 29 0d ac 6c 05 ed 0d  | .put(",")..l...|
0001a200  ac 76 05 cd 0d ac 80 10  6d 70 74 72 2b 3d 72 65  |.v......mptr+=re|
0001a210  66 73 2b 31 0d ac 8a 11  f2 70 75 74 28 22 3e 22  |fs+1.....put(">"|
0001a220  2b bd 31 33 29 0d ac 94  05 ed 0d ac 9e 0c f2 70  |+.13)..........p|
0001a230  75 74 28 bd 30 29 0d ac  a8 05 e1 0d ac b2 04 0d  |ut(.0)..........|
0001a240  ac bc 10 dd 20 f2 6c 69  73 74 70 72 65 70 73 0d  |.... .listpreps.|
0001a250  ac c6 0b ea 20 49 25 2c  4a 25 0d ac d0 0f e7 20  |.... I%,J%..... |
0001a260  70 72 6e 3d 31 20 8c 20  e1 0d ac da 12 e3 20 49  |prn=1 . ...... I|
0001a270  25 3d 31 20 b8 20 70 72  6e 2d 31 0d ac e4 14 f2  |%=1 . prn-1.....|
0001a280  70 75 74 28 c3 28 49 25  29 2b 22 3d 20 22 29 0d  |put(.(I%)+"= ").|
0001a290  ac ee 1b f2 70 76 6f 6b  28 49 25 2c 33 2c b9 29  |....pvok(I%,3,.)|
0001a2a0  3a f2 70 75 74 28 bd 31  33 29 0d ac f8 05 ed 0d  |:.put(.13)......|
0001a2b0  ad 02 0c f2 70 75 74 28  bd 30 29 0d ad 0c 05 e1  |....put(.0).....|
0001a2c0  0d ad 16 04 0d ad 20 10  dd 20 f2 6c 69 73 74 63  |...... .. .listc|
0001a2d0  6f 6e 6a 73 0d ad 2a 0b  ea 20 49 25 2c 4a 25 0d  |onjs..*.. I%,J%.|
0001a2e0  ad 34 0f e7 20 63 6a 6e  3d 31 20 8c 20 e1 0d ad  |.4.. cjn=1 . ...|
0001a2f0  3e 12 e3 20 49 25 3d 31  20 b8 20 63 6a 6e 2d 31  |>.. I%=1 . cjn-1|
0001a300  0d ad 48 14 f2 70 75 74  28 c3 28 49 25 29 2b 22  |..H..put(.(I%)+"|
0001a310  3d 20 22 29 0d ad 52 1b  f2 70 76 6f 6b 28 49 25  |= ")..R..pvok(I%|
0001a320  2c 34 2c b9 29 3a f2 70  75 74 28 bd 31 33 29 0d  |,4,.):.put(.13).|
0001a330  ad 5c 05 ed 0d ad 66 0c  f2 70 75 74 28 bd 30 29  |.\....f..put(.0)|
0001a340  0d ad 70 05 e1 0d ad 7a  04 0d ad 84 10 dd 20 f2  |..p....z...... .|
0001a350  6c 69 73 74 73 70 65 63  73 0d ad 8e 0b ea 20 49  |listspecs..... I|
0001a360  25 2c 4a 25 0d ad 98 0f  e7 20 73 70 6e 3d 31 20  |%,J%..... spn=1 |
0001a370  8c 20 e1 0d ad a2 12 e3  20 49 25 3d 31 20 b8 20  |. ...... I%=1 . |
0001a380  73 70 6e 2d 31 0d ad ac  14 f2 70 75 74 28 c3 28  |spn-1.....put(.(|
0001a390  49 25 29 2b 22 3d 20 22  29 0d ad b6 1b f2 70 76  |I%)+"= ").....pv|
0001a3a0  6f 6b 28 49 25 2c 35 2c  b9 29 3a f2 70 75 74 28  |ok(I%,5,.):.put(|
0001a3b0  bd 31 33 29 0d ad c0 05  ed 0d ad ca 0c f2 70 75  |.13)..........pu|
0001a3c0  74 28 bd 30 29 0d ad d4  05 e1 0d ad de 04 0d ad  |t(.0)...........|
0001a3d0  e8 10 dd 20 f2 6c 69 73  74 6e 6f 69 73 65 0d ad  |... .listnoise..|
0001a3e0  f2 0b ea 20 49 25 2c 4a  25 0d ad fc 0f e7 20 6e  |... I%,J%..... n|
0001a3f0  73 6e 3d 31 20 8c 20 e1  0d ae 06 12 e3 20 49 25  |sn=1 . ...... I%|
0001a400  3d 31 20 b8 20 6e 73 6e  2d 31 0d ae 10 14 f2 70  |=1 . nsn-1.....p|
0001a410  75 74 28 c3 28 49 25 29  2b 22 3d 20 22 29 0d ae  |ut(.(I%)+"= ")..|
0001a420  1a 1b f2 70 76 6f 6b 28  49 25 2c 36 2c b9 29 3a  |...pvok(I%,6,.):|
0001a430  f2 70 75 74 28 bd 31 33  29 0d ae 24 05 ed 0d ae  |.put(.13)..$....|
0001a440  2e 0c f2 70 75 74 28 bd  30 29 0d ae 38 05 e1 0d  |...put(.0)..8...|
0001a450  ae 42 04 0d ae 4c 10 dd  20 f2 73 74 6f 72 65 5f  |.B...L.. .store_|
0001a460  70 69 78 0d ae 56 15 c8  99 20 22 48 6f 75 72 67  |pix..V... "Hourg|
0001a470  6c 61 73 73 5f 4f 6e 22  0d ae 60 0d 65 72 72 66  |lass_On"..`.errf|
0001a480  6c 61 67 3d a3 0d ae 6a  09 70 78 6e 3d 31 0d ae  |lag=...j.pxn=1..|
0001a490  74 47 6e 78 74 70 78 6e  3d 70 69 78 73 3a 3f 6e  |tGnxtpxn=pixs:?n|
0001a4a0  78 74 70 78 6e 3d 70 78  6e 3a 6e 78 74 70 78 6e  |xtpxn=pxn:nxtpxn|
0001a4b0  3f 31 3d 33 3a 6e 78 74  70 78 6e 3f 32 3d 30 3a  |?1=3:nxtpxn?2=0:|
0001a4c0  6e 78 74 70 78 6e 2b 3d  33 3a 3f 6e 78 74 70 78  |nxtpxn+=3:?nxtpx|
0001a4d0  6e 3d 26 46 46 0d ae 7e  17 6c 61 73 74 25 3d a4  |n=&FF..~.last%=.|
0001a4e0  66 69 6e 64 5f 6c 61 73  74 72 6f 77 0d ae 88 12  |find_lastrow....|
0001a4f0  e3 20 49 25 3d 30 20 b8  20 6c 61 73 74 25 0d ae  |. I%=0 . last%..|
0001a500  92 22 e7 20 ac 20 65 72  72 66 6c 61 67 20 f2 77  |.". . errflag .w|
0001a510  6f 72 64 28 31 30 2c a4  72 6f 77 28 49 25 29 29  |ord(10,.row(I%))|
0001a520  0d ae 9c 05 ed 0d ae a6  16 c8 99 20 22 48 6f 75  |........... "Hou|
0001a530  72 67 6c 61 73 73 5f 4f  66 66 22 0d ae b0 04 0d  |rglass_Off".....|
0001a540  ae ba 05 e1 0d ae c4 04  0d ae ce 12 dd 20 f2 73  |............. .s|
0001a550  74 6f 72 65 5f 76 6f 63  61 62 0d ae d8 15 c8 99  |tore_vocab......|
0001a560  20 22 48 6f 75 72 67 6c  61 73 73 5f 4f 6e 22 0d  | "Hourglass_On".|
0001a570  ae e2 1d 65 72 72 66 6c  61 67 3d a3 3a f2 72 65  |...errflag=.:.re|
0001a580  6d 6f 76 65 5f 6d 61 72  6b 65 72 73 0d ae ec 04  |move_markers....|
0001a590  0d ae f6 12 c8 8e 20 76  6f 63 5f 73 65 63 74 25  |...... voc_sect%|
0001a5a0  20 ca 0d af 00 07 c9 20  31 0d af 0a 09 6f 62 6e  | ...... 1....obn|
0001a5b0  3d 31 0d af 14 48 6e 78  74 6f 62 6a 3d 6e 6f 75  |=1...Hnxtobj=nou|
0001a5c0  6e 73 3a 3f 6e 78 74 6f  62 6a 3d 6f 62 6e 3a 6e  |ns:?nxtobj=obn:n|
0001a5d0  78 74 6f 62 6a 3f 31 3d  33 3a 6e 78 74 6f 62 6a  |xtobj?1=3:nxtobj|
0001a5e0  3f 32 3d 30 3a 6e 78 74  6f 62 6a 2b 3d 33 3a 3f  |?2=0:nxtobj+=3:?|
0001a5f0  6e 78 74 6f 62 6a 3d 26  46 46 0d af 1e 0b 21 6e  |nxtobj=&FF....!n|
0001a600  72 65 66 3d 34 0d af 28  07 c9 20 32 0d af 32 09  |ref=4..(.. 2..2.|
0001a610  76 62 6e 3d 31 0d af 3c  48 6e 78 74 76 72 62 3d  |vbn=1..<Hnxtvrb=|
0001a620  76 65 72 62 73 3a 3f 6e  78 74 76 72 62 3d 76 62  |verbs:?nxtvrb=vb|
0001a630  6e 3a 6e 78 74 76 72 62  3f 31 3d 33 3a 6e 78 74  |n:nxtvrb?1=3:nxt|
0001a640  76 72 62 3f 32 3d 30 3a  6e 78 74 76 72 62 2b 3d  |vrb?2=0:nxtvrb+=|
0001a650  33 3a 3f 6e 78 74 76 72  62 3d 26 46 46 0d af 46  |3:?nxtvrb=&FF..F|
0001a660  07 c9 20 33 0d af 50 09  61 64 6e 3d 31 0d af 5a  |.. 3..P.adn=1..Z|
0001a670  4a 6e 78 74 61 64 6a 3d  61 64 6a 65 63 74 73 3a  |Jnxtadj=adjects:|
0001a680  3f 6e 78 74 61 64 6a 3d  61 64 6e 3a 6e 78 74 61  |?nxtadj=adn:nxta|
0001a690  64 6a 3f 31 3d 33 3a 6e  78 74 61 64 6a 3f 32 3d  |dj?1=3:nxtadj?2=|
0001a6a0  30 3a 6e 78 74 61 64 6a  2b 3d 33 3a 3f 6e 78 74  |0:nxtadj+=3:?nxt|
0001a6b0  61 64 6a 3d 26 46 46 0d  af 64 0b 21 61 72 65 66  |adj=&FF..d.!aref|
0001a6c0  3d 34 0d af 6e 07 c9 20  34 0d af 78 09 70 72 6e  |=4..n.. 4..x.prn|
0001a6d0  3d 31 0d af 82 48 6e 78  74 70 72 70 3d 70 72 65  |=1...Hnxtprp=pre|
0001a6e0  70 73 3a 3f 6e 78 74 70  72 70 3d 70 72 6e 3a 6e  |ps:?nxtprp=prn:n|
0001a6f0  78 74 70 72 70 3f 31 3d  33 3a 6e 78 74 70 72 70  |xtprp?1=3:nxtprp|
0001a700  3f 32 3d 30 3a 6e 78 74  70 72 70 2b 3d 33 3a 3f  |?2=0:nxtprp+=3:?|
0001a710  6e 78 74 70 72 70 3d 26  46 46 0d af 8c 07 c9 20  |nxtprp=&FF..... |
0001a720  35 0d af 96 09 63 6a 6e  3d 31 0d af a0 48 6e 78  |5....cjn=1...Hnx|
0001a730  74 63 6a 6e 3d 63 6f 6e  6a 73 3a 3f 6e 78 74 63  |tcjn=conjs:?nxtc|
0001a740  6a 6e 3d 63 6a 6e 3a 6e  78 74 63 6a 6e 3f 31 3d  |jn=cjn:nxtcjn?1=|
0001a750  33 3a 6e 78 74 63 6a 6e  3f 32 3d 30 3a 6e 78 74  |3:nxtcjn?2=0:nxt|
0001a760  63 6a 6e 2b 3d 33 3a 3f  6e 78 74 63 6a 6e 3d 26  |cjn+=3:?nxtcjn=&|
0001a770  46 46 0d af aa 07 c9 20  36 0d af b4 09 73 70 6e  |FF..... 6....spn|
0001a780  3d 31 0d af be 48 6e 78  74 73 70 6e 3d 73 70 65  |=1...Hnxtspn=spe|
0001a790  63 73 3a 3f 6e 78 74 73  70 6e 3d 73 70 6e 3a 6e  |cs:?nxtspn=spn:n|
0001a7a0  78 74 73 70 6e 3f 31 3d  33 3a 6e 78 74 73 70 6e  |xtspn?1=3:nxtspn|
0001a7b0  3f 32 3d 30 3a 6e 78 74  73 70 6e 2b 3d 33 3a 3f  |?2=0:nxtspn+=3:?|
0001a7c0  6e 78 74 73 70 6e 3d 26  46 46 0d af c8 07 c9 20  |nxtspn=&FF..... |
0001a7d0  37 0d af d2 09 6e 73 6e  3d 31 0d af dc 48 6e 78  |7....nsn=1...Hnx|
0001a7e0  74 6e 73 6e 3d 6e 6f 69  73 65 3a 3f 6e 78 74 6e  |tnsn=noise:?nxtn|
0001a7f0  73 6e 3d 6e 73 6e 3a 6e  78 74 6e 73 6e 3f 31 3d  |sn=nsn:nxtnsn?1=|
0001a800  33 3a 6e 78 74 6e 73 6e  3f 32 3d 30 3a 6e 78 74  |3:nxtnsn?2=0:nxt|
0001a810  6e 73 6e 2b 3d 33 3a 3f  6e 78 74 6e 73 6e 3d 26  |nsn+=3:?nxtnsn=&|
0001a820  46 46 0d af e6 05 cb 0d  af f0 17 6c 61 73 74 25  |FF.........last%|
0001a830  3d a4 66 69 6e 64 5f 6c  61 73 74 72 6f 77 0d af  |=.find_lastrow..|
0001a840  fa 04 0d b0 04 12 e3 20  49 25 3d 30 20 b8 20 6c  |....... I%=0 . l|
0001a850  61 73 74 25 0d b0 0e 2a  20 e7 20 ac 20 65 72 72  |ast%...* . . err|
0001a860  66 6c 61 67 20 f2 77 6f  72 64 28 76 6f 63 5f 73  |flag .word(voc_s|
0001a870  65 63 74 25 2c a4 72 6f  77 28 49 25 29 29 0d b0  |ect%,.row(I%))..|
0001a880  18 05 ed 0d b0 22 19 e7  20 ac 20 65 72 72 66 6c  |.....".. . errfl|
0001a890  61 67 20 74 65 78 74 5f  6f 6b 3d b9 0d b0 2c 16  |ag text_ok=...,.|
0001a8a0  c8 99 20 22 48 6f 75 72  67 6c 61 73 73 5f 4f 66  |.. "Hourglass_Of|
0001a8b0  66 22 0d b0 36 05 e1 0d  b0 40 04 0d b0 4a 19 dd  |f"..6....@...J..|
0001a8c0  20 a4 66 69 6e 64 6e 6f  75 6e 28 6f 62 6a 2c f8  | .findnoun(obj,.|
0001a8d0  20 4a 25 29 0d b0 54 42  f4 20 46 69 6e 64 73 20  | J%)..TB. Finds |
0001a8e0  74 68 65 20 6e 75 6d 62  65 72 20 6f 66 20 74 68  |the number of th|
0001a8f0  65 20 6e 6f 75 6e 20 72  65 66 65 72 72 69 6e 67  |e noun referring|
0001a900  20 74 6f 20 61 20 73 70  65 63 69 66 69 65 64 20  | to a specified |
0001a910  6f 62 6a 65 63 74 0d b0  5e 14 ea 20 4d 25 2c 49  |object..^.. M%,I|
0001a920  25 2c 4e 25 2c 66 6f 75  6e 64 0d b0 68 0d 4d 25  |%,N%,found..h.M%|
0001a930  3d 6e 72 65 66 2b 34 0d  b0 72 1f c8 95 20 4e 25  |=nref+4..r... N%|
0001a940  3c 6c 61 73 74 5f 6f 62  6a 65 63 74 20 80 20 ac  |<last_object . .|
0001a950  20 66 6f 75 6e 64 0d b0  7c 0a 4a 25 3d 3f 4d 25  | found..|.J%=?M%|
0001a960  0d b0 86 0c e7 20 4a 25  3e 30 20 8c 0d b0 90 0f  |..... J%>0 .....|
0001a970  e3 20 49 25 3d 31 20 b8  20 4a 25 0d b0 9a 19 e7  |. I%=1 . J%.....|
0001a980  20 4d 25 3f 49 25 3d 6f  62 6a 20 8c 20 66 6f 75  | M%?I%=obj . fou|
0001a990  6e 64 3d b9 0d b0 a4 05  ed 0d b0 ae 05 cd 0d b0  |nd=.............|
0001a9a0  b8 0c 4d 25 2b 3d 4a 25  2b 31 0d b0 c2 09 4e 25  |..M%+=J%+1....N%|
0001a9b0  2b 3d 31 0d b0 cc 05 ce  0d b0 d6 14 e7 20 66 6f  |+=1.......... fo|
0001a9c0  75 6e 64 20 8c 3d 4e 25  20 8b 3d 30 0d b0 e0 04  |und .=N% .=0....|
0001a9d0  0d b0 ea 04 0d b0 f4 1e  dd 20 f2 77 68 69 63 68  |......... .which|
0001a9e0  5f 6f 62 6a 28 4e 25 2c  f8 20 56 24 2c f8 20 52  |_obj(N%,. V$,. R|
0001a9f0  25 29 0d b0 fe 43 f4 20  52 65 74 75 72 6e 73 20  |%)...C. Returns |
0001aa00  61 20 73 74 72 69 6e 67  20 63 6f 6e 74 61 69 6e  |a string contain|
0001aa10  69 6e 67 20 74 68 65 20  6f 62 6a 65 63 74 73 20  |ing the objects |
0001aa20  72 65 66 65 72 65 6e 63  65 64 20 62 79 20 6e 6f  |referenced by no|
0001aa30  75 6e 20 4e 25 0d b1 08  25 f4 20 52 25 3d 6e 75  |un N%...%. R%=nu|
0001aa40  6d 62 65 72 20 6f 66 20  6f 62 6a 65 63 74 73 20  |mber of objects |
0001aa50  72 65 66 65 72 65 6e 63  65 64 0d b1 12 17 ea 20  |referenced..... |
0001aa60  4d 25 2c 66 6f 75 6e 64  2c 49 25 2c 4a 25 2c 4b  |M%,found,I%,J%,K|
0001aa70  25 0d b1 1c 04 0d b1 26  0d 4d 25 3d 6e 72 65 66  |%......&.M%=nref|
0001aa80  2b 34 0d b1 30 0c e7 20  4e 25 3e 31 20 8c 0d b1  |+4..0.. N%>1 ...|
0001aa90  3a 11 e3 20 4b 25 3d 31  20 b8 20 4e 25 2d 31 0d  |:.. K%=1 . N%-1.|
0001aaa0  b1 44 0b 20 4a 25 3d 3f  4d 25 0d b1 4e 0d 20 4d  |.D. J%=?M%..N. M|
0001aab0  25 2b 3d 4a 25 2b 31 0d  b1 58 05 ed 0d b1 62 05  |%+=J%+1..X....b.|
0001aac0  cd 0d b1 6c 0a 4a 25 3d  3f 4d 25 0d b1 76 0f 52  |...l.J%=?M%..v.R|
0001aad0  25 3d 4a 25 3a 56 24 3d  22 22 0d b1 80 0c e7 20  |%=J%:V$=""..... |
0001aae0  4a 25 3e 30 20 8c 0d b1  8a 0f e3 20 49 25 3d 31  |J%>0 ...... I%=1|
0001aaf0  20 b8 20 4a 25 0d b1 94  15 20 56 24 2b 3d c3 28  | . J%.... V$+=.(|
0001ab00  49 25 3f 4d 25 29 2b 22  2c 22 0d b1 9e 05 ed 0d  |I%?M%)+","......|
0001ab10  b1 a8 05 cd 0d b1 b2 05  e1 0d b1 bc 04 0d b1 c6  |................|
0001ab20  19 dd 20 f2 70 76 6f 6b  28 6e 75 6d 2c 74 79 70  |.. .pvok(num,typ|
0001ab30  65 2c 61 6c 6c 29 0d b1  d0 15 ea 20 74 65 6d 70  |e,all)..... temp|
0001ab40  24 2c 66 6f 75 6e 64 2c  63 74 72 0d b1 da 0f e7  |$,found,ctr.....|
0001ab50  20 6e 75 6d 3d 30 20 8c  20 e1 0d b1 e4 04 0d b1  | num=0 . .......|
0001ab60  ee 0d c8 8e 20 74 79 70  65 20 ca 0d b1 f8 15 c9  |.... type ......|
0001ab70  20 30 3a 20 73 70 74 72  3d 76 65 72 62 73 2b 33  | 0: sptr=verbs+3|
0001ab80  0d b2 02 15 c9 20 31 3a  20 73 70 74 72 3d 6e 6f  |..... 1: sptr=no|
0001ab90  75 6e 73 2b 33 0d b2 0c  17 c9 20 32 3a 20 73 70  |uns+3..... 2: sp|
0001aba0  74 72 3d 61 64 6a 65 63  74 73 2b 33 0d b2 16 15  |tr=adjects+3....|
0001abb0  c9 20 33 3a 20 73 70 74  72 3d 70 72 65 70 73 2b  |. 3: sptr=preps+|
0001abc0  33 0d b2 20 15 c9 20 34  3a 20 73 70 74 72 3d 63  |3.. .. 4: sptr=c|
0001abd0  6f 6e 6a 73 2b 33 0d b2  2a 15 c9 20 35 3a 20 73  |onjs+3..*.. 5: s|
0001abe0  70 74 72 3d 73 70 65 63  73 2b 33 0d b2 34 15 c9  |ptr=specs+3..4..|
0001abf0  20 36 3a 20 73 70 74 72  3d 6e 6f 69 73 65 2b 33  | 6: sptr=noise+3|
0001ac00  0d b2 3e 15 c9 20 31 30  3a 20 73 70 74 72 3d 70  |..>.. 10: sptr=p|
0001ac10  69 78 73 2b 33 0d b2 48  05 cb 0d b2 52 04 0d b2  |ixs+3..H....R...|
0001ac20  5c 12 41 25 3d 6e 75 6d  3a 42 25 3d 73 70 74 72  |\.A%=num:B%=sptr|
0001ac30  0d b2 66 0d e7 20 ac 20  61 6c 6c 20 8c 0d b2 70  |..f.. . all ...p|
0001ac40  2f d6 20 70 76 6f 6b 3a  74 65 6d 70 24 3d 24 61  |/. pvok:temp$=$a|
0001ac50  74 65 78 74 3a e7 20 74  65 6d 70 24 3c 3e 22 22  |text:. temp$<>""|
0001ac60  20 f2 70 75 74 28 74 65  6d 70 24 29 0d b2 7a 05  | .put(temp$)..z.|
0001ac70  cc 0d b2 84 0f 3f 70 76  6f 6b 66 6c 61 67 3d 30  |.....?pvokflag=0|
0001ac80  0d b2 8e 05 f5 0d b2 98  0a d6 20 70 76 6f 6b 0d  |.......... pvok.|
0001ac90  b2 a2 13 e7 20 3f 70 76  6f 6b 66 6c 61 67 3d 30  |.... ?pvokflag=0|
0001aca0  20 8c 0d b2 ac 17 e7 20  63 74 72 3e 30 20 8c 20  | ...... ctr>0 . |
0001acb0  f2 70 75 74 28 22 2c 22  29 0d b2 b6 28 74 65 6d  |.put(",")...(tem|
0001acc0  70 24 3d 24 61 74 65 78  74 3a e7 20 74 65 6d 70  |p$=$atext:. temp|
0001acd0  24 3c 3e 22 22 20 f2 70  75 74 28 74 65 6d 70 24  |$<>"" .put(temp$|
0001ace0  29 0d b2 c0 16 63 74 72  2b 3d 31 3a 42 25 3d 21  |)....ctr+=1:B%=!|
0001acf0  61 64 64 72 65 73 73 0d  b2 ca 05 cd 0d b2 d4 11  |address.........|
0001ad00  fd 20 3f 70 76 6f 6b 66  6c 61 67 3e 30 0d b2 de  |. ?pvokflag>0...|
0001ad10  05 cd 0d b2 e8 05 e1 0d  b2 f2 04 0d b2 fc 28 dd  |..............(.|
0001ad20  20 f2 6e 6f 6e 73 70 63  28 73 74 72 24 2c 70 6c  | .nonspc(str$,pl|
0001ad30  61 63 65 2c f8 20 70 6c  61 63 65 2c f8 20 63 68  |ace,. place,. ch|
0001ad40  72 24 29 0d b3 06 19 c8  95 20 c1 73 74 72 24 2c  |r$)...... .str$,|
0001ad50  70 6c 61 63 65 2c 31 29  3d 22 20 22 0d b3 10 0e  |place,1)=" "....|
0001ad60  20 20 70 6c 61 63 65 2b  3d 31 0d b3 1a 05 ce 0d  |  place+=1......|
0001ad70  b3 24 17 63 68 72 24 3d  c1 73 74 72 24 2c 70 6c  |.$.chr$=.str$,pl|
0001ad80  61 63 65 2c 31 29 0d b3  2e 05 e1 0d b3 38 04 0d  |ace,1).......8..|
0001ad90  b3 42 0d dd 20 f2 64 6f  64 65 66 6e 0d b3 4c 3b  |.B.. .dodefn..L;|
0001ada0  e7 20 76 62 6e 3d 6d 61  78 76 62 6e 20 f2 65 72  |. vbn=maxvbn .er|
0001adb0  72 6f 72 28 31 31 2c 22  3a 20 22 2b c3 28 6d 61  |ror(11,": "+.(ma|
0001adc0  78 76 62 6e 29 2b 22 20  22 2b 65 72 72 6f 72 24  |xvbn)+" "+error$|
0001add0  28 34 36 29 29 3a e1 0d  b3 56 1f 3f 70 72 67 70  |(46)):...V.?prgp|
0001ade0  74 72 3d 64 65 66 5f 74  6f 6b 65 6e 3a 70 72 67  |tr=def_token:prg|
0001adf0  70 74 72 2b 3d 31 0d b3  60 04 0d b3 6a 27 f2 67  |ptr+=1..`...j'.g|
0001ae00  65 74 73 74 72 28 6c 69  6e 65 24 2c 70 74 72 2c  |etstr(line$,ptr,|
0001ae10  70 74 72 2c 76 72 62 24  29 3a 69 6e 64 65 78 3d  |ptr,vrb$):index=|
0001ae20  30 0d b3 74 11 e7 20 65  72 72 66 6c 61 67 20 8c  |0..t.. errflag .|
0001ae30  20 e1 0d b3 7e 21 f4 20  57 48 49 4c 45 20 76 72  | ...~!. WHILE vr|
0001ae40  62 24 3c 3e 22 22 20 41  4e 44 20 69 6e 64 65 78  |b$<>"" AND index|
0001ae50  3c 31 31 0d b3 88 20 61  5f 6c 69 73 74 24 28 69  |<11... a_list$(i|
0001ae60  6e 64 65 78 29 3d 76 72  62 24 3a 69 6e 64 65 78  |ndex)=vrb$:index|
0001ae70  2b 3d 31 0d b3 92 24 f4  20 50 52 4f 43 67 65 74  |+=1...$. PROCget|
0001ae80  73 74 72 28 6c 69 6e 65  24 2c 70 74 72 2c 70 74  |str(line$,ptr,pt|
0001ae90  72 2c 76 72 62 24 29 0d  b3 9c 0e f4 20 45 4e 44  |r,vrb$)..... END|
0001aea0  57 48 49 4c 45 0d b3 a6  04 0d b3 b0 24 e7 20 76  |WHILE.......$. v|
0001aeb0  72 62 24 3d 22 22 20 f2  65 72 72 6f 72 28 31 2c  |rb$="" .error(1,|
0001aec0  65 72 72 6f 72 24 28 34  37 29 29 3a e1 0d b3 ba  |error$(47)):....|
0001aed0  04 0d b3 c4 11 e7 20 65  72 72 66 6c 61 67 20 8c  |...... errflag .|
0001aee0  20 e1 0d b3 ce 04 0d b3  d8 13 66 6c 61 67 3d a3  | .........flag=.|
0001aef0  3a 69 6e 64 65 78 2d 3d  31 0d b3 e2 12 e3 20 49  |:index-=1..... I|
0001af00  25 3d 30 20 b8 20 69 6e  64 65 78 0d b3 ec 23 20  |%=0 . index...# |
0001af10  20 f2 67 65 74 76 62 6e  28 61 5f 6c 69 73 74 24  | .getvbn(a_list$|
0001af20  28 49 25 29 2c 6e 75 6d  2c 66 6e 64 24 29 0d b3  |(I%),num,fnd$)..|
0001af30  f6 3d 20 20 e7 20 6e 75  6d 3c 3e 30 20 80 20 ac  |.=  . num<>0 . .|
0001af40  20 65 78 69 73 74 69 6e  67 5f 76 65 72 62 20 f2  | existing_verb .|
0001af50  65 72 72 6f 72 28 38 2c  61 5f 6c 69 73 74 24 28  |error(8,a_list$(|
0001af60  49 25 29 29 3a 66 6c 61  67 3d b9 0d b4 00 10 20  |I%)):flag=..... |
0001af70  20 6f 6c 64 76 62 6e 3d  6e 75 6d 0d b4 0a 08 ed  | oldvbn=num.....|
0001af80  20 49 25 0d b4 14 04 0d  b4 1e 20 e7 20 ac 20 66  | I%....... . . f|
0001af90  6c 61 67 20 80 20 ac 20  65 78 69 73 74 69 6e 67  |lag . . existing|
0001afa0  5f 76 65 72 62 20 8c 0d  b4 28 14 20 20 e3 20 49  |_verb ...(.  . I|
0001afb0  25 3d 30 20 b8 20 69 6e  64 65 78 0d b4 32 1a 20  |%=0 . index..2. |
0001afc0  20 20 20 6c 65 6e 32 3d  a9 20 61 5f 6c 69 73 74  |   len2=. a_list|
0001afd0  24 28 49 25 29 0d b4 3c  43 20 20 20 20 24 6e 78  |$(I%)..<C    $nx|
0001afe0  74 76 72 62 3d 61 5f 6c  69 73 74 24 28 49 25 29  |tvrb=a_list$(I%)|
0001aff0  3a 3f 28 6e 78 74 76 72  62 2b 6c 65 6e 32 2d 31  |:?(nxtvrb+len2-1|
0001b000  29 3d 3f 28 6e 78 74 76  72 62 2b 6c 65 6e 32 2d  |)=?(nxtvrb+len2-|
0001b010  31 29 20 84 20 31 32 38  0d b4 46 2a 20 20 20 20  |1) . 128..F*    |
0001b020  6e 78 74 76 72 62 2b 3d  6c 65 6e 32 3a 3f 6e 78  |nxtvrb+=len2:?nx|
0001b030  74 76 72 62 3d 76 62 6e  3a 6e 78 74 76 72 62 2b  |tvrb=vbn:nxtvrb+|
0001b040  3d 31 0d b4 50 0a 20 20  ed 20 49 25 0d b4 5a 2e  |=1..P.  . I%..Z.|
0001b050  20 20 3f 70 72 67 70 74  72 3d 76 62 6e 3a 70 72  |  ?prgptr=vbn:pr|
0001b060  67 70 74 72 2b 3d 31 3a  3f 6e 78 74 76 72 62 3d  |gptr+=1:?nxtvrb=|
0001b070  26 46 46 3a 76 62 6e 2b  3d 31 0d b4 64 4a 20 20  |&FF:vbn+=1..dJ  |
0001b080  3f 76 65 72 62 73 3d 76  62 6e 3a 76 65 72 62 73  |?verbs=vbn:verbs|
0001b090  3f 31 3d 28 6e 78 74 76  72 62 2d 76 65 72 62 73  |?1=(nxtvrb-verbs|
0001b0a0  29 20 83 20 32 35 36 3a  76 65 72 62 73 3f 32 3d  |) . 256:verbs?2=|
0001b0b0  28 6e 78 74 76 72 62 2d  76 65 72 62 73 29 20 81  |(nxtvrb-verbs) .|
0001b0c0  20 32 35 36 0d b4 6e 04  0d b4 78 05 cc 0d b4 82  | 256..n...x.....|
0001b0d0  2e e7 20 65 78 69 73 74  69 6e 67 5f 76 65 72 62  |.. existing_verb|
0001b0e0  20 8c 20 3f 70 72 67 70  74 72 3d 6f 6c 64 76 62  | . ?prgptr=oldvb|
0001b0f0  6e 3a 70 72 67 70 74 72  2b 3d 31 0d b4 8c 05 cd  |n:prgptr+=1.....|
0001b100  0d b4 96 04 0d b4 a0 13  65 78 69 73 74 69 6e 67  |........existing|
0001b110  5f 76 65 72 62 3d b9 0d  b4 aa 05 e1 0d b4 b4 04  |_verb=..........|
0001b120  0d b4 be 0d dd 20 f2 70  72 74 64 65 66 0d b4 c8  |..... .prtdef...|
0001b130  13 76 72 62 6e 75 6d 3d  3f 6c 69 73 74 70 74 72  |.vrbnum=?listptr|
0001b140  0d b4 d2 2d f2 70 75 74  28 bd 33 32 2b bd 33 34  |...-.put(.32+.34|
0001b150  29 3a f2 70 76 6f 6b 28  76 72 62 6e 75 6d 2c 30  |):.pvok(vrbnum,0|
0001b160  2c a3 29 3a f2 70 75 74  28 bd 33 34 29 0d b4 dc  |,.):.put(.34)...|
0001b170  05 e1 0d b4 e6 04 0d b4  f0 13 dd 20 a4 66 6e 74  |........... .fnt|
0001b180  79 70 65 28 70 61 72 6d  29 0d b4 fa 0a ea 20 74  |ype(parm)..... t|
0001b190  65 6d 70 0d b5 04 31 e7  20 74 6f 6b 65 6e 3d 70  |emp...1. token=p|
0001b1a0  72 65 70 5f 74 6f 6b 65  6e 20 84 20 74 6f 6b 65  |rep_token . toke|
0001b1b0  6e 3d 6e 6f 74 70 72 65  70 5f 74 6f 6b 65 6e 20  |n=notprep_token |
0001b1c0  8c 20 3d 33 0d b5 0e 36  74 65 6d 70 3d 70 61 72  |. =3...6temp=par|
0001b1d0  6d 20 80 20 25 30 31 30  30 30 30 30 30 3a f4 20  |m . %01000000:. |
0001b1e0  63 68 65 63 6b 20 69 66  20 60 6f 62 6a 65 63 74  |check if `object|
0001b1f0  60 20 66 75 6e 63 74 69  6f 6e 0d b5 18 11 e7 20  |` function..... |
0001b200  74 65 6d 70 3c 3e 30 20  8c 3d 31 0d b5 22 34 74  |temp<>0 .=1.."4t|
0001b210  65 6d 70 3d 70 61 72 6d  20 80 20 25 30 30 31 30  |emp=parm . %0010|
0001b220  30 30 30 30 3a f4 20 63  68 65 63 6b 20 69 66 20  |0000:. check if |
0001b230  60 76 65 72 62 60 20 66  75 6e 63 74 69 6f 6e 0d  |`verb` function.|
0001b240  b5 2c 16 e7 20 74 65 6d  70 3c 3e 30 20 8c 3d 32  |.,.. temp<>0 .=2|
0001b250  20 8b 20 3d 30 0d b5 36  04 0d b5 40 0e dd 20 f2  | . =0..6...@.. .|
0001b260  70 72 6e 74 6f 62 6a 0d  b5 4a 09 ea 20 6e 75 6d  |prntobj..J.. num|
0001b270  0d b5 54 13 6f 62 6a 6e  75 6d 3d 3f 6c 69 73 74  |..T.objnum=?list|
0001b280  70 74 72 0d b5 5e 1c e7  20 6f 62 6a 6e 75 6d 3e  |ptr..^.. objnum>|
0001b290  6c 61 73 74 5f 6f 62 6a  65 63 74 20 8c 20 e1 0d  |last_object . ..|
0001b2a0  b5 68 1e 6e 75 6d 3d a4  66 69 6e 64 6e 6f 75 6e  |.h.num=.findnoun|
0001b2b0  28 6f 62 6a 6e 75 6d 2c  72 65 66 73 29 0d b5 72  |(objnum,refs)..r|
0001b2c0  0e e7 20 72 65 66 73 3d  31 20 8c 0d b5 7c 26 f2  |.. refs=1 ...|&.|
0001b2d0  70 75 74 28 bd 33 34 29  3a f2 70 76 6f 6b 28 6e  |put(.34):.pvok(n|
0001b2e0  75 6d 2c 31 2c a3 29 3a  f2 70 75 74 28 bd 33 34  |um,1,.):.put(.34|
0001b2f0  29 0d b5 86 0c 64 6f 6e  65 69 74 3d b9 0d b5 90  |)....doneit=....|
0001b300  05 cd 0d b5 9a 05 e1 0d  b5 a4 04 0d b5 ae 0e dd  |................|
0001b310  20 f2 70 72 6e 74 76 72  62 0d b5 b8 13 76 72 62  | .prntvrb....vrb|
0001b320  6e 75 6d 3d 3f 6c 69 73  74 70 74 72 0d b5 c2 15  |num=?listptr....|
0001b330  e7 20 76 72 62 6e 75 6d  3e 3d 76 62 6e 20 8c 20  |. vrbnum>=vbn . |
0001b340  e1 0d b5 cc 29 f2 70 75  74 28 bd 33 34 29 3a f2  |....).put(.34):.|
0001b350  70 76 6f 6b 28 76 72 62  6e 75 6d 2c 30 2c a3 29  |pvok(vrbnum,0,.)|
0001b360  3a f2 70 75 74 28 bd 33  34 29 0d b5 d6 0c 64 6f  |:.put(.34)....do|
0001b370  6e 65 69 74 3d b9 0d b5  e0 05 e1 0d b5 ea 04 0d  |neit=...........|
0001b380  b5 f4 10 dd 20 f2 70 72  69 6e 74 70 72 65 70 0d  |.... .printprep.|
0001b390  b5 fe 09 ea 20 6e 75 6d  0d b6 08 10 6e 75 6d 3d  |.... num....num=|
0001b3a0  3f 6c 69 73 74 70 74 72  0d b6 12 12 e7 20 6e 75  |?listptr..... nu|
0001b3b0  6d 3e 3d 70 72 6e 20 8c  20 e1 0d b6 1c 26 f2 70  |m>=prn . ....&.p|
0001b3c0  75 74 28 bd 33 34 29 3a  f2 70 76 6f 6b 28 6e 75  |ut(.34):.pvok(nu|
0001b3d0  6d 2c 33 2c a3 29 3a f2  70 75 74 28 bd 33 34 29  |m,3,.):.put(.34)|
0001b3e0  0d b6 26 0c 64 6f 6e 65  69 74 3d b9 0d b6 30 05  |..&.doneit=...0.|
0001b3f0  e1 0d b6 3a 04 0d b6 44  17 dd 20 f2 63 6f 70 79  |...:...D.. .copy|
0001b400  5f 66 72 6f 6d 5f 65 64  69 74 6f 72 0d b6 4e 1a  |_from_editor..N.|
0001b410  ea 20 6c 64 70 74 72 2c  73 76 70 74 72 2c 4f 25  |. ldptr,svptr,O%|
0001b420  2c 49 25 2c 52 25 0d b6  58 12 73 76 70 74 72 3d  |,I%,R%..X.svptr=|
0001b430  69 6e 69 74 73 61 76 65  0d b6 62 1c e3 20 4f 25  |initsave..b.. O%|
0001b440  3d 6c 61 73 74 5f 6f 62  6a 65 63 74 20 b8 20 30  |=last_object . 0|
0001b450  20 88 2d 31 0d b6 6c 19  6c 64 70 74 72 3d 6f 64  | .-1..l.ldptr=od|
0001b460  61 74 61 25 2b 4f 25 2a  6f 5f 6c 65 6e 0d b6 76  |ata%+O%*o_len..v|
0001b470  1a 21 73 76 70 74 72 3d  21 6c 64 70 74 72 3a 73  |.!svptr=!ldptr:s|
0001b480  76 70 74 72 2b 3d 34 0d  b6 80 1c 3f 73 76 70 74  |vptr+=4....?svpt|
0001b490  72 3d 6c 64 70 74 72 3f  31 32 3a 73 76 70 74 72  |r=ldptr?12:svptr|
0001b4a0  2b 3d 31 0d b6 8a 1c 3f  73 76 70 74 72 3d 6c 64  |+=1....?svptr=ld|
0001b4b0  70 74 72 3f 31 34 3a 73  76 70 74 72 2b 3d 31 0d  |ptr?14:svptr+=1.|
0001b4c0  b6 94 1c 3f 73 76 70 74  72 3d 6c 64 70 74 72 3f  |...?svptr=ldptr?|
0001b4d0  31 35 3a 73 76 70 74 72  2b 3d 31 0d b6 9e 05 ed  |15:svptr+=1.....|
0001b4e0  0d b6 a8 1a e3 20 52 25  3d 6c 61 73 74 5f 72 6f  |..... R%=last_ro|
0001b4f0  6f 6d 20 b8 20 30 20 88  2d 31 0d b6 b2 19 6c 64  |om . 0 .-1....ld|
0001b500  70 74 72 3d 72 64 61 74  61 25 2b 52 25 2a 72 5f  |ptr=rdata%+R%*r_|
0001b510  6c 65 6e 0d b6 bc 2a 3f  73 76 70 74 72 3d 3f 6c  |len...*?svptr=?l|
0001b520  64 70 74 72 3a 73 76 70  74 72 3f 31 3d 6c 64 70  |dptr:svptr?1=ldp|
0001b530  74 72 3f 31 3a 73 76 70  74 72 2b 3d 32 0d b6 c6  |tr?1:svptr+=2...|
0001b540  13 e3 20 49 25 3d 35 34  20 b8 20 37 33 20 88 34  |.. I%=54 . 73 .4|
0001b550  0d b6 d0 1c 21 73 76 70  74 72 3d 49 25 21 6c 64  |....!svptr=I%!ld|
0001b560  70 74 72 3a 73 76 70 74  72 2b 3d 34 0d b6 da 05  |ptr:svptr+=4....|
0001b570  ed 0d b6 e4 05 ed 0d b6  ee 05 e1 0d b6 f8 04 0d  |................|
0001b580  b7 02 15 dd 20 f2 63 6f  70 79 5f 74 6f 5f 65 64  |.... .copy_to_ed|
0001b590  69 74 6f 72 0d b7 0c 1a  ea 20 6c 64 70 74 72 2c  |itor..... ldptr,|
0001b5a0  73 76 70 74 72 2c 4f 25  2c 49 25 2c 52 25 0d b7  |svptr,O%,I%,R%..|
0001b5b0  16 12 6c 64 70 74 72 3d  69 6e 69 74 73 61 76 65  |..ldptr=initsave|
0001b5c0  0d b7 20 1c e3 20 4f 25  3d 6c 61 73 74 5f 6f 62  |.. .. O%=last_ob|
0001b5d0  6a 65 63 74 20 b8 20 30  20 88 2d 31 0d b7 2a 19  |ject . 0 .-1..*.|
0001b5e0  73 76 70 74 72 3d 6f 64  61 74 61 25 2b 4f 25 2a  |svptr=odata%+O%*|
0001b5f0  6f 5f 6c 65 6e 0d b7 34  1a 21 73 76 70 74 72 3d  |o_len..4.!svptr=|
0001b600  21 6c 64 70 74 72 3a 6c  64 70 74 72 2b 3d 34 0d  |!ldptr:ldptr+=4.|
0001b610  b7 3e 1c 73 76 70 74 72  3f 31 32 3d 3f 6c 64 70  |.>.svptr?12=?ldp|
0001b620  74 72 3a 6c 64 70 74 72  2b 3d 31 0d b7 48 1c 73  |tr:ldptr+=1..H.s|
0001b630  76 70 74 72 3f 31 34 3d  3f 6c 64 70 74 72 3a 6c  |vptr?14=?ldptr:l|
0001b640  64 70 74 72 2b 3d 31 0d  b7 52 1c 73 76 70 74 72  |dptr+=1..R.svptr|
0001b650  3f 31 35 3d 3f 6c 64 70  74 72 3a 6c 64 70 74 72  |?15=?ldptr:ldptr|
0001b660  2b 3d 31 0d b7 5c 05 ed  0d b7 66 1a e3 20 52 25  |+=1..\....f.. R%|
0001b670  3d 6c 61 73 74 5f 72 6f  6f 6d 20 b8 20 30 20 88  |=last_room . 0 .|
0001b680  2d 31 0d b7 70 19 73 76  70 74 72 3d 72 64 61 74  |-1..p.svptr=rdat|
0001b690  61 25 2b 52 25 2a 72 5f  6c 65 6e 0d b7 7a 2a 3f  |a%+R%*r_len..z*?|
0001b6a0  73 76 70 74 72 3d 3f 6c  64 70 74 72 3a 73 76 70  |svptr=?ldptr:svp|
0001b6b0  74 72 3f 31 3d 6c 64 70  74 72 3f 31 3a 6c 64 70  |tr?1=ldptr?1:ldp|
0001b6c0  74 72 2b 3d 32 0d b7 84  13 e3 20 49 25 3d 35 34  |tr+=2..... I%=54|
0001b6d0  20 b8 20 37 33 20 88 34  0d b7 8e 1c 49 25 21 73  | . 73 .4....I%!s|
0001b6e0  76 70 74 72 3d 21 6c 64  70 74 72 3a 6c 64 70 74  |vptr=!ldptr:ldpt|
0001b6f0  72 2b 3d 34 0d b7 98 05  ed 0d b7 a2 05 ed 0d b7  |r+=4............|
0001b700  ac 05 e1 0d b7 b6 04 0d  b7 c0 10 dd 20 f2 73 77  |............ .sw|
0001b710  61 70 5f 64 61 74 61 0d  b7 ca 1d ea 20 6c 64 70  |ap_data..... ldp|
0001b720  74 72 2c 73 76 70 74 72  2c 4f 25 2c 49 25 2c 52  |tr,svptr,O%,I%,R|
0001b730  25 2c 54 25 0d b7 d4 12  6c 64 70 74 72 3d 69 6e  |%,T%....ldptr=in|
0001b740  69 74 73 61 76 65 0d b7  de 1c e3 20 4f 25 3d 6c  |itsave..... O%=l|
0001b750  61 73 74 5f 6f 62 6a 65  63 74 20 b8 20 30 20 88  |ast_object . 0 .|
0001b760  2d 31 0d b7 e8 19 73 76  70 74 72 3d 6f 64 61 74  |-1....svptr=odat|
0001b770  61 25 2b 4f 25 2a 6f 5f  6c 65 6e 0d b7 f2 0d 54  |a%+O%*o_len....T|
0001b780  25 3d 21 73 76 70 74 72  0d b7 fc 24 21 73 76 70  |%=!svptr...$!svp|
0001b790  74 72 3d 21 6c 64 70 74  72 3a 21 6c 64 70 74 72  |tr=!ldptr:!ldptr|
0001b7a0  3d 54 25 3a 6c 64 70 74  72 2b 3d 34 0d b8 06 0f  |=T%:ldptr+=4....|
0001b7b0  54 25 3d 73 76 70 74 72  3f 31 32 0d b8 10 26 73  |T%=svptr?12...&s|
0001b7c0  76 70 74 72 3f 31 32 3d  3f 6c 64 70 74 72 3a 3f  |vptr?12=?ldptr:?|
0001b7d0  6c 64 70 74 72 3d 54 25  3a 6c 64 70 74 72 2b 3d  |ldptr=T%:ldptr+=|
0001b7e0  31 0d b8 1a 0f 54 25 3d  73 76 70 74 72 3f 31 34  |1....T%=svptr?14|
0001b7f0  0d b8 24 26 73 76 70 74  72 3f 31 34 3d 3f 6c 64  |..$&svptr?14=?ld|
0001b800  70 74 72 3a 3f 6c 64 70  74 72 3d 54 25 3a 6c 64  |ptr:?ldptr=T%:ld|
0001b810  70 74 72 2b 3d 31 0d b8  2e 0f 54 25 3d 73 76 70  |ptr+=1....T%=svp|
0001b820  74 72 3f 31 35 0d b8 38  26 73 76 70 74 72 3f 31  |tr?15..8&svptr?1|
0001b830  35 3d 3f 6c 64 70 74 72  3a 3f 6c 64 70 74 72 3d  |5=?ldptr:?ldptr=|
0001b840  54 25 3a 6c 64 70 74 72  2b 3d 31 0d b8 42 05 ed  |T%:ldptr+=1..B..|
0001b850  0d b8 4c 1a e3 20 52 25  3d 6c 61 73 74 5f 72 6f  |..L.. R%=last_ro|
0001b860  6f 6d 20 b8 20 30 20 88  2d 31 0d b8 56 19 73 76  |om . 0 .-1..V.sv|
0001b870  70 74 72 3d 72 64 61 74  61 25 2b 52 25 2a 72 5f  |ptr=rdata%+R%*r_|
0001b880  6c 65 6e 0d b8 60 54 54  25 3d 3f 73 76 70 74 72  |len..`TT%=?svptr|
0001b890  3a 3f 73 76 70 74 72 3d  3f 6c 64 70 74 72 3a 3f  |:?svptr=?ldptr:?|
0001b8a0  6c 64 70 74 72 3d 54 25  3a 54 25 3d 73 76 70 74  |ldptr=T%:T%=svpt|
0001b8b0  72 3f 31 3a 73 76 70 74  72 3f 31 3d 6c 64 70 74  |r?1:svptr?1=ldpt|
0001b8c0  72 3f 31 3a 6c 64 70 74  72 3f 31 3d 54 25 3a 6c  |r?1:ldptr?1=T%:l|
0001b8d0  64 70 74 72 2b 3d 32 0d  b8 6a 13 e3 20 49 25 3d  |dptr+=2..j.. I%=|
0001b8e0  35 34 20 b8 20 37 33 20  88 34 0d b8 74 0f 54 25  |54 . 73 .4..t.T%|
0001b8f0  3d 49 25 21 73 76 70 74  72 0d b8 7e 26 49 25 21  |=I%!svptr..~&I%!|
0001b900  73 76 70 74 72 3d 21 6c  64 70 74 72 3a 21 6c 64  |svptr=!ldptr:!ld|
0001b910  70 74 72 3d 54 25 3a 6c  64 70 74 72 2b 3d 34 0d  |ptr=T%:ldptr+=4.|
0001b920  b8 88 05 ed 0d b8 92 05  ed 0d b8 9c 05 e1 0d b8  |................|
0001b930  a6 04 0d b8 b0 30 dd 20  a4 65 72 72 6f 72 62 6f  |.....0. .errorbo|
0001b940  78 28 65 72 72 24 2c 65  72 72 25 2c 45 72 72 6f  |x(err$,err%,Erro|
0001b950  72 66 6c 61 67 73 2c 66  72 6f 6d 50 6c 61 63 65  |rflags,fromPlace|
0001b960  25 29 0d b8 ba 12 c8 99  20 43 72 65 61 74 65 4d  |%)...... CreateM|
0001b970  2c 2c 2d 31 0d b8 c4 12  c8 99 20 50 6f 6c 6c 2c  |,,-1...... Poll,|
0001b980  2c 62 6c 6f 63 6b 0d b8  ce 13 21 6d 69 73 74 61  |,block....!mista|
0001b990  6b 65 20 3d 20 65 72 72  25 0d b8 d8 1b e7 20 ac  |ke = err%..... .|
0001b9a0  20 74 65 73 74 69 6e 67  20 80 20 65 72 72 25 3d  | testing . err%=|
0001b9b0  32 39 20 8c 0d b8 e2 43  20 20 20 65 72 72 24 3d  |29 ....C   err$=|
0001b9c0  22 53 6f 72 72 79 20 2d  20 6e 6f 74 20 69 6d 70  |"Sorry - not imp|
0001b9d0  6c 65 6d 65 6e 74 65 64  20 69 6e 20 74 68 69 73  |lemented in this|
0001b9e0  20 76 65 72 73 69 6f 6e  22 3a 20 45 72 72 6f 72  | version": Error|
0001b9f0  66 6c 61 67 73 3d 31 0d  b8 ec 05 cd 0d b8 f6 2d  |flags=1........-|
0001ba00  e7 20 74 65 73 74 69 6e  67 20 65 72 72 24 2b 3d  |. testing err$+=|
0001ba10  22 20 28 45 72 72 6f 72  20 63 6f 64 65 3a 20 22  |" (Error code: "|
0001ba20  2b c3 28 9e 29 2b 22 29  22 0d b9 00 55 e7 20 28  |+.(.)+")"...U. (|
0001ba30  65 72 72 25 20 80 20 26  46 46 29 3d 26 43 37 20  |err% . &FF)=&C7 |
0001ba40  65 72 72 24 3d 22 44 69  73 6b 20 6e 6f 74 20 66  |err$="Disk not f|
0001ba50  6f 72 6d 61 74 74 65 64  2e 20 53 68 61 6c 6c 20  |ormatted. Shall |
0001ba60  49 20 66 6f 72 6d 61 74  20 69 74 20 6e 6f 77 3f  |I format it now?|
0001ba70  22 3a 45 72 72 6f 72 66  6c 61 67 73 3d 33 0d b9  |":Errorflags=3..|
0001ba80  0a 1c 24 28 6d 69 73 74  61 6b 65 2b 34 29 20 3d  |..$(mistake+4) =|
0001ba90  20 65 72 72 24 2b bd 28  30 29 0d b9 14 55 e7 20  | err$+.(0)...U. |
0001baa0  66 72 6f 6d 50 6c 61 63  65 25 3c 3e 2d 39 39 20  |fromPlace%<>-99 |
0001bab0  8c 20 45 72 72 6f 72 66  6c 61 67 73 3d 45 72 72  |. Errorflags=Err|
0001bac0  6f 72 66 6c 61 67 73 20  84 20 31 36 3a 74 24 3d  |orflags . 16:t$=|
0001bad0  22 4d 65 73 73 61 67 65  20 66 72 6f 6d 20 41 4c  |"Message from AL|
0001bae0  50 53 22 20 8b 20 74 24  3d 22 41 4c 50 53 22 0d  |PS" . t$="ALPS".|
0001baf0  b9 1e 3c c8 99 20 22 57  69 6d 70 5f 52 65 70 6f  |..<.. "Wimp_Repo|
0001bb00  72 74 45 72 72 6f 72 22  2c 6d 69 73 74 61 6b 65  |rtError",mistake|
0001bb10  2c 45 72 72 6f 72 66 6c  61 67 73 2c 74 24 20 b8  |,Errorflags,t$ .|
0001bb20  20 2c 64 69 61 6c 6f 67  75 65 25 0d b9 28 16 6f  | ,dialogue%..(.o|
0001bb30  6b 20 3d 20 28 64 69 61  6c 6f 67 75 65 25 3d 31  |k = (dialogue%=1|
0001bb40  29 0d b9 32 04 0d b9 3c  1d e7 20 28 65 72 72 25  |)..2...<.. (err%|
0001bb50  20 80 20 26 46 46 29 3d  26 43 37 20 80 20 6f 6b  | . &FF)=&C7 . ok|
0001bb60  20 8c 0d b9 46 14 20 20  20 2a 46 4f 52 4d 41 54  | ...F.   *FORMAT|
0001bb70  20 30 20 45 20 59 0d b9  50 42 20 20 20 f2 63 72  | 0 E Y..PB   .cr|
0001bb80  65 61 74 65 5f 64 69 72  73 28 a4 67 65 74 69 63  |eate_dirs(.getic|
0001bb90  6f 6e 64 61 74 61 28 73  65 74 75 70 68 2c 32 29  |ondata(setuph,2)|
0001bba0  2c a4 67 65 74 69 63 6f  6e 64 61 74 61 28 73 65  |,.geticondata(se|
0001bbb0  74 75 70 68 2c 35 29 29  0d b9 5a 05 cd 0d b9 64  |tuph,5))..Z....d|
0001bbc0  04 0d b9 6e 13 c8 8e 20  66 72 6f 6d 50 6c 61 63  |...n... fromPlac|
0001bbd0  65 25 20 ca 0d b9 78 23  c9 20 2d 39 39 3a 20 f4  |e% ...x#. -99: .|
0001bbe0  20 2a 2a 2a 20 61 20 70  72 6f 70 65 72 20 65 72  | *** a proper er|
0001bbf0  72 6f 72 20 2a 2a 2a 0d  b9 82 1f c9 20 30 3a e7  |ror ***..... 0:.|
0001bc00  20 6f 6b 20 8c 20 f2 73  61 76 65 5f 61 6c 6c 28  | ok . .save_all(|
0001bc10  70 61 74 68 24 29 0d b9  8c 3f c9 20 31 3a e7 20  |path$)...?. 1:. |
0001bc20  6f 6b 20 8c 20 f2 6c 6f  61 64 5f 61 6c 6c 28 70  |ok . .load_all(p|
0001bc30  61 74 68 24 29 3a f2 6f  70 65 6e 28 41 4c 50 53  |ath$):.open(ALPS|
0001bc40  6d 61 69 6e 2c 34 30 30  2c 38 30 30 2c 36 30 30  |main,400,800,600|
0001bc50  2c 36 30 30 29 0d b9 96  1b c9 20 32 3a e7 20 6f  |,600)..... 2:. o|
0001bc60  6b 20 8c 20 f2 63 72 65  61 74 65 5f 64 69 72 73  |k . .create_dirs|
0001bc70  0d b9 a0 0e c9 20 33 3a  e7 20 6f 6b 20 8c 0d b9  |..... 3:. ok ...|
0001bc80  aa 0b 71 75 69 74 25 3d  b9 0d b9 b4 43 c8 99 20  |..quit%=....C.. |
0001bc90  22 57 69 6d 70 5f 47 65  74 43 61 72 65 74 50 6f  |"Wimp_GetCaretPo|
0001bca0  73 69 74 69 6f 6e 22 2c  2c 71 75 69 74 62 6c 6b  |sition",,quitblk|
0001bcb0  2b 32 30 20 3a f4 20 46  69 6c 6c 20 75 70 20 66  |+20 :. Fill up f|
0001bcc0  69 72 73 74 20 35 20 77  6f 72 64 73 0d b9 be 3d  |irst 5 words...=|
0001bcd0  71 75 69 74 62 6c 6b 21  34 34 3d 26 31 46 43 20  |quitblk!44=&1FC |
0001bce0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0001bcf0  20 20 20 20 20 20 20 20  3a f4 20 43 54 52 4c 2d  |        :. CTRL-|
0001bd00  53 48 49 46 54 2d 66 31  32 0d b9 c8 44 21 71 75  |SHIFT-f12...D!qu|
0001bd10  69 74 62 6c 6b 3d 34 38  20 20 20 20 20 20 20 20  |itblk=48        |
0001bd20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0001bd30  20 20 20 20 20 3a f4 20  53 69 7a 65 20 6f 66 20  |     :. Size of |
0001bd40  6d 65 73 73 61 67 65 20  62 6c 6f 63 6b 0d b9 d2  |message block...|
0001bd50  10 71 75 69 74 62 6c 6b  21 31 32 3d 30 0d b9 dc  |.quitblk!12=0...|
0001bd60  47 71 75 69 74 62 6c 6b  21 31 36 3d 38 20 20 20  |Gquitblk!16=8   |
0001bd70  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0001bd80  20 20 20 20 20 20 20 20  20 3a f4 20 53 65 6e 64  |         :. Send|
0001bd90  20 4b 65 79 5f 50 72 65  73 73 65 64 20 6d 65 73  | Key_Pressed mes|
0001bda0  73 61 67 65 0d b9 e6 31  c8 99 20 22 57 69 6d 70  |sage...1.. "Wimp|
0001bdb0  5f 53 65 6e 64 4d 65 73  73 61 67 65 22 2c 31 37  |_SendMessage",17|
0001bdc0  2c 71 75 69 74 62 6c 6b  2c 70 72 65 71 75 69 74  |,quitblk,prequit|
0001bdd0  74 61 73 6b 25 0d b9 f0  05 cd 0d b9 fa 16 c9 20  |task%.......... |
0001bde0  34 3a e7 20 6f 6b 20 8c  20 71 75 69 74 25 3d b9  |4:. ok . quit%=.|
0001bdf0  0d ba 04 05 cb 0d ba 0e  0e 3d 64 69 61 6c 6f 67  |.........=dialog|
0001be00  75 65 25 0d ba 18 04 0d  ba 22 04 0d ba 2c 11 dd  |ue%......"...,..|
0001be10  20 a4 4f 53 5f 56 61 72  28 56 24 29 0d ba 36 2a  | .OS_Var(V$)..6*|
0001be20  c8 99 20 22 58 4f 53 5f  52 65 61 64 56 61 72 56  |.. "XOS_ReadVarV|
0001be30  61 6c 22 2c 56 24 2c 30  2c 2d 31 20 b8 20 2c 2c  |al",V$,0,-1 . ,,|
0001be40  65 78 69 73 74 73 0d ba  40 0b 3d 65 78 69 73 74  |exists..@.=exist|
0001be50  73 0d ba 4a 04 0d ba 54  15 dd 20 a4 52 65 61 64  |s..J...T.. .Read|
0001be60  56 61 72 56 61 6c 28 56  24 29 0d ba 5e 0d de 20  |VarVal(V$)..^.. |
0001be70  76 62 6c 6b 20 33 32 0d  ba 68 2e c8 99 20 22 58  |vblk 32..h... "X|
0001be80  4f 53 5f 52 65 61 64 56  61 72 56 61 6c 22 2c 56  |OS_ReadVarVal",V|
0001be90  24 2c 76 62 6c 6b 2c 33  32 2c 2c 30 2c 33 20 b8  |$,vblk,32,,0,3 .|
0001bea0  20 2c 2c 4e 25 0d ba 72  0e 76 62 6c 6b 3f 4e 25  | ,,N%..r.vblk?N%|
0001beb0  3d 31 33 0d ba 7c 0a 3d  24 76 62 6c 6b 0d ba 86  |=13..|.=$vblk...|
0001bec0  05 20 0d ba 90 26 dd 20  a4 69 63 6f 6e 62 61 72  |. ...&. .iconbar|
0001bed0  28 73 70 72 42 6c 6b 2c  20 73 70 6e 61 6d 65 24  |(sprBlk, spname$|
0001bee0  2c 20 78 78 2c 79 79 29  0d ba 9a 0d 21 71 42 6c  |, xx,yy)....!qBl|
0001bef0  6b 25 3d 2d 31 0d ba a4  33 71 42 6c 6b 25 21 34  |k%=-1...3qBlk%!4|
0001bf00  3d 30 3a 71 42 6c 6b 25  21 38 3d 30 3a 71 42 6c  |=0:qBlk%!8=0:qBl|
0001bf10  6b 25 21 31 32 3d 78 78  2a 32 3a 71 42 6c 6b 25  |k%!12=xx*2:qBlk%|
0001bf20  21 31 36 3d 79 79 2a 34  0d ba ae 12 71 42 6c 6b  |!16=yy*4....qBlk|
0001bf30  25 21 32 30 3d 26 32 31  30 32 0d ba b8 2f de 20  |%!20=&2102.../. |
0001bf40  71 42 6c 6b 25 21 32 34  20 28 a9 73 70 6e 61 6d  |qBlk%!24 (.spnam|
0001bf50  65 24 2b 31 29 3a 24 28  71 42 6c 6b 25 21 32 34  |e$+1):$(qBlk%!24|
0001bf60  29 3d 73 70 6e 61 6d 65  24 0d ba c2 13 71 42 6c  |)=spname$....qBl|
0001bf70  6b 25 21 32 38 3d 73 70  72 42 6c 6b 0d ba cc 17  |k%!28=sprBlk....|
0001bf80  71 42 6c 6b 25 21 33 32  3d a9 73 70 6e 61 6d 65  |qBlk%!32=.spname|
0001bf90  24 2b 31 0d ba d6 28 c8  99 20 22 57 69 6d 70 5f  |$+1...(.. "Wimp_|
0001bfa0  43 72 65 61 74 65 49 63  6f 6e 22 2c 2c 71 42 6c  |CreateIcon",,qBl|
0001bfb0  6b 25 20 b8 20 74 68 65  49 63 25 0d ba e0 0b 3d  |k% . theIc%....=|
0001bfc0  74 68 65 49 63 25 0d ba  ea 05 20 0d ba f4 05 20  |theIc%.... .... |
0001bfd0  0d ba fe 15 dd 20 f2 72  65 63 65 69 76 65 28 62  |..... .receive(b|
0001bfe0  6c 6f 63 6b 29 0d bb 08  10 72 65 66 25 3d 62 6c  |lock)....ref%=bl|
0001bff0  6f 63 6b 21 38 0d bb 12  11 c8 8e 20 62 6c 6f 63  |ock!8...... bloc|
0001c000  6b 21 31 36 20 ca 0d bb  1c 14 20 20 c9 20 30 20  |k!16 .....  . 0 |
0001c010  20 20 3a 71 75 69 74 25  3d b9 0d bb 26 2e 20 20  |  :quit%=...&.  |
0001c020  c9 20 32 20 20 20 3a f4  20 53 61 76 65 41 63 6b  |. 2   :. SaveAck|
0001c030  20 66 72 6f 6d 20 46 69  6c 65 72 2f 61 6e 6f 74  | from Filer/anot|
0001c040  68 65 72 20 61 70 70 2e  0d bb 30 25 20 20 20 20  |her app...0%    |
0001c050  20 20 20 20 20 20 20 20  70 61 74 68 24 3d a4 6e  |        path$=.n|
0001c060  61 6d 65 28 62 6c 6f 63  6b 2b 34 34 29 0d bb 3a  |ame(block+44)..:|
0001c070  20 20 20 20 20 20 20 20  20 20 20 20 20 f2 73 61  |             .sa|
0001c080  76 65 5f 61 6c 6c 28 70  61 74 68 24 29 0d bb 44  |ve_all(path$)..D|
0001c090  35 20 20 20 20 20 20 20  20 20 20 20 20 21 62 6c  |5            !bl|
0001c0a0  6f 63 6b 3d 36 34 3a 62  6c 6f 63 6b 21 31 32 3d  |ock=64:block!12=|
0001c0b0  62 6c 6f 63 6b 21 38 3a  62 6c 6f 63 6b 21 31 36  |block!8:block!16|
0001c0c0  3d 33 0d bb 4e 40 20 20  20 20 20 20 20 20 20 20  |=3..N@          |
0001c0d0  20 20 c8 99 20 22 57 69  6d 70 5f 53 65 6e 64 4d  |  .. "Wimp_SendM|
0001c0e0  65 73 73 61 67 65 22 2c  31 37 2c 62 6c 6f 63 6b  |essage",17,block|
0001c0f0  2c 62 6c 6f 63 6b 21 32  30 2c 62 6c 6f 63 6b 21  |,block!20,block!|
0001c100  32 34 0d bb 58 19 20 20  c9 20 33 2c 35 20 3a f2  |24..X.  . 3,5 :.|
0001c110  6c 6f 61 64 28 62 6c 6f  63 6b 29 0d bb 62 16 20  |load(block)..b. |
0001c120  20 c9 20 38 20 20 20 3a  f4 20 50 72 65 51 75 69  | . 8   :. PreQui|
0001c130  74 0d bb 6c 18 20 20 20  20 e7 20 ac 20 64 61 74  |t..l.    . . dat|
0001c140  61 5f 73 61 76 65 64 20  8c 0d bb 76 1c 20 20 20  |a_saved ...v.   |
0001c150  20 70 72 65 71 75 69 74  74 61 73 6b 25 3d 62 6c  | prequittask%=bl|
0001c160  6f 63 6b 21 34 0d bb 80  14 20 20 20 20 62 79 74  |ock!4....    byt|
0001c170  65 73 3d 21 62 6c 6f 63  6b 0d bb 8a 16 20 20 20  |es=!block....   |
0001c180  20 e3 20 49 25 3d 30 20  b8 20 62 79 74 65 73 0d  | . I%=0 . bytes.|
0001c190  bb 94 1b 20 20 20 20 71  75 69 74 62 6c 6b 21 49  |...    quitblk!I|
0001c1a0  25 3d 62 6c 6f 63 6b 21  49 25 0d bb 9e 09 20 20  |%=block!I%....  |
0001c1b0  20 20 ed 0d bb a8 1c 20  20 20 20 71 75 69 74 62  |  .....    quitb|
0001c1c0  6c 6b 21 31 32 3d 71 75  69 74 62 6c 6b 21 38 0d  |lk!12=quitblk!8.|
0001c1d0  bb b2 18 20 20 20 20 62  6c 6f 63 6b 21 31 32 3d  |...    block!12=|
0001c1e0  62 6c 6f 63 6b 21 38 0d  bb bc 26 20 20 20 20 c8  |block!8...&    .|
0001c1f0  99 20 22 57 69 6d 70 5f  53 65 6e 64 4d 65 73 73  |. "Wimp_SendMess|
0001c200  61 67 65 22 2c 31 39 2c  62 6c 6f 63 6b 0d bb c6  |age",19,block...|
0001c210  61 20 20 20 20 61 6e 73  20 3d 20 a4 65 72 72 6f  |a    ans = .erro|
0001c220  72 62 6f 78 28 22 54 68  65 72 65 20 69 73 20 75  |rbox("There is u|
0001c230  6e 73 61 76 65 64 20 64  61 74 61 20 69 6e 20 74  |nsaved data in t|
0001c240  68 65 20 6d 65 6d 6f 72  79 2e 20 44 6f 20 79 6f  |he memory. Do yo|
0001c250  75 20 72 65 61 6c 6c 79  20 77 61 6e 74 20 74 6f  |u really want to|
0001c260  20 71 75 69 74 3f 22 2c  30 2c 33 2c 33 29 0d bb  | quit?",0,3,3)..|
0001c270  d0 09 20 20 20 20 cd 0d  bb da 2b 20 20 c9 20 26  |..    ....+  . &|
0001c280  35 30 32 3a f2 68 65 6c  70 28 62 6c 6f 63 6b 21  |502:.help(block!|
0001c290  33 32 2c 62 6c 6f 63 6b  21 33 36 2c 62 6c 6f 63  |32,block!36,bloc|
0001c2a0  6b 29 0d bb e4 1c 20 20  c9 20 26 34 30 30 43 31  |k)....  . &400C1|
0001c2b0  3a f4 20 6d 6f 64 65 20  63 68 61 6e 67 65 0d bb  |:. mode change..|
0001c2c0  ee 0e 20 20 20 6d 6f 64  65 25 3d eb 0d bb f8 13  |..   mode%=.....|
0001c2d0  20 20 20 f2 67 65 74 6d  6f 64 65 69 6e 66 6f 0d  |   .getmodeinfo.|
0001c2e0  bc 02 44 20 20 20 f2 61  73 73 65 6d 62 6c 65 28  |..D   .assemble(|
0001c2f0  61 72 6d 63 6f 64 65 25  29 3a f4 20 4e 65 65 64  |armcode%):. Need|
0001c300  20 74 6f 20 61 6c 6c 6f  77 20 66 6f 72 20 64 69  | to allow for di|
0001c310  66 66 65 72 65 6e 74 20  73 63 72 65 65 6e 20 73  |fferent screen s|
0001c320  69 7a 65 0d bc 0c c8 20  20 20 e7 20 73 63 72 6e  |ize....   . scrn|
0001c330  73 69 7a 65 3e 6f 6c 64  73 69 7a 65 20 8c 20 6e  |size>oldsize . n|
0001c340  75 6c 6c 3d a4 65 72 72  6f 72 62 6f 78 28 22 57  |ull=.errorbox("W|
0001c350  61 72 6e 69 6e 67 21 20  49 74 20 6d 61 79 20 6e  |arning! It may n|
0001c360  6f 74 20 62 65 20 70 6f  73 73 69 62 6c 65 20 74  |ot be possible t|
0001c370  6f 20 64 69 73 70 6c 61  79 20 70 69 63 74 75 72  |o display pictur|
0001c380  65 73 20 69 6e 20 74 68  69 73 20 6d 6f 64 65 20  |es in this mode |
0001c390  64 75 65 20 74 6f 20 6d  65 6d 6f 72 79 20 72 65  |due to memory re|
0001c3a0  73 74 72 69 63 74 69 6f  6e 73 2e 20 54 6f 20 64  |strictions. To d|
0001c3b0  69 73 70 6c 61 79 20 70  69 63 74 75 72 65 73 20  |isplay pictures |
0001c3c0  71 75 69 74 20 41 4c 50  53 20 61 6e 64 20 72 65  |quit ALPS and re|
0001c3d0  73 74 61 72 74 20 69 6e  20 74 68 69 73 20 6d 6f  |start in this mo|
0001c3e0  64 65 2e 22 2c 30 2c 31  2c 35 29 0d bc 16 05 cb  |de.",0,1,5).....|
0001c3f0  0d bc 20 05 e1 0d bc 2a  04 0d bc 34 0e dd 20 f2  |.. ....*...4.. .|
0001c400  6c 6f 61 64 28 62 29 0d  bc 3e 18 6f 75 72 74 79  |load(b)..>.ourty|
0001c410  70 65 3d a0 28 22 26 22  2b 74 79 70 65 24 29 0d  |pe=.("&"+type$).|
0001c420  bc 48 16 e7 20 62 21 34  30 20 3d 20 6f 75 72 74  |.H.. b!40 = ourt|
0001c430  79 70 65 20 8c 0d bc 52  17 20 20 70 61 74 68 24  |ype ...R.  path$|
0001c440  3d a4 6e 61 6d 65 28 62  2b 34 34 29 0d bc 5c 16  |=.name(b+44)..\.|
0001c450  20 20 e7 20 ac 20 64 61  74 61 5f 73 61 76 65 64  |  . . data_saved|
0001c460  20 8c 0d bc 66 10 20 20  20 20 f2 4c 6f 61 64 41  | ...f.    .LoadA|
0001c470  63 6b 0d bc 70 5c 20 20  20 20 f2 65 6e 73 75 72  |ck..p\    .ensur|
0001c480  65 28 31 2c 22 55 6e 73  61 76 65 64 20 64 61 74  |e(1,"Unsaved dat|
0001c490  61 20 69 6e 20 6d 65 6d  6f 72 79 2e 20 50 6c 65  |a in memory. Ple|
0001c4a0  61 73 65 20 63 6f 6e 66  69 72 6d 20 74 68 61 74  |ase confirm that|
0001c4b0  20 79 6f 75 20 77 61 6e  74 20 74 6f 20 6c 6f 61  | you want to loa|
0001c4c0  64 20 74 68 69 73 20 66  69 6c 65 2e 22 29 0d bc  |d this file.")..|
0001c4d0  7a 09 20 20 20 20 cc 0d  bc 84 41 20 20 20 20 f4  |z.    ....A    .|
0001c4e0  20 43 6f 70 79 20 27 62  6c 6f 63 6b 27 20 74 6f  | Copy 'block' to|
0001c4f0  20 70 72 65 73 65 72 76  65 20 27 4c 6f 61 64 27  | preserve 'Load'|
0001c500  20 6d 65 73 73 61 67 65  20 64 61 74 61 20 2d 20  | message data - |
0001c510  31 32 2e 30 34 2e 39 30  0d bc 8e 19 20 20 20 20  |12.04.90....    |
0001c520  e3 20 49 25 3d 30 20 b8  20 26 32 30 30 20 88 20  |. I%=0 . &200 . |
0001c530  34 0d bc 98 16 20 20 20  20 62 6c 6f 63 6b 32 21  |4....    block2!|
0001c540  49 25 3d 62 21 49 25 0d  bc a2 09 20 20 20 20 ed  |I%=b!I%....    .|
0001c550  0d bc ac 18 20 20 20 20  f2 6c 6f 61 64 5f 61 6c  |....    .load_al|
0001c560  6c 28 70 61 74 68 24 29  0d bc b6 17 20 20 20 20  |l(path$)....    |
0001c570  f4 20 52 65 73 74 6f 72  65 20 62 6c 6f 63 6b 0d  |. Restore block.|
0001c580  bc c0 19 20 20 20 20 e3  20 49 25 3d 30 20 b8 20  |...    . I%=0 . |
0001c590  26 32 30 30 20 88 20 34  0d bc ca 16 20 20 20 20  |&200 . 4....    |
0001c5a0  62 21 49 25 3d 62 6c 6f  63 6b 32 21 49 25 0d bc  |b!I%=block2!I%..|
0001c5b0  d4 09 20 20 20 20 ed 0d  bc de 10 20 20 20 20 f2  |..    .....    .|
0001c5c0  4c 6f 61 64 41 63 6b 0d  bc e8 27 20 20 20 20 f2  |LoadAck...'    .|
0001c5d0  6f 70 65 6e 28 41 4c 50  53 6d 61 69 6e 2c 34 30  |open(ALPSmain,40|
0001c5e0  30 2c 38 30 30 2c 36 30  30 2c 36 30 30 29 0d bc  |0,800,600,600)..|
0001c5f0  f2 07 20 20 cd 0d bc fc  05 cd 0d bd 06 05 e1 0d  |..  ............|
0001c600  bd 10 04 0d bd 1a 0e dd  20 f2 4c 6f 61 64 41 63  |........ .LoadAc|
0001c610  6b 0d bd 24 29 62 6c 6f  63 6b 21 31 32 3d 62 6c  |k..$)block!12=bl|
0001c620  6f 63 6b 21 38 3a 62 6c  6f 63 6b 21 31 36 3d 34  |ock!8:block!16=4|
0001c630  3a 21 62 6c 6f 63 6b 3d  36 34 0d bd 2e 2a c8 99  |:!block=64...*..|
0001c640  20 22 57 69 6d 70 5f 53  65 6e 64 4d 65 73 73 61  | "Wimp_SendMessa|
0001c650  67 65 22 2c 31 37 2c 62  6c 6f 63 6b 2c 62 6c 6f  |ge",17,block,blo|
0001c660  63 6b 21 34 0d bd 38 05  e1 0d bd 42 04 0d bd 4c  |ck!4..8....B...L|
0001c670  0b dd 20 f2 73 61 76 65  0d bd 56 24 70 61 74 68  |.. .save..V$path|
0001c680  24 3d a4 67 65 74 69 63  6f 6e 64 61 74 61 28 73  |$=.geticondata(s|
0001c690  61 76 65 68 61 6e 64 6c  65 2c 32 29 0d bd 60 0f  |avehandle,2)..`.|
0001c6a0  f2 67 65 74 70 6f 69 6e  74 65 72 0d bd 6a 34 62  |.getpointer..j4b|
0001c6b0  6c 6f 63 6b 21 32 30 3d  36 34 3a 62 6c 6f 63 6b  |lock!20=64:block|
0001c6c0  21 33 32 3d 30 3a 62 6c  6f 63 6b 21 33 36 3d 31  |!32=0:block!36=1|
0001c6d0  3a f4 20 44 61 74 61 53  61 76 65 20 4d 53 47 0d  |:. DataSave MSG.|
0001c6e0  bd 74 45 62 6c 6f 63 6b  21 34 30 3d 68 61 6e 64  |.tEblock!40=hand|
0001c6f0  6c 65 25 3a 62 6c 6f 63  6b 21 34 34 3d 69 63 6f  |le%:block!44=ico|
0001c700  6e 25 3a 62 6c 6f 63 6b  21 34 38 3d 6d 6f 75 73  |n%:block!48=mous|
0001c710  65 78 25 3a 62 6c 6f 63  6b 21 35 32 3d 6d 6f 75  |ex%:block!52=mou|
0001c720  73 65 79 25 0d bd 7e 2e  62 6c 6f 63 6b 21 35 36  |sey%..~.block!56|
0001c730  3d 31 30 30 30 30 3a f4  20 45 73 74 69 6d 61 74  |=10000:. Estimat|
0001c740  65 64 20 73 69 7a 65 20  6f 66 20 64 61 74 61 3f  |ed size of data?|
0001c750  3f 3f 0d bd 88 25 62 6c  6f 63 6b 21 36 30 3d a0  |??...%block!60=.|
0001c760  28 22 26 22 2b 74 79 70  65 24 29 3a f4 20 46 69  |("&"+type$):. Fi|
0001c770  6c 65 20 74 79 70 65 0d  bd 92 23 24 28 62 6c 6f  |le type...#$(blo|
0001c780  63 6b 2b 36 34 29 3d a4  6c 65 61 66 6e 61 6d 65  |ck+64)=.leafname|
0001c790  28 70 61 74 68 24 29 2b  bd 30 0d bd 9c 33 c8 99  |(path$)+.0...3..|
0001c7a0  20 22 57 69 6d 70 5f 53  65 6e 64 4d 65 73 73 61  | "Wimp_SendMessa|
0001c7b0  67 65 22 2c 31 37 2c 62  6c 6f 63 6b 2b 32 30 2c  |ge",17,block+20,|
0001c7c0  68 61 6e 64 6c 65 25 2c  69 63 6f 6e 25 0d bd a6  |handle%,icon%...|
0001c7d0  05 e1 0d bd b0 04 0d bd  ba 11 dd 20 a4 6e 61 6d  |........... .nam|
0001c7e0  65 28 69 6e 64 78 29 0d  bd c4 0f ea 20 66 24 2c  |e(indx)..... f$,|
0001c7f0  67 24 2c 70 2c 69 0d bd  ce 04 0d bd d8 0f c8 95  |g$,p,i..........|
0001c800  20 3f 69 6e 64 78 3c 3e  30 0d bd e2 18 66 24 2b  | ?indx<>0....f$+|
0001c810  3d bd 28 3f 69 6e 64 78  29 3a 69 6e 64 78 2b 3d  |=.(?indx):indx+=|
0001c820  31 0d bd ec 05 ce 0d bd  f6 07 3d 66 24 0d be 00  |1.........=f$...|
0001c830  04 0d be 0a 13 dd 20 a4  6c 65 61 66 6e 61 6d 65  |...... .leafname|
0001c840  28 66 24 29 0d be 14 07  70 3d 31 0d be 1e 05 f5  |(f$)....p=1.....|
0001c850  0d be 28 28 69 3d a7 66  24 2c 22 2e 22 29 3a e7  |..((i=.f$,"."):.|
0001c860  20 69 3c 3e 30 20 70 3d  69 2b 31 3a c1 66 24 2c  | i<>0 p=i+1:.f$,|
0001c870  69 2c 31 29 3d 22 23 22  0d be 32 09 fd 20 69 3d  |i,1)="#"..2.. i=|
0001c880  30 0d be 3c 0d 66 24 3d  c1 66 24 2c 70 29 0d be  |0..<.f$=.f$,p)..|
0001c890  46 07 3d 66 24 0d be 50  04 0d be 5a 14 dd 20 a4  |F.=f$..P...Z.. .|
0001c8a0  74 69 63 6b 5f 6f 62 6a  65 63 74 65 64 0d be 64  |tick_objected..d|
0001c8b0  27 66 6c 61 67 73 25 3d  bb 28 a4 67 65 74 69 63  |'flags%=.(.getic|
0001c8c0  6f 6e 64 61 74 61 28 6f  62 6a 68 61 6e 64 6c 65  |ondata(objhandle|
0001c8d0  2c 38 29 29 0d be 6e 14  e3 20 66 6c 25 3d 37 20  |,8))..n.. fl%=7 |
0001c8e0  b8 20 30 20 88 20 2d 31  0d be 78 1a 20 20 66 6c  |. 0 . -1..x.  fl|
0001c8f0  61 67 25 3d 66 6c 61 67  73 25 20 81 20 32 5e 66  |ag%=flags% . 2^f|
0001c900  6c 25 0d be 82 1b 20 20  66 6c 61 67 73 25 3d 66  |l%....  flags%=f|
0001c910  6c 61 67 73 25 20 83 20  32 5e 66 6c 25 0d be 8c  |lags% . 2^fl%...|
0001c920  23 20 20 70 74 72 3d 28  6d 5f 6f 62 6a 66 6c 61  |#  ptr=(m_objfla|
0001c930  67 2b 32 38 2b 28 37 2d  66 6c 25 29 2a 32 34 29  |g+28+(7-fl%)*24)|
0001c940  0d be 96 11 20 20 e7 20  66 6c 61 67 25 3d 31 20  |....  . flag%=1 |
0001c950  8c 0d be a0 15 20 20 20  20 3f 70 74 72 3d 3f 70  |.....    ?ptr=?p|
0001c960  74 72 20 84 20 31 0d be  aa 1d 20 20 cc 20 3f 70  |tr . 1....  . ?p|
0001c970  74 72 3d 3f 70 74 72 20  80 20 25 31 31 31 31 31  |tr=?ptr . %11111|
0001c980  31 31 30 0d be b4 07 20  20 cd 0d be be 09 ed 20  |110....  ...... |
0001c990  66 6c 25 0d be c8 06 3d  30 0d be d2 04 0d be dc  |fl%....=0.......|
0001c9a0  13 dd 20 a4 74 69 63 6b  5f 6d 65 73 73 61 67 65  |.. .tick_message|
0001c9b0  0d be e6 0b 20 20 70 74  72 3d 30 0d be f0 15 20  |....  ptr=0.... |
0001c9c0  20 e3 20 49 25 3d 31 20  b8 20 6d 61 78 73 77 25  | . I%=1 . maxsw%|
0001c9d0  0d be fa 29 20 20 20 20  24 28 73 77 64 61 74 61  |...)    $(swdata|
0001c9e0  25 2b 70 74 72 29 3d c3  28 73 77 69 74 63 68 5f  |%+ptr)=.(switch_|
0001c9f0  76 61 6c 73 28 49 25 29  29 0d bf 04 0f 20 20 20  |vals(I%))....   |
0001ca00  20 70 74 72 2b 3d 31 32  0d bf 0e 1d 20 20 20 20  | ptr+=12....    |
0001ca10  e7 20 49 25 3e 73 77 69  74 63 68 5f 76 61 6c 73  |. I%>switch_vals|
0001ca20  28 30 29 20 8c 0d bf 18  3d 20 20 20 20 20 20 3f  |(0) ....=      ?|
0001ca30  28 6d 5f 73 77 69 74 63  68 25 2b 32 38 2b 32 34  |(m_switch%+28+24|
0001ca40  2a 49 25 29 3d 28 3f 28  6d 5f 73 77 69 74 63 68  |*I%)=(?(m_switch|
0001ca50  25 2b 32 38 2b 32 34 2a  49 25 29 20 80 20 26 46  |%+28+24*I%) . &F|
0001ca60  45 29 0d bf 22 09 20 20  20 20 cc 0d bf 2c 3b 20  |E)..".    ...,; |
0001ca70  20 20 20 20 20 3f 28 6d  5f 73 77 69 74 63 68 25  |     ?(m_switch%|
0001ca80  2b 32 38 2b 32 34 2a 49  25 29 3d 28 3f 28 6d 5f  |+28+24*I%)=(?(m_|
0001ca90  73 77 69 74 63 68 25 2b  32 38 2b 32 34 2a 49 25  |switch%+28+24*I%|
0001caa0  29 20 84 20 31 29 0d bf  36 09 20 20 20 20 cd 0d  |) . 1)..6.    ..|
0001cab0  bf 40 07 20 20 ed 0d bf  4a 4b f4 20 20 24 28 6d  |.@.  ...JK.  $(m|
0001cac0  5f 74 65 78 74 25 2b 35  29 3d 53 54 52 24 28 6d  |_text%+5)=STR$(m|
0001cad0  70 74 72 29 20 2d 20 4e  6f 74 20 6e 65 65 64 65  |ptr) - Not neede|
0001cae0  64 20 6e 6f 77 20 6d 73  67 23 20 69 73 20 69 6e  |d now msg# is in|
0001caf0  20 77 69 6e 64 6f 77 20  74 69 74 6c 65 20 62 61  | window title ba|
0001cb00  72 0d bf 54 6b 20 20 e7  20 73 77 69 74 63 68 5f  |r..Tk  . switch_|
0001cb10  76 61 6c 73 28 30 29 3c  3e 30 20 8c 20 3f 28 6d  |vals(0)<>0 . ?(m|
0001cb20  5f 73 77 69 74 63 68 25  2b 32 38 29 3d 28 3f 28  |_switch%+28)=(?(|
0001cb30  6d 5f 73 77 69 74 63 68  25 2b 32 38 29 20 80 20  |m_switch%+28) . |
0001cb40  26 46 45 29 20 8b 20 3f  28 6d 5f 73 77 69 74 63  |&FE) . ?(m_switc|
0001cb50  68 25 2b 32 38 29 3d 28  3f 28 6d 5f 73 77 69 74  |h%+28)=(?(m_swit|
0001cb60  63 68 25 2b 32 38 29 20  84 20 31 29 0d bf 5e 13  |ch%+28) . 1)..^.|
0001cb70  20 20 e7 20 6f 76 65 72  77 72 69 74 65 20 8c 0d  |  . overwrite ..|
0001cb80  bf 68 2d 20 20 20 20 3f  28 6d 5f 74 65 78 74 25  |.h-    ?(m_text%|
0001cb90  2b 32 38 2b 32 34 29 3d  3f 28 6d 5f 74 65 78 74  |+28+24)=?(m_text|
0001cba0  25 2b 32 38 2b 32 34 29  20 84 20 31 0d bf 72 29  |%+28+24) . 1..r)|
0001cbb0  20 20 20 20 3f 28 6d 5f  74 65 78 74 25 2b 32 38  |    ?(m_text%+28|
0001cbc0  29 3d 3f 28 6d 5f 74 65  78 74 25 2b 32 38 29 20  |)=?(m_text%+28) |
0001cbd0  80 20 26 46 45 0d bf 7c  07 20 20 cc 0d bf 86 2f  |. &FE..|.  ..../|
0001cbe0  20 20 20 20 3f 28 6d 5f  74 65 78 74 25 2b 32 38  |    ?(m_text%+28|
0001cbf0  2b 32 34 29 3d 3f 28 6d  5f 74 65 78 74 25 2b 32  |+24)=?(m_text%+2|
0001cc00  38 2b 32 34 29 20 80 20  26 46 45 0d bf 90 27 20  |8+24) . &FE...' |
0001cc10  20 20 20 3f 28 6d 5f 74  65 78 74 25 2b 32 38 29  |   ?(m_text%+28)|
0001cc20  3d 3f 28 6d 5f 74 65 78  74 25 2b 32 38 29 20 84  |=?(m_text%+28) .|
0001cc30  20 31 0d bf 9a 07 20 20  cd 0d bf a4 06 3d 30 0d  | 1....  .....=0.|
0001cc40  bf ae 04 0d bf b8 13 dd  20 a4 74 69 63 6b 5f 70  |........ .tick_p|
0001cc50  72 6f 67 72 61 6d 0d bf  c2 13 20 20 e7 20 6f 76  |rogram....  . ov|
0001cc60  65 72 77 72 69 74 65 20  8c 0d bf cc 2d 20 20 20  |erwrite ....-   |
0001cc70  20 3f 28 6d 5f 70 72 6f  67 25 2b 32 38 2b 32 34  | ?(m_prog%+28+24|
0001cc80  29 3d 3f 28 6d 5f 70 72  6f 67 25 2b 32 38 2b 32  |)=?(m_prog%+28+2|
0001cc90  34 29 20 84 20 31 0d bf  d6 29 20 20 20 20 3f 28  |4) . 1...)    ?(|
0001cca0  6d 5f 70 72 6f 67 25 2b  32 38 29 3d 3f 28 6d 5f  |m_prog%+28)=?(m_|
0001ccb0  70 72 6f 67 25 2b 32 38  29 20 80 20 26 46 45 0d  |prog%+28) . &FE.|
0001ccc0  bf e0 07 20 20 cc 0d bf  ea 2f 20 20 20 20 3f 28  |...  ..../    ?(|
0001ccd0  6d 5f 70 72 6f 67 25 2b  32 38 2b 32 34 29 3d 3f  |m_prog%+28+24)=?|
0001cce0  28 6d 5f 70 72 6f 67 25  2b 32 38 2b 32 34 29 20  |(m_prog%+28+24) |
0001ccf0  80 20 26 46 45 0d bf f4  27 20 20 20 20 3f 28 6d  |. &FE...'    ?(m|
0001cd00  5f 70 72 6f 67 25 2b 32  38 29 3d 3f 28 6d 5f 70  |_prog%+28)=?(m_p|
0001cd10  72 6f 67 25 2b 32 38 29  20 84 20 31 0d bf fe 07  |rog%+28) . 1....|
0001cd20  20 20 cd 0d c0 08 1f 20  20 e7 20 28 6c 69 73 74  |  .....  . (list|
0001cd30  6f 70 74 69 6f 6e 20 80  20 25 31 30 29 3c 3e 30  |option . %10)<>0|
0001cd40  20 8c 0d c0 12 33 20 20  20 20 3f 28 6d 5f 6c 69  | ....3    ?(m_li|
0001cd50  73 74 6f 70 74 73 2b 32  38 2b 32 34 29 3d 3f 28  |stopts+28+24)=?(|
0001cd60  6d 5f 6c 69 73 74 6f 70  74 73 2b 32 38 2b 32 34  |m_listopts+28+24|
0001cd70  29 20 84 20 31 0d c0 1c  2f 20 20 20 20 3f 28 6d  |) . 1.../    ?(m|
0001cd80  5f 6c 69 73 74 6f 70 74  73 2b 32 38 29 3d 3f 28  |_listopts+28)=?(|
0001cd90  6d 5f 6c 69 73 74 6f 70  74 73 2b 32 38 29 20 80  |m_listopts+28) .|
0001cda0  20 26 46 45 0d c0 26 07  20 20 cc 0d c0 30 35 20  | &FE..&.  ...05 |
0001cdb0  20 20 20 3f 28 6d 5f 6c  69 73 74 6f 70 74 73 2b  |   ?(m_listopts+|
0001cdc0  32 38 2b 32 34 29 3d 3f  28 6d 5f 6c 69 73 74 6f  |28+24)=?(m_listo|
0001cdd0  70 74 73 2b 32 38 2b 32  34 29 20 80 20 26 46 45  |pts+28+24) . &FE|
0001cde0  0d c0 3a 2d 20 20 20 20  3f 28 6d 5f 6c 69 73 74  |..:-    ?(m_list|
0001cdf0  6f 70 74 73 2b 32 38 29  3d 3f 28 6d 5f 6c 69 73  |opts+28)=?(m_lis|
0001ce00  74 6f 70 74 73 2b 32 38  29 20 84 20 31 0d c0 44  |topts+28) . 1..D|
0001ce10  07 20 20 cd 0d c0 4e 06  3d 30 0d c0 58 04 0d c0  |.  ...N.=0..X...|
0001ce20  62 11 dd 20 a4 74 69 63  6b 5f 76 6f 63 61 62 0d  |b.. .tick_vocab.|
0001ce30  c0 6c 13 20 20 e7 20 6f  76 65 72 77 72 69 74 65  |.l.  . overwrite|
0001ce40  20 8c 0d c0 76 2f 20 20  20 20 3f 28 6d 5f 76 6f  | ...v/    ?(m_vo|
0001ce50  63 61 62 25 2b 32 38 2b  32 34 29 3d 3f 28 6d 5f  |cab%+28+24)=?(m_|
0001ce60  76 6f 63 61 62 25 2b 32  38 2b 32 34 29 20 84 20  |vocab%+28+24) . |
0001ce70  31 0d c0 80 2b 20 20 20  20 3f 28 6d 5f 76 6f 63  |1...+    ?(m_voc|
0001ce80  61 62 25 2b 32 38 29 3d  3f 28 6d 5f 76 6f 63 61  |ab%+28)=?(m_voca|
0001ce90  62 25 2b 32 38 29 20 80  20 26 46 45 0d c0 8a 07  |b%+28) . &FE....|
0001cea0  20 20 cc 0d c0 94 31 20  20 20 20 3f 28 6d 5f 76  |  ....1    ?(m_v|
0001ceb0  6f 63 61 62 25 2b 32 38  2b 32 34 29 3d 3f 28 6d  |ocab%+28+24)=?(m|
0001cec0  5f 76 6f 63 61 62 25 2b  32 38 2b 32 34 29 20 80  |_vocab%+28+24) .|
0001ced0  20 26 46 45 0d c0 9e 29  20 20 20 20 3f 28 6d 5f  | &FE...)    ?(m_|
0001cee0  76 6f 63 61 62 25 2b 32  38 29 3d 3f 28 6d 5f 76  |vocab%+28)=?(m_v|
0001cef0  6f 63 61 62 25 2b 32 38  29 20 84 20 31 0d c0 a8  |ocab%+28) . 1...|
0001cf00  07 20 20 cd 0d c0 b2 10  20 20 e3 20 49 25 3d 31  |.  .....  . I%=1|
0001cf10  20 b8 20 37 0d c0 bc 18  20 20 20 20 e7 20 49 25  | . 7....    . I%|
0001cf20  3d 76 6f 63 5f 73 65 63  74 25 20 8c 0d c0 c6 3f  |=voc_sect% ....?|
0001cf30  20 20 20 20 20 20 3f 28  6d 5f 76 6f 63 61 62 25  |      ?(m_vocab%|
0001cf40  2b 32 38 2b 32 34 2a 28  49 25 2b 34 29 29 3d 3f  |+28+24*(I%+4))=?|
0001cf50  28 6d 5f 76 6f 63 61 62  25 2b 32 38 2b 32 34 2a  |(m_vocab%+28+24*|
0001cf60  28 49 25 2b 34 29 29 20  84 20 31 0d c0 d0 09 20  |(I%+4)) . 1.... |
0001cf70  20 20 20 cc 0d c0 da 41  20 20 20 20 20 20 3f 28  |   ....A      ?(|
0001cf80  6d 5f 76 6f 63 61 62 25  2b 32 38 2b 32 34 2a 28  |m_vocab%+28+24*(|
0001cf90  49 25 2b 34 29 29 3d 3f  28 6d 5f 76 6f 63 61 62  |I%+4))=?(m_vocab|
0001cfa0  25 2b 32 38 2b 32 34 2a  28 49 25 2b 34 29 29 20  |%+28+24*(I%+4)) |
0001cfb0  80 20 26 46 45 0d c0 e4  09 20 20 20 20 cd 0d c0  |. &FE....    ...|
0001cfc0  ee 0a 20 20 ed 20 49 25  0d c0 f8 06 3d 30 0d c1  |..  . I%....=0..|
0001cfd0  02 04 0d c1 0c 04 0d c1  16 0c dd 20 a4 74 69 63  |........... .tic|
0001cfe0  6b 5f 0d c1 20 06 3d 30  0d c1 2a 04 0d c1 34 04  |k_.. .=0..*...4.|
0001cff0  0d c1 3e 14 dd 20 a4 74  69 63 6b 5f 72 6f 6f 6d  |..>.. .tick_room|
0001d000  65 64 69 74 0d c1 48 32  f4 20 46 69 72 73 74 20  |edit..H2. First |
0001d010  73 65 74 20 74 68 65 20  27 74 69 63 6b 27 20 62  |set the 'tick' b|
0001d020  69 74 73 20 66 6f 72 20  65 61 63 68 20 6d 65 6e  |its for each men|
0001d030  75 20 69 74 65 6d 0d c1  52 29 66 6c 61 67 73 25  |u item..R)flags%|
0001d040  3d bb 28 a4 67 65 74 69  63 6f 6e 64 61 74 61 28  |=.(.geticondata(|
0001d050  72 6f 6f 6d 68 61 6e 64  6c 65 2c 33 34 29 29 0d  |roomhandle,34)).|
0001d060  c1 5c 14 e3 20 66 6c 25  3d 37 20 b8 20 30 20 88  |.\.. fl%=7 . 0 .|
0001d070  20 2d 31 0d c1 66 1a 20  20 66 6c 61 67 25 3d 66  | -1..f.  flag%=f|
0001d080  6c 61 67 73 25 20 81 20  32 5e 66 6c 25 0d c1 70  |lags% . 2^fl%..p|
0001d090  1b 20 20 66 6c 61 67 73  25 3d 66 6c 61 67 73 25  |.  flags%=flags%|
0001d0a0  20 83 20 32 5e 66 6c 25  0d c1 7a 22 20 20 70 74  | . 2^fl%..z"  pt|
0001d0b0  72 3d 28 6d 5f 72 6d 66  6c 61 67 2b 32 38 2b 28  |r=(m_rmflag+28+(|
0001d0c0  37 2d 66 6c 25 29 2a 32  34 29 0d c1 84 11 20 20  |7-fl%)*24)....  |
0001d0d0  e7 20 66 6c 61 67 25 3d  31 20 8c 0d c1 8e 15 20  |. flag%=1 ..... |
0001d0e0  20 20 20 3f 70 74 72 3d  3f 70 74 72 20 84 20 31  |   ?ptr=?ptr . 1|
0001d0f0  0d c1 98 1d 20 20 cc 20  3f 70 74 72 3d 3f 70 74  |....  . ?ptr=?pt|
0001d100  72 20 80 20 25 31 31 31  31 31 31 31 30 0d c1 a2  |r . %11111110...|
0001d110  07 20 20 cd 0d c1 ac 09  ed 20 66 6c 25 0d c1 b6  |.  ...... fl%...|
0001d120  06 3d 30 0d c1 c0 04 0d  c1 ca 04 0d c1 d4 14 dd  |.=0.............|
0001d130  20 a4 74 69 63 6b 5f 65  78 69 74 65 64 69 74 0d  | .tick_exitedit.|
0001d140  c1 de 32 f4 20 46 69 72  73 74 20 73 65 74 20 74  |..2. First set t|
0001d150  68 65 20 27 74 69 63 6b  27 20 62 69 74 73 20 66  |he 'tick' bits f|
0001d160  6f 72 20 65 61 63 68 20  6d 65 6e 75 20 69 74 65  |or each menu ite|
0001d170  6d 0d c1 e8 2a 66 6c 61  67 73 25 3d 3f 28 72 64  |m...*flags%=?(rd|
0001d180  61 74 61 25 2b 72 70 74  72 2a 72 5f 6c 65 6e 2b  |ata%+rptr*r_len+|
0001d190  6f 6c 64 72 6d 69 63 6f  6e 25 29 0d c1 f2 14 e3  |oldrmicon%).....|
0001d1a0  20 66 6c 25 3d 37 20 b8  20 30 20 88 20 2d 31 0d  | fl%=7 . 0 . -1.|
0001d1b0  c1 fc 1a 20 20 66 6c 61  67 25 3d 66 6c 61 67 73  |...  flag%=flags|
0001d1c0  25 20 81 20 32 5e 66 6c  25 0d c2 06 1b 20 20 66  |% . 2^fl%....  f|
0001d1d0  6c 61 67 73 25 3d 66 6c  61 67 73 25 20 83 20 32  |lags%=flags% . 2|
0001d1e0  5e 66 6c 25 0d c2 10 21  20 20 70 74 72 3d 28 6d  |^fl%...!  ptr=(m|
0001d1f0  5f 65 78 69 74 66 2b 32  38 2b 28 37 2d 66 6c 25  |_exitf+28+(7-fl%|
0001d200  29 2a 32 34 29 0d c2 1a  11 20 20 e7 20 66 6c 61  |)*24)....  . fla|
0001d210  67 25 3d 31 20 8c 0d c2  24 15 20 20 20 20 3f 70  |g%=1 ...$.    ?p|
0001d220  74 72 3d 3f 70 74 72 20  84 20 31 0d c2 2e 1d 20  |tr=?ptr . 1.... |
0001d230  20 cc 20 3f 70 74 72 3d  3f 70 74 72 20 80 20 25  | . ?ptr=?ptr . %|
0001d240  31 31 31 31 31 31 31 30  0d c2 38 07 20 20 cd 0d  |11111110..8.  ..|
0001d250  c2 42 09 ed 20 66 6c 25  0d c2 4c 06 3d 30 0d c2  |.B.. fl%..L.=0..|
0001d260  56 04 0d c2 60 04 0d c2  6a 12 dd 20 a4 62 75 74  |V...`...j.. .but|
0001d270  74 6f 6e 5f 6d 69 73 63  0d c2 74 19 69 63 6f 6e  |ton_misc..t.icon|
0001d280  25 28 54 48 45 6d 69 73  63 69 63 6f 6e 29 3d 2d  |%(THEmiscicon)=-|
0001d290  31 0d c2 7e 06 3d 30 0d  c2 88 04 0d c2 92 04 0d  |1..~.=0.........|
0001d2a0  c2 9c 10 dd 20 a4 74 69  63 6b 5f 6d 69 73 63 0d  |.... .tick_misc.|
0001d2b0  c2 a6 1b 20 20 20 70 74  72 3d 28 6d 69 73 63 6d  |...   ptr=(miscm|
0001d2c0  65 6e 75 2b 32 38 2b 34  38 29 0d c2 b0 14 20 20  |enu+28+48)....  |
0001d2d0  20 e7 20 64 61 74 61 76  61 6c 69 64 20 8c 0d c2  | . datavalid ...|
0001d2e0  ba 19 20 20 20 20 20 20  3f 70 74 72 20 3d 20 3f  |..      ?ptr = ?|
0001d2f0  70 74 72 20 84 20 31 0d  c2 c4 08 20 20 20 cc 0d  |ptr . 1....   ..|
0001d300  c2 ce 21 20 20 20 20 20  20 3f 70 74 72 20 3d 20  |..!      ?ptr = |
0001d310  3f 70 74 72 20 80 20 25  31 31 31 31 31 31 31 30  |?ptr . %11111110|
0001d320  0d c2 d8 08 20 20 20 cd  0d c2 e2 06 3d 30 0d c2  |....   .....=0..|
0001d330  ec 04 0d c2 f6 04 0d c3  00 12 dd 20 f2 68 65 6c  |........... .hel|
0001d340  70 28 77 2c 68 2c 62 29  0d c3 0a 0b ea 20 68 65  |p(w,h,b)..... he|
0001d350  6c 70 24 0d c3 14 0a c8  8e 20 77 20 ca 0d c3 1e  |lp$...... w ....|
0001d360  96 c9 20 2d 32 3a 68 65  6c 70 24 3d 22 54 68 69  |.. -2:help$="Thi|
0001d370  73 20 69 73 20 74 68 65  20 41 4c 50 53 20 69 63  |s is the ALPS ic|
0001d380  6f 6e 2e 7c 4d 43 6c 69  63 6b 20 53 45 4c 45 43  |on.|MClick SELEC|
0001d390  54 20 74 6f 20 63 68 6f  6f 73 65 20 61 6e 20 65  |T to choose an e|
0001d3a0  64 69 74 6f 72 2e 7c 4d  43 6c 69 63 6b 20 4d 45  |ditor.|MClick ME|
0001d3b0  4e 55 20 74 6f 20 71 75  69 74 2e 7c 4d 44 72 61  |NU to quit.|MDra|
0001d3c0  67 20 61 6e 20 27 41 6c  70 73 27 20 66 69 6c 65  |g an 'Alps' file|
0001d3d0  20 69 63 6f 6e 20 74 6f  20 74 68 65 20 41 4c 50  | icon to the ALP|
0001d3e0  53 20 69 63 6f 6e 20 74  6f 20 6c 6f 61 64 20 69  |S icon to load i|
0001d3f0  74 2e 22 0d c3 28 0e c9  20 41 4c 50 53 6d 61 69  |t."..(.. ALPSmai|
0001d400  6e 0d c3 32 25 68 65 6c  70 24 3d 22 43 6c 69 63  |n..2%help$="Clic|
0001d410  6b 20 53 45 4c 45 43 54  20 74 6f 20 6f 70 65 6e  |k SELECT to open|
0001d420  20 74 68 65 20 22 0d c3  3c 0a c8 8e 20 68 20 ca  | the "..<... h .|
0001d430  0d c3 46 4e c9 20 30 3a  68 65 6c 70 24 3d 22 43  |..FN. 0:help$="C|
0001d440  6c 69 63 6b 20 53 45 4c  45 43 54 20 74 6f 20 53  |lick SELECT to S|
0001d450  61 76 65 20 66 69 6c 65  73 20 6f 72 20 53 65 74  |ave files or Set|
0001d460  20 75 70 20 61 20 64 69  73 6b 20 66 6f 72 20 75  | up a disk for u|
0001d470  73 65 20 77 69 74 68 20  41 4c 50 53 2e 22 0d c3  |se with ALPS."..|
0001d480  50 46 c9 20 31 3a 68 65  6c 70 24 3d 22 43 6c 69  |PF. 1:help$="Cli|
0001d490  63 6b 20 53 45 4c 45 43  54 20 74 6f 20 64 69 73  |ck SELECT to dis|
0001d4a0  70 6c 61 79 20 74 68 65  20 41 4c 50 53 20 76 61  |play the ALPS va|
0001d4b0  72 69 61 62 6c 65 73 20  61 6e 64 20 73 74 61 74  |riables and stat|
0001d4c0  75 73 2e 22 0d c3 5a 71  c9 20 32 3a 68 65 6c 70  |us."..Zq. 2:help|
0001d4d0  24 2b 3d 22 52 6f 6f 6d  20 45 64 69 74 6f 72 20  |$+="Room Editor |
0001d4e0  61 6e 64 20 65 6e 74 65  72 20 79 6f 75 72 20 6d  |and enter your m|
0001d4f0  61 70 20 64 65 74 61 69  6c 73 2e 7c 4d 43 6c 69  |ap details.|MCli|
0001d500  63 6b 20 4d 45 4e 55 20  50 72 69 6e 74 20 74 68  |ck MENU Print th|
0001d510  65 20 72 6f 6f 6d 20 64  61 74 61 20 6f 72 20 49  |e room data or I|
0001d520  6d 70 6f 72 74 20 42 42  43 20 72 6f 6f 6d 20 64  |mport BBC room d|
0001d530  61 74 61 2e 22 0d c3 64  7f c9 20 33 3a 68 65 6c  |ata."..d.. 3:hel|
0001d540  70 24 2b 3d 22 4f 62 6a  65 63 74 20 45 64 69 74  |p$+="Object Edit|
0001d550  6f 72 20 61 6e 64 20 65  6e 74 65 72 20 79 6f 75  |or and enter you|
0001d560  72 20 6f 62 6a 65 63 74  20 64 65 74 61 69 6c 73  |r object details|
0001d570  2e 7c 4d 43 6c 69 63 6b  20 4d 45 4e 55 20 74 6f  |.|MClick MENU to|
0001d580  20 50 72 69 6e 74 20 74  68 65 20 6f 62 6a 65 63  | Print the objec|
0001d590  74 73 20 64 61 74 61 20  6f 72 20 49 6d 70 6f 72  |ts data or Impor|
0001d5a0  74 20 42 42 43 20 6f 62  6a 65 63 74 73 20 64 61  |t BBC objects da|
0001d5b0  74 61 2e 22 0d c3 6e 5a  c9 20 34 3a 68 65 6c 70  |ta."..nZ. 4:help|
0001d5c0  24 2b 3d 22 4d 65 73 73  61 67 65 20 45 64 69 74  |$+="Message Edit|
0001d5d0  6f 72 2e 7c 4d 43 6c 69  63 6b 20 4d 45 4e 55 20  |or.|MClick MENU |
0001d5e0  74 6f 20 50 72 69 6e 74  20 74 68 65 20 6d 65 73  |to Print the mes|
0001d5f0  73 61 67 65 73 20 6f 72  20 49 6d 70 6f 72 74 20  |sages or Import |
0001d600  42 42 43 20 6d 65 73 73  61 67 65 73 2e 22 0d c3  |BBC messages."..|
0001d610  78 43 c9 20 35 3a 68 65  6c 70 24 3d 22 54 68 69  |xC. 5:help$="Thi|
0001d620  73 20 69 73 20 74 68 65  20 41 6c 70 69 6e 65 20  |s is the Alpine |
0001d630  53 6f 66 74 77 61 72 65  20 6c 6f 67 6f 2e 20 49  |Software logo. I|
0001d640  74 20 68 61 73 20 6e 6f  20 65 66 66 65 63 74 2e  |t has no effect.|
0001d650  22 0d c3 82 83 c9 20 36  3a 68 65 6c 70 24 2b 3d  |"..... 6:help$+=|
0001d660  22 50 72 6f 67 72 61 6d  20 45 64 69 74 6f 72 20  |"Program Editor |
0001d670  61 6e 64 20 65 6e 74 65  72 20 74 68 65 20 67 61  |and enter the ga|
0001d680  6d 65 27 73 20 6c 6f 67  69 63 2e 7c 4d 43 6c 69  |me's logic.|MCli|
0001d690  63 6b 20 4d 45 4e 55 20  74 6f 20 50 72 69 6e 74  |ck MENU to Print|
0001d6a0  20 74 68 65 20 70 72 6f  67 72 61 6d 2c 20 49 6d  | the program, Im|
0001d6b0  70 6f 72 74 20 61 20 42  42 43 20 70 72 6f 67 72  |port a BBC progr|
0001d6c0  61 6d 20 6f 72 20 52 75  6e 20 74 68 65 20 67 61  |am or Run the ga|
0001d6d0  6d 65 2e 22 0d c3 8c 8d  c9 20 37 3a 68 65 6c 70  |me."..... 7:help|
0001d6e0  24 2b 3d 22 43 68 61 72  61 63 74 65 72 20 44 65  |$+="Character De|
0001d6f0  73 69 67 6e 65 72 2e 7c  4d 44 6f 75 62 6c 65 2d  |signer.|MDouble-|
0001d700  63 6c 69 63 6b 20 61 20  27 42 42 43 20 66 6f 6e  |click a 'BBC fon|
0001d710  74 27 20 66 69 6c 65 20  74 6f 20 4c 6f 61 64 20  |t' file to Load |
0001d720  61 20 63 68 61 72 61 63  74 65 72 20 73 65 74 2e  |a character set.|
0001d730  7c 4d 43 75 72 72 65 6e  74 20 63 68 61 72 61 63  ||MCurrent charac|
0001d740  74 65 72 20 73 65 74 20  69 73 20 73 61 76 65 64  |ter set is saved|
0001d750  20 77 69 74 68 20 79 6f  75 72 20 67 61 6d 65 2e  | with your game.|
0001d760  22 0d c3 96 6f c9 20 38  3a 68 65 6c 70 24 2b 3d  |"...o. 8:help$+=|
0001d770  22 56 6f 63 61 62 75 6c  61 72 79 20 45 64 69 74  |"Vocabulary Edit|
0001d780  6f 72 20 61 6e 64 20 65  6e 74 65 72 20 6e 6f 75  |or and enter nou|
0001d790  6e 73 2c 20 76 65 72 62  73 2c 20 61 64 6a 65 63  |ns, verbs, adjec|
0001d7a0  74 69 76 65 73 20 65 74  63 2e 7c 4d 43 6c 69 63  |tives etc.|MClic|
0001d7b0  6b 20 4d 45 4e 55 20 74  6f 20 50 72 69 6e 74 20  |k MENU to Print |
0001d7c0  74 68 65 20 76 6f 63 61  62 75 6c 61 72 79 2e 22  |the vocabulary."|
0001d7d0  0d c3 a0 c3 c9 20 39 3a  68 65 6c 70 24 3d 22 43  |..... 9:help$="C|
0001d7e0  6c 69 63 6b 20 53 45 4c  45 43 54 20 74 6f 20 73  |lick SELECT to s|
0001d7f0  77 61 70 20 74 68 65 20  6f 72 69 67 69 6e 61 6c  |wap the original|
0001d800  20 64 61 74 61 20 69 6e  20 74 68 65 20 65 64 69  | data in the edi|
0001d810  74 6f 72 73 20 77 69 74  68 20 74 68 65 20 64 61  |tors with the da|
0001d820  74 61 20 76 61 6c 75 65  73 20 6f 62 74 61 69 6e  |ta values obtain|
0001d830  65 64 20 64 75 72 69 6e  67 20 61 20 72 75 6e 20  |ed during a run |
0001d840  6f 66 20 74 68 65 20 67  61 6d 65 2e 7c 4d 41 20  |of the game.|MA |
0001d850  22 2b bd 31 32 38 2b 22  20 69 6e 64 69 63 61 74  |"+.128+" indicat|
0001d860  65 73 20 64 61 74 61 20  69 73 20 6f 72 69 67 69  |es data is origi|
0001d870  6e 61 6c 2e 20 41 6e 20  58 20 69 6e 64 69 63 61  |nal. An X indica|
0001d880  74 65 73 20 70 6f 73 74  2d 72 75 6e 20 64 61 74  |tes post-run dat|
0001d890  61 2e 22 0d c3 aa 67 c9  20 31 30 3a 68 65 6c 70  |a."...g. 10:help|
0001d8a0  24 2b 3d 22 50 69 63 74  75 72 65 20 45 64 69 74  |$+="Picture Edit|
0001d8b0  6f 72 20 61 6e 64 20 65  64 69 74 20 74 68 65 20  |or and edit the |
0001d8c0  70 69 63 74 75 72 65 20  66 69 6c 65 6e 61 6d 65  |picture filename|
0001d8d0  73 2e 7c 4d 43 6c 69 63  6b 20 4d 45 4e 55 20 74  |s.|MClick MENU t|
0001d8e0  6f 20 50 72 69 6e 74 20  74 68 65 20 50 69 63 74  |o Print the Pict|
0001d8f0  75 72 65 20 6c 69 73 74  2e 22 0d c3 b4 66 7f 20  |ure list."...f. |
0001d900  68 65 6c 70 24 3d 22 43  6c 69 63 6b 20 53 45 4c  |help$="Click SEL|
0001d910  45 43 54 20 74 6f 20 63  68 6f 6f 73 65 20 61 6e  |ECT to choose an|
0001d920  20 65 64 69 74 6f 72 2e  7c 4d 54 6f 20 6c 6f 61  | editor.|MTo loa|
0001d930  64 20 61 6e 20 27 41 6c  70 73 27 20 66 69 6c 65  |d an 'Alps' file|
0001d940  2c 20 64 72 61 67 20 69  74 73 20 69 63 6f 6e 20  |, drag its icon |
0001d950  74 6f 20 74 68 69 73 20  77 69 6e 64 6f 77 2e 22  |to this window."|
0001d960  0d c3 be 05 cb 0d c3 c8  10 c9 20 72 6f 6f 6d 68  |.......... roomh|
0001d970  61 6e 64 6c 65 0d c3 d2  1c 68 65 6c 70 24 3d 22  |andle....help$="|
0001d980  43 6c 69 63 6b 20 53 45  4c 45 43 54 20 74 6f 20  |Click SELECT to |
0001d990  22 0d c3 dc 0a c8 8e 20  68 20 ca 0d c3 e6 28 20  |"...... h ....( |
0001d9a0  c9 20 31 3a 68 65 6c 70  24 2b 3d 22 65 64 69 74  |. 1:help$+="edit|
0001d9b0  20 74 68 65 20 72 6f 6f  6d 27 73 20 66 6c 61 67  | the room's flag|
0001d9c0  73 2e 22 0d c3 f0 30 20  c9 20 35 3a 68 65 6c 70  |s."...0 . 5:help|
0001d9d0  24 2b 3d 22 64 69 73 70  6c 61 79 20 74 68 65 20  |$+="display the |
0001d9e0  66 69 72 73 74 20 72 6f  6f 6d 27 73 20 64 61 74  |first room's dat|
0001d9f0  61 2e 22 0d c3 fa 2f 20  c9 20 36 3a 68 65 6c 70  |a.".../ . 6:help|
0001da00  24 2b 3d 22 64 69 73 70  6c 61 79 20 74 68 65 20  |$+="display the |
0001da10  6c 61 73 74 20 72 6f 6f  6d 27 73 20 64 61 74 61  |last room's data|
0001da20  2e 22 0d c4 04 2f 20 c9  20 37 3a 68 65 6c 70 24  |.".../ . 7:help$|
0001da30  2b 3d 22 64 69 73 70 6c  61 79 20 74 68 65 20 6e  |+="display the n|
0001da40  65 78 74 20 72 6f 6f 6d  27 73 20 64 61 74 61 2e  |ext room's data.|
0001da50  22 0d c4 0e 33 20 c9 20  38 3a 68 65 6c 70 24 2b  |"...3 . 8:help$+|
0001da60  3d 22 64 69 73 70 6c 61  79 20 74 68 65 20 70 72  |="display the pr|
0001da70  65 76 69 6f 75 73 20 72  6f 6f 6d 27 73 20 64 61  |evious room's da|
0001da80  74 61 2e 22 0d c4 18 28  20 c9 20 39 3a 68 65 6c  |ta."...( . 9:hel|
0001da90  70 24 2b 3d 22 6d 6f 76  65 20 66 6f 72 77 61 72  |p$+="move forwar|
0001daa0  64 20 31 30 20 72 6f 6f  6d 73 2e 22 0d c4 22 26  |d 10 rooms.".."&|
0001dab0  20 c9 20 31 30 3a 68 65  6c 70 24 2b 3d 22 6d 6f  | . 10:help$+="mo|
0001dac0  76 65 20 62 61 63 6b 20  31 30 20 72 6f 6f 6d 73  |ve back 10 rooms|
0001dad0  2e 22 0d c4 2c 2c 20 c9  20 31 31 3a 68 65 6c 70  |."..,, . 11:help|
0001dae0  24 2b 3d 22 65 6e 74 65  72 20 74 68 65 20 64 69  |$+="enter the di|
0001daf0  73 70 6c 61 79 65 64 20  64 61 74 61 2e 22 0d c4  |splayed data."..|
0001db00  36 2b 20 c9 20 31 32 3a  68 65 6c 70 24 2b 3d 22  |6+ . 12:help$+="|
0001db10  6d 61 6b 65 20 74 68 69  73 20 74 68 65 20 6c 61  |make this the la|
0001db20  73 74 20 72 6f 6f 6d 2e  22 0d c4 40 61 20 c9 20  |st room."..@a . |
0001db30  35 34 2c 35 35 2c 35 36  2c 35 37 2c 35 38 2c 35  |54,55,56,57,58,5|
0001db40  39 2c 36 30 2c 36 31 2c  36 32 2c 36 33 2c 36 34  |9,60,61,62,63,64|
0001db50  2c 36 35 2c 36 36 2c 36  37 2c 36 38 2c 36 39 3a  |,65,66,67,68,69:|
0001db60  68 65 6c 70 24 3d 22 43  6c 69 63 6b 20 4d 45 4e  |help$="Click MEN|
0001db70  55 20 74 6f 20 65 64 69  74 20 74 68 65 20 65 78  |U to edit the ex|
0001db80  69 74 20 66 6c 61 67 73  2e 22 0d c4 4a 0f 20 7f  |it flags."..J. .|
0001db90  20 68 65 6c 70 24 3d 22  22 0d c4 54 05 cb 0d c4  | help$=""..T....|
0001dba0  5e 0f c9 20 6f 62 6a 68  61 6e 64 6c 65 0d c4 68  |^.. objhandle..h|
0001dbb0  1d 20 68 65 6c 70 24 3d  22 43 6c 69 63 6b 20 53  |. help$="Click S|
0001dbc0  45 4c 45 43 54 20 74 6f  20 22 0d c4 72 0b 20 c8  |ELECT to "..r. .|
0001dbd0  8e 20 68 20 ca 0d c4 7c  2b 20 20 c9 20 30 3a 68  |. h ...|+  . 0:h|
0001dbe0  65 6c 70 24 2b 3d 22 65  64 69 74 20 74 68 65 20  |elp$+="edit the |
0001dbf0  6f 62 6a 65 63 74 27 73  20 66 6c 61 67 73 2e 22  |object's flags."|
0001dc00  0d c4 86 33 20 20 c9 20  35 3a 68 65 6c 70 24 2b  |...3  . 5:help$+|
0001dc10  3d 22 64 69 73 70 6c 61  79 20 74 68 65 20 66 69  |="display the fi|
0001dc20  72 73 74 20 6f 62 6a 65  63 74 27 73 20 64 61 74  |rst object's dat|
0001dc30  61 2e 22 0d c4 90 32 20  20 c9 20 36 3a 68 65 6c  |a."...2  . 6:hel|
0001dc40  70 24 2b 3d 22 64 69 73  70 6c 61 79 20 74 68 65  |p$+="display the|
0001dc50  20 6c 61 73 74 20 6f 62  6a 65 63 74 27 73 20 64  | last object's d|
0001dc60  61 74 61 2e 22 0d c4 9a  33 20 20 c9 20 32 37 3a  |ata."...3  . 27:|
0001dc70  68 65 6c 70 24 2b 3d 22  64 69 73 70 6c 61 79 20  |help$+="display |
0001dc80  74 68 65 20 6e 65 78 74  20 6f 62 6a 65 63 74 27  |the next object'|
0001dc90  73 20 64 61 74 61 2e 22  0d c4 a4 37 20 20 c9 20  |s data."...7  . |
0001dca0  31 36 3a 68 65 6c 70 24  2b 3d 22 64 69 73 70 6c  |16:help$+="displ|
0001dcb0  61 79 20 74 68 65 20 70  72 65 76 69 6f 75 73 20  |ay the previous |
0001dcc0  6f 62 6a 65 63 74 27 73  20 64 61 74 61 2e 22 0d  |object's data.".|
0001dcd0  c4 ae 2c 20 20 c9 20 32  30 3a 68 65 6c 70 24 2b  |..,  . 20:help$+|
0001dce0  3d 22 6d 6f 76 65 20 66  6f 72 77 61 72 64 20 31  |="move forward 1|
0001dcf0  30 20 6f 62 6a 65 63 74  73 2e 22 0d c4 b8 29 20  |0 objects."...) |
0001dd00  20 c9 20 32 31 3a 68 65  6c 70 24 2b 3d 22 6d 6f  | . 21:help$+="mo|
0001dd10  76 65 20 62 61 63 6b 20  31 30 20 6f 62 6a 65 63  |ve back 10 objec|
0001dd20  74 73 2e 22 0d c4 c2 2d  20 20 c9 20 31 37 3a 68  |ts."...-  . 17:h|
0001dd30  65 6c 70 24 2b 3d 22 65  6e 74 65 72 20 74 68 65  |elp$+="enter the|
0001dd40  20 64 69 73 70 6c 61 79  65 64 20 64 61 74 61 2e  | displayed data.|
0001dd50  22 0d c4 cc 2e 20 20 c9  20 32 32 3a 68 65 6c 70  |"....  . 22:help|
0001dd60  24 2b 3d 22 6d 61 6b 65  20 74 68 69 73 20 74 68  |$+="make this th|
0001dd70  65 20 6c 61 73 74 20 6f  62 6a 65 63 74 2e 22 0d  |e last object.".|
0001dd80  c4 d6 27 20 20 c9 20 32  36 3a 68 65 6c 70 24 2b  |..'  . 26:help$+|
0001dd90  3d 22 63 72 65 61 74 65  20 61 20 63 6f 6e 74 61  |="create a conta|
0001dda0  69 6e 65 72 2e 22 0d c4  e0 10 20 20 7f 20 68 65  |iner."....  . he|
0001ddb0  6c 70 24 3d 22 22 0d c4  ea 06 20 cb 0d c4 f4 10  |lp$="".... .....|
0001ddc0  c9 20 74 65 78 74 68 61  6e 64 6c 65 0d c4 fe 31  |. texthandle...1|
0001ddd0  68 65 6c 70 24 3d 22 43  6c 69 63 6b 20 53 45 4c  |help$="Click SEL|
0001dde0  45 43 54 20 74 6f 20 70  6f 73 69 74 69 6f 6e 20  |ECT to position |
0001ddf0  74 68 65 20 63 61 72 65  74 2e 7c 4d 22 0d c4 ff  |the caret.|M"...|
0001de00  6c e7 20 74 65 78 74 5f  6f 77 6e 65 72 24 3c 3e  |l. text_owner$<>|
0001de10  22 70 69 78 22 20 68 65  6c 70 24 2b 3d 22 43 6c  |"pix" help$+="Cl|
0001de20  69 63 6b 20 4d 45 4e 55  20 74 6f 20 70 6f 70 20  |ick MENU to pop |
0001de30  75 70 20 61 20 6d 65 6e  75 2e 7c 4d 43 6c 69 63  |up a menu.|MClic|
0001de40  6b 20 41 44 4a 55 53 54  20 6f 72 20 70 72 65 73  |k ADJUST or pres|
0001de50  73 20 46 39 20 74 6f 20  69 6e 73 65 72 74 20 61  |s F9 to insert a|
0001de60  20 6d 61 72 6b 65 72 2e  22 0d c5 08 0c c9 20 64  | marker."..... d|
0001de70  65 73 69 67 6e 0d c5 12  1c 68 65 6c 70 24 3d 22  |esign....help$="|
0001de80  43 6c 69 63 6b 20 53 45  4c 45 43 54 20 74 6f 20  |Click SELECT to |
0001de90  22 0d c5 1c 0a c8 8e 20  b9 20 ca 0d c5 26 2c 20  |"...... . ...&, |
0001dea0  c9 20 68 3d 36 36 3a 68  65 6c 70 24 2b 3d 22 64  |. h=66:help$+="d|
0001deb0  69 73 70 6c 61 79 20 6e  65 78 74 20 63 68 61 72  |isplay next char|
0001dec0  61 63 74 65 72 2e 22 0d  c5 30 30 20 c9 20 68 3d  |acter."..00 . h=|
0001ded0  36 37 3a 68 65 6c 70 24  2b 3d 22 64 69 73 70 6c  |67:help$+="displ|
0001dee0  61 79 20 70 72 65 76 69  6f 75 73 20 63 68 61 72  |ay previous char|
0001def0  61 63 74 65 72 2e 22 0d  c5 3a 32 20 c9 20 68 3d  |acter."..:2 . h=|
0001df00  36 38 3a 68 65 6c 70 24  2b 3d 22 63 68 6f 6f 73  |68:help$+="choos|
0001df10  65 20 61 20 64 69 66 66  65 72 65 6e 74 20 63 68  |e a different ch|
0001df20  61 72 61 63 74 65 72 2e  22 0d c5 44 39 20 c9 20  |aracter."..D9 . |
0001df30  68 3d 36 34 3a 68 65 6c  70 24 3d 22 54 68 69 73  |h=64:help$="This|
0001df40  20 73 68 6f 77 73 20 74  68 65 20 63 68 61 72 61  | shows the chara|
0001df50  63 74 65 72 20 61 63 74  75 61 6c 20 73 69 7a 65  |cter actual size|
0001df60  2e 22 0d c5 4e 30 20 c9  20 28 68 3e 3d 30 20 80  |."..N0 . (h>=0 .|
0001df70  20 68 3c 36 34 29 3a 68  65 6c 70 24 2b 3d 22 74  | h<64):help$+="t|
0001df80  6f 67 67 6c 65 20 74 68  69 73 20 62 6c 6f 63 6b  |oggle this block|
0001df90  2e 22 0d c5 58 2e 20 7f  20 68 65 6c 70 24 3d 22  |."..X. . help$="|
0001dfa0  54 68 69 73 20 69 73 20  74 68 65 20 43 68 61 72  |This is the Char|
0001dfb0  61 63 74 65 72 20 44 65  73 69 67 6e 65 72 2e 22  |acter Designer."|
0001dfc0  0d c5 62 05 cb 0d c5 6c  05 cb 0d c5 76 1e 62 21  |..b....l....v.b!|
0001dfd0  31 36 3d 26 35 30 33 3a  f4 20 53 65 6e 64 20 61  |16=&503:. Send a|
0001dfe0  20 6d 65 73 73 61 67 65  0d c5 80 0d 62 21 31 32  | message....b!12|
0001dff0  3d 72 65 66 25 0d c5 8a  11 24 28 62 2b 32 30 29  |=ref%....$(b+20)|
0001e000  3d 68 65 6c 70 24 0d c5  94 21 62 21 30 3d 28 28  |=help$...!b!0=((|
0001e010  28 32 30 2b a9 28 68 65  6c 70 24 29 2b 31 29 81  |(20+.(help$)+1).|
0001e020  34 29 2a 34 29 2b 34 0d  c5 9e 19 24 28 62 2b 32  |4)*4)+4....$(b+2|
0001e030  31 2b a9 28 68 65 6c 70  24 29 29 3d bd 28 30 29  |1+.(help$))=.(0)|
0001e040  0d c5 a8 1e c8 99 20 22  57 69 6d 70 5f 53 65 6e  |...... "Wimp_Sen|
0001e050  64 4d 65 73 73 61 67 65  22 2c 31 37 2c 62 0d c5  |dMessage",17,b..|
0001e060  b2 05 e1 0d c5 bc 04 0d  c5 c6 12 dd 20 f2 72 65  |............ .re|
0001e070  61 64 50 61 6c 65 74 74  65 0d c5 d0 10 e3 20 63  |adPalette..... c|
0001e080  6f 6c 3d 30 20 b8 20 31  35 0d c5 da 14 f2 72 65  |ol=0 . 15.....re|
0001e090  61 64 70 61 6c 28 63 6f  6c 2c 31 36 29 0d c5 e4  |adpal(col,16)...|
0001e0a0  2d 72 67 62 28 63 6f 6c  2c 31 29 3d 72 25 3a 72  |-rgb(col,1)=r%:r|
0001e0b0  67 62 28 63 6f 6c 2c 32  29 3d 67 25 3a 72 67 62  |gb(col,2)=g%:rgb|
0001e0c0  28 63 6f 6c 2c 33 29 3d  62 25 0d c5 ee 05 ed 0d  |(col,3)=b%......|
0001e0d0  c5 f8 13 f2 72 65 61 64  70 61 6c 28 31 36 2c 32  |....readpal(16,2|
0001e0e0  34 29 0d c6 02 2a 72 67  62 28 31 36 2c 31 29 3d  |4)...*rgb(16,1)=|
0001e0f0  72 25 3a 72 67 62 28 31  36 2c 32 29 3d 67 25 3a  |r%:rgb(16,2)=g%:|
0001e100  72 67 62 28 31 36 2c 33  29 3d 62 25 0d c6 0c 11  |rgb(16,3)=b%....|
0001e110  e3 20 63 6f 6c 3d 31 37  20 b8 20 31 39 0d c6 16  |. col=17 . 19...|
0001e120  17 f2 72 65 61 64 70 61  6c 28 63 6f 6c 2d 31 36  |..readpal(col-16|
0001e130  2c 32 35 29 0d c6 20 2d  72 67 62 28 63 6f 6c 2c  |,25).. -rgb(col,|
0001e140  31 29 3d 72 25 3a 72 67  62 28 63 6f 6c 2c 32 29  |1)=r%:rgb(col,2)|
0001e150  3d 67 25 3a 72 67 62 28  63 6f 6c 2c 33 29 3d 62  |=g%:rgb(col,3)=b|
0001e160  25 0d c6 2a 05 ed 0d c6  34 05 e1 0d c6 3e 04 0d  |%..*....4....>..|
0001e170  c6 48 15 dd 20 f2 72 65  61 64 70 61 6c 28 6c 25  |.H.. .readpal(l%|
0001e180  2c 70 25 29 0d c6 52 3b  f4 20 52 65 61 64 20 74  |,p%)..R;. Read t|
0001e190  68 65 20 72 67 62 20 76  61 6c 75 65 73 20 66 6f  |he rgb values fo|
0001e1a0  72 20 6c 6f 67 69 63 61  6c 2f 70 68 79 73 69 63  |r logical/physic|
0001e1b0  61 6c 20 63 6f 6c 6f 75  72 20 6c 25 2c 70 25 0d  |al colour l%,p%.|
0001e1c0  c6 5c 25 c8 99 20 52 65  61 64 50 61 6c 2c 6c 25  |.\%.. ReadPal,l%|
0001e1d0  2c 70 25 20 b8 20 52 30  2c 52 31 2c 70 61 6c 65  |,p% . R0,R1,pale|
0001e1e0  74 74 65 25 0d c6 66 19  72 25 3d 28 70 61 6c 65  |tte%..f.r%=(pale|
0001e1f0  74 74 65 25 3e 3e 20 38  29 80 26 46 46 0d c6 70  |tte%>> 8).&FF..p|
0001e200  19 67 25 3d 28 70 61 6c  65 74 74 65 25 3e 3e 31  |.g%=(palette%>>1|
0001e210  36 29 80 26 46 46 0d c6  7a 19 62 25 3d 28 70 61  |6).&FF..z.b%=(pa|
0001e220  6c 65 74 74 65 25 3e 3e  32 34 29 80 26 46 46 0d  |lette%>>24).&FF.|
0001e230  c6 84 05 e1 0d ff                                 |......|
0001e236