Home » Archimedes archive » Zipped Apps » Artist » !Artist/Painting

!Artist/Painting

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 » Artist
Filename: !Artist/Painting
Read OK:
File size: A2F8 bytes
Load address: 0000
Exec address: 0000
File contents
REM > Painting
REM (c) Acorn Computers 1987
REM Version 1.2
 
*SNEW
DIM wimp 2200 , windows(31) , heap 4000 , heap(10) , `sub_men(10)
DIM `help 2000 , help(10,10) , `r(16) , `g(16) , `b(16) , par% 256
DIM t_wimp 128 , data 3100 , save% 16 , `p(3,64)
spt_area_size = 110000: DIM spt_area spt_area_size
FOR A% = spt_area TO spt_area+spt_area_size-1 STEP 4:!A%=-1:NEXT
VDU6,12,23,16,&40,&BF|
GCOL 135
PROCwimp_vars
PROCinit
SYS initialise
PROCdesktop
*POINTER
PROCopen_window(windows(1),0,100,1280,988,0,0,-1)
PROCdef_heap(windows(1))
PROCcreate_help
PROCscrn
ON ERROR PROCreport
REPEAT
`old_area = `dr_area
c = FNpoll(0)
CASE c OF
WHEN 1 : PROCredraw_window(!wimp):PROCupdate(!wimp)
WHEN 2 : PROCopen_window(!wimp,wimp!4,wimp!8,wimp!12,wimp!16,wimp!20, wimp!24,wimp!28)
WHEN 3 : PROCclose_window(!wimp)
WHEN 4 :
WHEN 5 : IF !wimp=windows(5) THEN `handle% = windows(5)
WHEN 6 : PROCmouse(!wimp,wimp!4,wimp!8,wimp!12,wimp!16,wimp!20)
WHEN 7 :
WHEN 8 : PROCsave_name
ENDCASE
MOUSE `x%,`y%,`b%
IF FNdraw_area THEN
IF `old_area <> `dr_area THEN PROCdr_copy
VDU24,162;232;1274;972;
IF `col% = 17 THEN
GCOL80+`style%,0
ELSE
GCOL `style%,`col%
ENDIF
IF `cur_menu = 1 THEN
CASE `func% OF
WHEN 3 : PROCdo_line
WHEN 4 : PROCdo_joined
WHEN 5 : PROCdo_radii
WHEN 6 : PROCdo_point
ENDCASE
ENDIF
IF `cur_menu = 2 THEN
CASE `func% OF
WHEN 3 : PROCdo_rect
WHEN 4 : PROCdo_square
WHEN 5 : PROCdo_para
WHEN 6 : PROCdo_tria
ENDCASE
ENDIF
IF `cur_menu = 3 THEN
CASE `func% OF
WHEN 3 : PROCdo_circ
WHEN 4 : PROCdo_elip
WHEN 5 : PROCdo_segm
WHEN 6 : PROCdo_arc
WHEN 7 : PROCdo_sect
ENDCASE
ENDIF
IF `cur_menu = 4 THEN
CASE `func% OF
WHEN 3 : PROCdo_text
ENDCASE
ENDIF
IF `cur_menu = 5 THEN
CASE `func% OF
WHEN 3 : PROCdo_copy
WHEN 4 : PROCdo_move
WHEN 5 : PROCdo_clear
WHEN 7 : PROCdo_fill
ENDCASE
ENDIF
ENDIF
VDU 26
UNTIL FALSE
END
DEF PROCinit
VDU 19, 0,16,  0,  0,  0 :`r(0)=0  :`g(0)=0  :`b(0)=0  :   REM BLACK
VDU 19, 1,16,240,  0,  0 :`r(1)=240:`g(1)=0  :`b(1)=0  :   REM RED 100%
VDU 19, 2,16,  0,240,  0 :`r(2)=0  :`g(2)=240:`b(2)=0  :   REM GREEN 100%
VDU 19, 3,16,240,240,  0 :`r(3)=240:`g(3)=240:`b(3)=0  :   REM YELLOW 100%
VDU 19, 4,16,  0,  0,240 :`r(4)=0  :`g(4)=0  :`b(4)=240:   REM BLUE 100%
VDU 19, 5,16,240,  0,240 :`r(5)=240:`g(5)=0  :`b(5)=240:   REM MAGENTA 100%
VDU 19, 6,16,  0,240,240 :`r(6)=0  :`g(6)=240:`b(6)=240:   REM CYAN 100%
VDU 19, 7,16,240,240,240 :`r(7)=240:`g(7)=240:`b(7)=240:   REM WHITE 100%
VDU 19, 8,16,224,144,144 :`r(8)=224:`g(8)=144:`b(8)=144:   REM TITLE BACK
VDU 19, 9,16,160,160,160 :`r(9)=160:`g(9)=160:`b(9)=160:   REM ICON BACK
VDU 19,10,16,114,114,114 :`r(10)=114:`g(10)=114:`b(10)=114:REM SCROLL BACK
VDU 19,11,16,176,176,176 :`r(11)=176:`g(11)=176:`b(11)=176:REM MENU BACK
VDU 19,12,16,208,  0,  0 :`r(12)=208:`g(12)=0  :`b(12)=0
VDU 19,13,16,176,176,  0 :`r(13)=176:`g(13)=176:`b(13)=0
VDU 19,14,16,  0,  0,208 :`r(14)=0  :`g(14)=0  :`b(14)=208
VDU 19,15,16,112,160,160 :`r(15)=112:`g(15)=160:`b(15)=160
:
`ib = &89 : `if = &00 : `wf = &00 : `wb = &87 : `tf = &00 : `tb = &88
`sf = &04 : `sb = &8A
VDU19,0,24,&50,&50,&50
VDU19,1,25,&00,&F0,&F0
VDU19,2,25,&00,&00,&F0
VDU19,3,25,&F0,&00,&00
`cur_menu = 0
`m_fill = FALSE
`m_open = TRUE
`m_dots = FALSE
`m_xor= FALSE
`m_or = FALSE
`m_and= FALSE
`m_inv= FALSE
`func%= 2
`col% = 0
`style% = 0
`brsh%= 243
`x% = 0 : `y% = 0 : `b% = 0
`handle% = 0
`icon% = 0
`state% = 0
`dr_area = -1
`max_file% = 77
VDU23,243,0,0,0,&18,&18,0,0,0
VDU23,244,0,0,&3C,&3C,&3C,&3C,0,0
VDU23,245,&FF,&FF,&FF,&FF,&FF,&FF,&FF,&FF
VDU23,246,0,&18,&3C,&7E,&FF,0,0,0
VDU23,247,0,&18,&3C,&7E,&7E,&3C,&18,0
VDU23,248,0,6,&E,&1C,&38,&70,&60,0
VDU23,249,0,&54,&2A,&54,&2A,&54,&2A,0
VDU23,250,0,&40,&20,&10,8,4,2,0
VDU23,251,0,16,16,16,16,16,16,0
VDU23,252,0,0,0,0,0,0,0,0
VDU23,253,&80,&52,8,&29,&90,&C,&A2,8
VDU23,254,0,0,0,&7E,0,0,0,0
VDU 23,17,4,1,0,0,0,0,0,0
FOR a% = 0 TO 63
`p(0,a%) = (a% MOD 2)+1+(a% DIV 8)MOD 2
`p(1,a%) = ((a% MOD 2)+(a% DIV 8)MOD 2)MOD 2+1
`p(2,a%) = (a% MOD 2)+5+(a% DIV 8)MOD 2
`p(3,a%) = ((a% MOD 2)+(a% DIV 8)MOD 2)MOD 2+9
NEXT a%
`ptrn = 0
GCOL 0
RECTANGLE FILL 46,694,64,64
SYS &2E,16,0,"curcol",0,46,694,100,758
spt_area!0 = spt_area_size : spt_area!4 = 0 : spt_area!8 =16 : spt_area!12 = spt_area!8
VDU26,23,17,4,1,0,0,0,0,0,0
ENDPROC
DEF PROCwimp_vars
:
:
ws = &000400C0
:
initialise= ws
create_window = ws + 01
create_icon = ws + 02
delete_window = ws + 03
delete_icon = ws + 04
open_window = ws + 05
close_window= ws + 06
poll_wimp = ws + 07
redraw_window = ws + 08
update_window = ws + 09
get_rectangle = ws + 10
get_window_state= ws + 11
get_window_info = ws + 12
set_icon_state= ws + 13
get_icon_info = ws + 14
get_pointer_info= ws + 15
drag_box= ws + 16
screen_redraw = ws + 17
set_carot_position= ws + 18
:
ENDPROC
DEF PROCdesktop
RESTORE
wind% = -1
REPEAT
READ f%,fc%,bc%,x0%,y0%,x1%,y1%,if%,ic$,cx0%,cy0%,cx1%,cy1%,nic%,tit$:
wind% = wind% + 1
windows(wind%) = FNcreateW(cx0%,cy0%,cx1%,cy1%,0,0,f%,fc%,bc%,x0%,y0%,x1%,y1%,if%,CHR$197,tit$,nic%)
:
READ A$
UNTIL A$=""
!wimp = windows(10)
wimp!4= 0
wimp!8= -100
wimp!12 = 250
wimp!16 = 0
wimp!20 = &9000F135
wimp!24 = save%
wimp!28 = -1
wimp!32 = 10
$save% = ""
SYS create_icon,0,wimp
:
REM flags,forecl,backcl,minx,miny,maxx,miny,iconflg,icon,x0,y0,x1,y1,n,t$
:
REMPALETTE WINDOW 7
DATA &50,`wf,`wb,0,-96,100,0,0,"",0,0,100,96,1,""
DATA 0,-96,100,4,&300E,`if,0,func,null
:
DATA &11,`wf,`wb,0,-888,1280,0,&302D,"",0,100,1280,988,11,"ARM PAINT"
DATA 0,-40,160,4,&302D,`if,`ib,COLOURS
DATA 0,-752,160,-538,&303D,`if,`ib,mode
DATA 0,-888,160,-748,&303D,`if,&88,func
DATA 160,-888,300,-748,&303D,`if,`ib,draw
DATA 300,-888,440,-748,&303D,`if,`ib,shapes
DATA 440,-888,580,-748,&303D,`if,`ib,curve
DATA 580,-888,720,-748,&303D,`if,`ib,text
DATA 720,-888,860,-748,&303D,`if,`ib,area
DATA 860,-888,1000,-748,&303D,`if,`ib,""
DATA 1000,-888,1140,-748,&303D,`if,`ib,load
DATA 1140,-888,1280,-748,&303D,`if,`ib,save,null
:
DATA &11,`wf,`wb,0,-200,400,0,&302D,"",120,230,520,430,7,MODE
DATA 0,-98,200,0,&303D,`if,`ib,fill
DATA 200,-98,400,0,&303D,`if,&88,open
DATA 0,0,0,0,&303E,`if,`ib,""
DATA 0,-200,100,-100,&303D,`if,`ib,Xor
DATA 100,-200,200,-100,&303D,`if,`ib,OR
DATA 200,-200,300,-100,&303D,`if,`ib,AND
DATA 300,-200,400,-100,&303D,`if,`ib,INV,null
:
DATA &11,`wf,`wb,0,-280,720,0,&302D,"",180,170,900,450,0,HELP!
DATA null
DATA &1D,`wf,`wb,0,-700,150,0,&302D,"",500,550,650,850,0,DISK
DATA null
DATA &00,`wf,`wb,0,-744,1112,0,&302D,"",164,232,1276,976,0,""
DATA null
DATA &10,`if,`ib,0,-494,160,0,0,"",0,442,160,936,21,""
DATA 4,- 40, 36,-8,&302D,`if,&80,""
DATA44,- 40, 76,-8,&302D,`if,&81,""
DATA84,- 40,116,-8,&302D,`if,&82,""
DATA 124,- 40,156,-8,&302D,`if,&83,""
DATA 4,- 80, 36,- 48,&302D,`if,&84,""
DATA44,- 80, 76,- 48,&302D,`if,&85,""
DATA84,- 80,116,- 48,&302D,`if,&86,""
DATA 124,- 80,156,- 48,&302D,`if,&87,""
DATA 4,-120, 36,- 88,&302D,`if,&88,""
DATA44,-120, 76,- 88,&302D,`if,&89,""
DATA84,-120,116,- 88,&302D,`if,&8A,""
DATA 124,-120,156,- 88,&302D,`if,&8B,""
DATA 4,-160, 36,-128,&302D,`if,&8C,""
DATA44,-160, 76,-128,&302D,`if,&8D,""
DATA84,-160,116,-128,&302D,`if,&8E,""
DATA 124,-160,156,-128,&302D,`if,&8F,""
DATA 4,-380, 68,-308,&303E,`if,`ib,"ecf0"
DATA92,-380,152,-308,&303E,`if,`ib,"ecf1"
DATA 4,-460, 68,-388,&303E,`if,`ib,"ecf2"
DATA92,-460,152,-388,&303E,`if,`ib,"ecf3"
DATA 40,-248,110,-172,&303E,`if,&80,"curcol"
DATA null
DATA &1,`wf,`wb,0,-400,500,0,&302D,"",250,330,750,730,1,Palette
DATA 0,-400,500,0,&3000,`if,`ib,""
DATA null
DATA &11,`wf,`wb,0,-292,306,0,&302D,"",150,400,456,692,64,Pattern
DATA 2,-36, 38,-4,&3029,7,&80,""
DATA40,-36, 76,-4,&3029,7,&80,""
DATA78,-36,114,-4,&3029,7,&80,""
DATA 116,-36,152,-4,&3029,7,&80,""
DATA 154,-36,190,-4,&3029,7,&80,""
DATA 192,-36,228,-4,&3029,7,&80,""
DATA 230,-36,266,-4,&3029,7,&80,""
DATA 268,-36,304,-4,&3029,7,&80,""
DATA 2,- 72, 38,- 40,&3029,7,&80,""
DATA40,- 72, 76,- 40,&3029,7,&80,""
DATA78,- 72,114,- 40,&3029,7,&80,""
DATA 116,- 72,152,- 40,&3029,7,&80,""
DATA 154,- 72,190,- 40,&3029,7,&80,""
DATA 192,- 72,228,- 40,&3029,7,&80,""
DATA 230,- 72,266,- 40,&3029,7,&80,""
DATA 268,- 72,304,- 40,&3029,7,&80,""
DATA 2,-108, 38,- 76,&3029,7,&80,""
DATA40,-108, 76,- 76,&3029,7,&80,""
DATA78,-108,114,- 76,&3029,7,&80,""
DATA 116,-108,152,- 76,&3029,7,&80,""
DATA 154,-108,190,- 76,&3029,7,&80,""
DATA 192,-108,228,- 76,&3029,7,&80,""
DATA 230,-108,266,- 76,&3029,7,&80,""
DATA 268,-108,304,- 76,&3029,7,&80,""
DATA 2,-144, 38,-112,&3029,7,&80,""
DATA40,-144, 76,-112,&3029,7,&80,""
DATA78,-144,114,-112,&3029,7,&80,""
DATA 116,-144,152,-112,&3029,7,&80,""
DATA 154,-144,190,-112,&3029,7,&80,""
DATA 192,-144,228,-112,&3029,7,&80,""
DATA 230,-144,266,-112,&3029,7,&80,""
DATA 268,-144,304,-112,&3029,7,&80,""
DATA 2,-180, 38,-148,&3029,7,&80,""
DATA40,-180, 76,-148,&3029,7,&80,""
DATA78,-180,114,-148,&3029,7,&80,""
DATA 116,-180,152,-148,&3029,7,&80,""
DATA 154,-180,190,-148,&3029,7,&80,""
DATA 192,-180,228,-148,&3029,7,&80,""
DATA 230,-180,266,-148,&3029,7,&80,""
DATA 268,-180,304,-148,&3029,7,&80,""
DATA 2,-216, 38,-184,&3029,7,&80,""
DATA40,-216, 76,-184,&3029,7,&80,""
DATA78,-216,114,-184,&3029,7,&80,""
DATA 116,-216,152,-184,&3029,7,&80,""
DATA 154,-216,190,-184,&3029,7,&80,""
DATA 192,-216,228,-184,&3029,7,&80,""
DATA 230,-216,266,-184,&3029,7,&80,""
DATA 268,-216,304,-184,&3029,7,&80,""
DATA 2,-252, 38,-220,&3029,7,&80,""
DATA40,-252, 76,-220,&3029,7,&80,""
DATA78,-252,114,-220,&3029,7,&80,""
DATA 116,-252,152,-220,&3029,7,&80,""
DATA 154,-252,190,-220,&3029,7,&80,""
DATA 192,-252,228,-220,&3029,7,&80,""
DATA 230,-252,266,-220,&3029,7,&80,""
DATA 268,-252,304,-220,&3029,7,&80,""
DATA 2,-288, 38,-256,&3029,7,&80,""
DATA40,-288, 76,-256,&3029,7,&80,""
DATA78,-288,114,-256,&3029,7,&80,""
DATA 116,-288,152,-256,&3029,7,&80,""
DATA 154,-288,190,-256,&3029,7,&80,""
DATA 192,-288,228,-256,&3029,7,&80,""
DATA 230,-288,266,-256,&3029,7,&80,""
DATA 268,-288,304,-256,&3029,7,&80,""
DATA null
DATA &11,`wf,`wb,0,-192,192,0,&302D,"",600,400,792,592,12,Brushes
DATA0,- 64, 48, 0,&302D,`if,&88,"�"
DATA 48,- 64, 96, 0,&302D,`if,`ib,"�"
DATA 96,- 64, 144, 0,&302D,`if,`ib,"�"
DATA 144,- 64,192, 0,&302D,`if,`ib,"�"
DATA0,-128, 48,- 64,&302D,`if,`ib,"�"
DATA 48,-128, 96,- 64,&302D,`if,`ib,"�"
DATA 96,-128, 144,- 64,&302D,`if,`ib,"�"
DATA 144,-128,192,- 64,&302D,`if,`ib,"�"
DATA0,-192, 48,-128,&302D,`if,`ib,"�"
DATA 48,-192, 96,-128,&302D,`if,`ib," "
DATA 96,-192, 144,-128,&302D,`if,`ib,"�"
DATA 144,-192,192,-128,&302D,`if,`ib,"-"
DATA null
DATA &11,`wf,`wb,0,-100,250,0,&F02D,"",900,350,1150,450,0,"DISK SAVE"
DATA null
DATA &41,`wf,`wb,0,-700,1280,0,&302D,"",100,50,1000,300,0,"ERROR"
DATA ""
:
`max_window = wind%
ENDPROC
DEF FNcreateW(cx0%,cy0%,cx1%,cy1%,scx%,scy%,flags%,fc%,bc%,sx0%,sy0%,sx1%,sy1%,iconf%,icon$,title$,nicons%)
!wimp=cx0%:wimp!4=cy0%:wimp!8=cx1%:wimp!12=cy1%:wimp!16=scx%:wimp!20=scy%
wimp!24=-1:wimp!28=flags%
wimp?32=`tf:wimp?33=`tb:wimp?34=fc%:wimp?35=bc%
wimp?36=`sf:wimp?37=`sb:wimp?38=`wb:wimp?39=0
wimp!40=sx0%:wimp!44=sy0%:wimp!48=sx1%:wimp!52=sy1%
wimp!56=iconf%:wimp!60=0:wimp!64=0:wimp!68=0:REM DANGER $(wimp+60)=LEFT$(icon$,11)
$(wimp+72)=LEFT$(title$,11)
wimp!84=nicons%
LOCALI%,x0%,y0%,x1%,y1%,f%,data$:I%=wimp+88
WHILE nicons%>0
READ x0%,y0%,x1%,y1%,f%,fc%,bc%,data$
I%!0=x0%:I%!4=y0%:I%!8=x1%:I%!12=y1%:I%!16=f%:$(I%+20)=data$
I%?19=fc%+(bc%AND15)*16
I%=I%+32:nicons%=nicons%-1
ENDWHILE
SYS create_window,0,wimp TO handle%
=handle%
DEF PROCopen_window(handle%,x0%,y0%,x1%,y1%,scx%,scy%,bhandle%)
IFhandle%=-1 OR bhandle%<-1 THENENDPROC
wimp!0=handle%:wimp!28=bhandle%
wimp!4=x0%:wimp!8=y0%:wimp!12=x1%:wimp!16=y1%
wimp!20=scx%:wimp!24=scy%
SYS open_window,0,wimp
IF handle% = windows(1) THEN
PROCecf(0)
PROCecf(1)
PROCecf(2)
PROCecf(3)
handle% = 0
PROCopen_window(windows(6),4,442,160,936,0,0,-1)
PROCopen_window(windows(5),164,232,1276,976,0,0,-1)
PROCupd_ecf
VDU24,162;232;1274;972;
GCOL135
CLG
SYS &2E,256+16,spt_area,"HDS",0,162,232,1274,972
VDU 26
SYS screen_redraw,-1,0,0,1279,1023
ENDIF
ENDPROC
DEF FNpoll(mask)
!wimp = mask
SYS poll_wimp,0,wimp TO handle%
=handle%

DEF PROCredraw_window(handle%)
!wimp = handle%
SYS redraw_window,0,wimp TO more%
IF handle%=windows(11) THEN
  WHILE more%
    MOVEwimp!4+16,wimp!16-40: PRINT REPORT$
    SYS get_rectangle,0,wimp TO more%
  ENDWHILE
ELSE : REM PMF BODGE - must complete the protocol !
  WHILE more%
    SYS get_rectangle,0,wimp TO more%
  ENDWHILE
ENDIF
ENDPROC

DEF PROCclose_window(handle%)
LOCAL a%
IF handle%=windows(11) MOUSE RECTANGLE0,0,1279,1023
!wimp = handle%
SYS close_window,0,wimp
IF handle% = windows(1) THEN
FOR a% = 1 TO `max_window
!wimp = windows(a%)
SYS close_window,0,wimp
NEXT a%
OSCLI("DeskTop")
END
ENDIF
IF handle% = windows(8) THEN
PROCecf(`ptrn)
PROCupd_ecf
ENDIF
ENDPROC
DEF PROCget_window_state(handle%)
!wimp=handle%
SYS get_window_state,0,wimp
ENDPROC
DEF PROCget_pointer_info
!wimp=`x%
wimp!4 = `y%
wimp!8 = `b%
wimp!12 = `handle%
wimp!16 = `icon%
ENDPROC
DEF PROCdelete_icon(handle%,n%)
!wimp = handle%
wimp!4 = n%
SYS delete_icon,0,wimp
ENDPROC
DEF PROCset_icon_state(handle%,ih%,f%,if%,ib%,m%)
!wimp = handle%
wimp!4 = ih%
wimp!8 = f%
wimp?11 = if%+(ib% AND 15)*16
wimp!12 = m%
SYS set_icon_state,0,wimp
ENDPROC
DEF PROCget_icon_info(handle%,icon%)
!wimp=handle%
wimp!4=icon%
SYS get_icon_info,0,wimp
ENDPROC
DEF PROCmouse(x%,y%,b%,handle%,icon%,ob%)
`b% = b% : `x% = x% : `y% = y% : `handle% = handle% : `icon% = icon%
IF handle% = -1 THEN ENDPROC
PROCget_window_state(handle%)
IF (b% AND 1) THEN
CASE handle% OF
OTHERWISE : PROCdrag_box(handle%,1)
ENDCASE
ENDIF
:
IF (b% AND 2) THEN
CASE handle% OF
WHEN windows(0) : PROCclose_window(windows(1))
WHEN windows(1) : PROCmight_close(icon%)
ENDCASE
ENDIF
:
IF (b% AND 4) THEN
IF handle%<>windows(0) THEN PROCscrn_copy
CASE handle% OF
WHEN windows(0) : PROCtest_open(windows(1))
WHEN windows(1) : PROCicon_menus
WHEN windows(2) : PROCmode_flags(icon%)
WHEN windows(4) : PROCload(icon%)
WHEN windows(6) : PROCselect_colour(icon%)
WHEN windows(7) : PROCpalette
WHEN windows(8) : PROCpatt_edit(icon%)
WHEN windows(9) : PROCselect_brush(icon%)
ENDCASE
ENDIF
ENDPROC
DEF PROCtest_open(handle%)
LOCAL b%,hp,c%
IF handle% = windows(3) AND `func% >= 2 THEN
FOR b% = 27 TO 0 STEP -1
PROCdelete_icon(windows(3),b%)
NEXT b%
hp = help(`cur_menu,`func%)
FOR b% = 0 TO 27
SYS create_icon,0,hp TO c%
hp = hp + 36
NEXT b%
ENDIF
PROCget_window_state(handle%)
IF wimp!32 AND &0003000 <> 0 THEN
PROCopen_window(!wimp,wimp!4,wimp!8,wimp!12,wimp!16,wimp!20,wimp!24,wimp!28)
ENDIF
ENDPROC
DEF PROCmight_close(icon%)
IF icon% = 1 THEN
PROCclose_window(windows(2))
ENDIF
CASE `cur_menu OF
WHEN 0 : IF icon% = `sub_men(0)-1 PROCclose_window(windows(3)):ELSE IF icon% = `sub_men(0) PROCclose_window(windows(4))
WHEN 1 : IF icon% = `sub_men(1) PROCclose_window(windows(3))
WHEN 2 : IF icon% = `sub_men(2) PROCclose_window(windows(3))
WHEN 3 : IF icon% = `sub_men(3) PROCclose_window(windows(3))
WHEN 4 : IF icon% = `sub_men(4) PROCclose_window(windows(3))
WHEN 5 : IF icon% = `sub_men(5) PROCclose_window(windows(3))
ENDCASE
ENDPROC
DEF PROCdrag_box(handle%,type%)
!wimp = handle%
wimp!4= type%
SYS drag_box,0,wimp
ENDPROC
DEF PROCkey_bounce
LOCAL x%,y%,b%
REPEAT
MOUSE x%,y%,b%
UNTIL b%<>`b%
ENDPROC
DEF PROCset_carot_position(handle%,icon%,x%,y%,h%,i%)
SYS set_carot_position,handle%,icon%,x%,y%,h%,i%
ENDPROC
DEF PROCdef_heap(handle%)
LOCAL n%,g%,x0,y0,x1,y1,f%,for%,bck%,tit$,a
a = 0 : hp = heap
REPEAT
READ n% : `sub_men(a) = n%+1
IF n% <> 0 THEN
heap(a) = hp
FOR g% = 1 TO n%
READ x0,y0,x1,y1,f%,for%,bck%,tit$
!hp = handle%
hp!4= x0 : hp!8= y0
hp!12 = x1 : hp!16 = y1
hp!20 = f%
hp?22 = for% : hp?23 = bck%
$(hp+24) = tit$
hp = hp + 36
NEXT g%
ENDIF
a = a + 1
UNTIL n%=0
:
`func = heap(0)
`draw = heap(1)
`shape= heap(2)
`curve= heap(3)
`text = heap(4)
`area = heap(5)
:
ENDPROC
DATA 9
DATA 0,-888,160,-748,&303D,`if,&88,func
DATA 160,-888,300,-748,&303D,`if,`ib,draw
DATA 300,-888,440,-748,&303D,`if,`ib,shapes
DATA 440,-888,580,-748,&303D,`if,`ib,curve
DATA 580,-888,720,-748,&303D,`if,`ib,text
DATA 720,-888,860,-748,&303D,`if,`ib,area
DATA 860,-888,1000,-748,&303D,`if,`ib,""
DATA 1000,-888,1140,-748,&303D,`if,`ib,load
DATA 1140,-888,1280,-748,&303D,`if,`ib,save
DATA 7
DATA 0,-888,160,-748,&303D,`if,&88,draw
DATA 160,-888,320,-748,&303D,`if,`ib,line
DATA 320,-888,480,-748,&303D,`if,`ib,joined
DATA 480,-888,640,-748,&303D,`if,`ib,radii
DATA 640,-888,800,-748,&303D,`if,`ib,brush
DATA 800,-888,1000,-748,&303D,`if,`ib,select
DATA 1000,-888,1280,-748,&303D,`if,`ib,""
DATA 6
DATA 0,-888,160,-748,&303D,`if,&88,shapes
DATA 160,-888,320,-748,&303D,`if,`ib,rectangle
DATA 320,-888,480,-748,&303D,`if,`ib,square
DATA 480,-888,640,-748,&303D,`if,`ib,parallelo
DATA 640,-888,800,-748,&303D,`if,`ib,triangle
DATA 800,-888,1280,-748,&303D,`if,`ib,""
DATA 7
DATA 0,-888,160,-748,&303D,`if,&88,curve
DATA 160,-888,320,-748,&303D,`if,`ib,circle
DATA 320,-888,480,-748,&303D,`if,`ib,ellipse
DATA 480,-888,640,-748,&303D,`if,`ib,segment
DATA 640,-888,800,-748,&303D,`if,`ib,arc
DATA 800,-888,1000,-748,&303D,`if,`ib,sector
DATA 1000,-888,1280,-748,&303D,`if,`ib,""
DATA 3
DATA 0,-888,160,-748,&303D,`if,&88,text
DATA 160,-888,320,-748,&303D,`if,`ib,text@cur
DATA 320,-888,1280,-748,&303D,`if,`ib,""
DATA 7
DATA 0,-888,160,-748,&303D,`if,&88,area
DATA 160,-888,320,-748,&303D,`if,`ib,copy
DATA 320,-888,480,-748,&303D,`if,`ib,move
DATA 480,-888,640,-748,&303D,`if,`ib,clear
DATA 640,-888,800,-748,&303D,`if,`ib,pattern
DATA 800,-888,1000,-748,&303D,`if,`ib,fill
DATA 1000,-888,1280,-748,&303D,`if,`ib,""
DATA 0
DEF PROCicon_menus
PROCget_pointer_info
IF wimp!12 = -1 OR wimp!12 <> windows(1) THEN
ENDPROC
ENDIF
IF wimp!16 < 2 THEN
IF wimp!16 = 1 PROCtest_open(windows(2))
IF wimp!16 = 0 PROCtest_open(windows(7)):PROCpalette
ENDPROC
ENDIF
IF `cur_menu = 0 THEN
CASE wimp!16 OF
WHEN 3 : PROCdraw_menu: `func% = 3:PROCupdate_help
WHEN 4 : PROCshape_menu : `func% = 3:PROCupdate_help
WHEN 5 : PROCcurve_menu : `func% = 3:PROCupdate_help
WHEN 6 : PROCtext_menu: `func% = 3:PROCupdate_help
WHEN 7 : PROCarea_menu: `func% = 3:PROCupdate_help
WHEN 8 : REM PROCtest_open(windows(3)) RCM
WHEN 9 : PROCget_dir
WHEN 10: IF FNon_top THEN
PROCtest_open(windows(10))
PROCset_carot_position(windows(10),0,0,0,-1,0)
ENDIF
ENDCASE
PROCshow_icons(`func%):ENDPROC
ENDIF
IF `cur_menu = 1 THEN
CASE wimp!16 OF
WHEN 2 : PROCfunc_menu
WHEN 3 : `func% = 3:`state%=0:PROCupdate_help
WHEN 4 : `func% = 4:`state%=0:PROCupdate_help
WHEN 5 : `func% = 5:`state%=0:PROCupdate_help
WHEN 6 : `func% = 6:`state%=0:PROCupdate_help
WHEN 7 : `func% = 7:`state%=0:PROCupdate_help
PROCtest_open(windows(9))
WHEN `sub_men(1) : REM PROCtest_open(windows(3)) RCM
ENDCASE
PROCshow_icons(`func%)
ENDIF
IF `cur_menu = 2 THEN
CASE wimp!16 OF
WHEN 2 : PROCfunc_menu
WHEN 3 : `func% = 3:`state%=0:PROCupdate_help
WHEN 4 : `func% = 4:`state%=0:PROCupdate_help
WHEN 5 : `func% = 5:`state%=0:PROCupdate_help
WHEN 6 : `func% = 6:`state%=0:PROCupdate_help
WHEN `sub_men(2) : REM PROCtest_open(windows(3)) RCM
ENDCASE
PROCshow_icons(`func%)
ENDIF
IF `cur_menu = 3 THEN
CASE wimp!16 OF
WHEN 2 : PROCfunc_menu
WHEN 3 : `func% = 3:`state%=0:PROCupdate_help
WHEN 4 : `func% = 4:`state%=0:PROCupdate_help
WHEN 5 : `func% = 5:`state%=0:PROCupdate_help
WHEN 6 : `func% = 6:`state%=0:PROCupdate_help
WHEN 7 : `func% = 7:`state%=0:PROCupdate_help
WHEN `sub_men(3) : REM PROCtest_open(windows(3)) RCM
ENDCASE
PROCshow_icons(`func%)
ENDIF
IF `cur_menu = 4 THEN
CASE wimp!16 OF
WHEN 2 : PROCfunc_menu
WHEN 3 : `func% = 3:`state%=0:PROCupdate_help
WHEN `sub_men(4) :REM PROCtest_open(windows(3)) RCM
ENDCASE
PROCshow_icons(`func%)
ENDIF
IF `cur_menu = 5 THEN
CASE wimp!16 OF
WHEN 2 : PROCfunc_menu
WHEN 3 : `func% = 3:`state%=0:PROCupdate_help
WHEN 4 : `func% = 4:`state%=0:PROCupdate_help
WHEN 5 : `func% = 5:`state%=0:PROCupdate_help
WHEN 6 : `func% = 6:`state%=0:PROCupdate_help
PROCtest_open(windows(8)):PROCshow_patt
WHEN 7 : `func% = 7
WHEN `sub_men(5) : REM PROCtest_open(windows(3)) RCM
ENDCASE
PROCshow_icons(`func%)
ENDIF
FOR a% = 2 TO `sub_men(`cur_menu)+1
PROCset_icon_state(windows(1),a%,0,0,0,0)
NEXT a%
ENDPROC
DEF PROCfunc_menu
LOCAL n%,a%
a% = a% + 1
FOR n% = `sub_men(`cur_menu)+1 TO 2 STEP-1
PROCdelete_icon(windows(1),n%)
NEXT n%
SYS create_icon,0,`func
SYS create_icon,0,`func+36
SYS create_icon,0,`func+72
SYS create_icon,0,`func+108
SYS create_icon,0,`func+144
SYS create_icon,0,`func+180
SYS create_icon,0,`func+216
SYS create_icon,0,`func+252
SYS create_icon,0,`func+288
`cur_menu = 0:`func% = 2
ENDPROC
DEF PROCdraw_menu
LOCAL n%
FOR n% = `sub_men(0)+1 TO 2 STEP-1
PROCdelete_icon(windows(1),n%)
NEXT n%
SYS create_icon,0,`draw
SYS create_icon,0,`draw+36
SYS create_icon,0,`draw+72
SYS create_icon,0,`draw+108
SYS create_icon,0,`draw+144
SYS create_icon,0,`draw+180
SYS create_icon,0,`draw+216
`cur_menu = 1 : `state% = 0
ENDPROC
DEF PROCshape_menu
LOCAL n%
FOR n% = `sub_men(0)+1 TO 2 STEP-1
PROCdelete_icon(windows(1),n%)
NEXT n%
SYS create_icon,0,`shape
SYS create_icon,0,`shape+36
SYS create_icon,0,`shape+72
SYS create_icon,0,`shape+108
SYS create_icon,0,`shape+144
SYS create_icon,0,`shape+180
`cur_menu = 2 : `state% = 0
ENDPROC
DEF PROCcurve_menu
LOCAL n%
FOR n%= `sub_men(0)+1 TO 2 STEP-1
PROCdelete_icon(windows(1),n%)
NEXT n%
SYS create_icon,0,`curve
SYS create_icon,0,`curve+36
SYS create_icon,0,`curve+72
SYS create_icon,0,`curve+108
SYS create_icon,0,`curve+144
SYS create_icon,0,`curve+180
SYS create_icon,0,`curve+216
`cur_menu = 3 : `state% = 0
ENDPROC
DEF PROCtext_menu
LOCAL n%
FOR n%= `sub_men(0)+1 TO 2 STEP-1
PROCdelete_icon(windows(1),n%)
NEXT n%
SYS create_icon,0,`text
SYS create_icon,0,`text+36
SYS create_icon,0,`text+72
`cur_menu = 4 : `state% = 0
ENDPROC
DEF PROCarea_menu
LOCAL n%
FOR n%= `sub_men(0)+1 TO 2 STEP-1
PROCdelete_icon(windows(1),n%)
NEXT n%
SYS create_icon,0,`area
SYS create_icon,0,`area+36
SYS create_icon,0,`area+72
SYS create_icon,0,`area+108
SYS create_icon,0,`area+144
SYS create_icon,0,`area+180
SYS create_icon,0,`area+216
`cur_menu = 5 : `state% = 0
ENDPROC
DEF PROCmode_flags(icon%)
PROCget_pointer_info
CASE icon% OF
WHEN 0 : `m_open = `m_fill : `m_fill = NOT `m_fill
WHEN 1 : `m_fill = `m_open : `m_open = NOT `m_open
WHEN 2 : `m_dots = NOT `m_dots
WHEN 3 : `m_xor= NOT `m_xor
IF`m_xor `m_or=FALSE:`m_and=FALSE:`m_inv=FALSE:`style%=3
WHEN 4 : `m_or = NOT `m_or
IF`m_or `m_xor=FALSE:`m_and=FALSE:`m_inv=FALSE:`style%=1
WHEN 5 : `m_and= NOT `m_and
IF`m_and `m_xor=FALSE:`m_or=FALSE:`m_inv=FALSE:`style%=2
WHEN 6 : `m_inv= NOT `m_inv
IF`m_inv `m_xor=FALSE:`m_or=FALSE:`m_and=FALSE:`style%=4
ENDCASE
IF `m_xor=FALSE AND `m_or=FALSE AND `m_and=FALSE AND `m_inv=FALSE `style%=0
PROCset_icon_state(windows(2),0,&303D,`if,FNicol(`m_fill),-1)
PROCset_icon_state(windows(2),1,&303D,`if,FNicol(`m_open),-1)
PROCset_icon_state(windows(2),2,&303D,`if,FNicol(`m_dots),-1)
PROCset_icon_state(windows(2),3,&303D,`if,FNicol(`m_xor),-1)
PROCset_icon_state(windows(2),4,&303D,`if,FNicol(`m_or),-1)
PROCset_icon_state(windows(2),5,&303D,`if,FNicol(`m_and),-1)
PROCset_icon_state(windows(2),6,&303D,`if,FNicol(`m_inv),-1)
ENDPROC
DEF FNicol(f%)
IF f% THEN
= &88
ELSE
= &89
ENDIF
DEF PROCclear_menu(last%)
FOR a% = 3 TO last%
PROCset_icon_state(windows(1),a%,&303D,`if,`ib,-1)
NEXT a%
ENDPROC
DEF PROCset_menu(icon%)
PROCset_icon_state(windows(1),icon%,&303D,`if,&88,-1)
ENDPROC
DEF PROCshow_icons(icon%)
LOCAL a%
FOR a% = 2 TO `sub_men(`cur_menu)
PROCset_icon_state(windows(1),a%,&303D,`if,`ib,-1)
NEXT a%
PROCset_icon_state(windows(1),icon%,&303D,`if,&88,-1)
ENDPROC
DEF FNdraw_area
!t_wimp= windows(5)
SYS get_window_state,0,t_wimp
`dr_area = t_wimp!28
IF `handle% <> windows(5) THEN = FALSE
IF t_wimp!28 <> -1 THEN= FALSE
IF `x% < 166 THEN= FALSE
IF `y% < 232 THEN= FALSE
= TRUE
DEF PROCdo_line
CASE `state% OF
WHEN 1 : PROCrubb_line
IF (`b% AND 1)=1 THEN
PROCrubb_line
`do_x0% = `x%
`do_y0% = `y%
ELSE
IF (`b% AND 4)=4 THEN
PROCrubb_line
PLOT 4,`do_x0%,`do_y0%
PLOT 5,`x%,`y%
`state% = 0:PROCkey_bounce
ELSE
PROCrubb_line
ENDIF
ENDIF
WHEN 0 : IF (`b% AND 4)=4 THEN
`do_x0% = `x%
`do_y0% = `y%
`state% = 1:PROCkey_bounce
ENDIF
ENDCASE
ENDPROC
DEF PROCdo_joined
CASE `state% OF
WHEN 1 : PROCrubb_line
IF (`b% AND 1)=1 THEN
PROCrubb_line
`do_x0% = `x%
`do_y0% = `y%
ELSE
IF (`b% AND 4)=4 THEN
PROCrubb_line
PLOT 4,`do_x0%,`do_y0%
PLOT 5,`x%,`y%
`do_x0%=`x%
`do_y0%=`y%
ELSE
PROCrubb_line
ENDIF
ENDIF
WHEN 0 : IF (`b% AND 4)=4 THEN
`do_x0% = `x%
`do_y0% = `y%
`state% = 1:PROCkey_bounce
ENDIF
ENDCASE
ENDPROC
DEF PROCdo_point
IF (`b% AND 4)=4 THEN
PLOT 4,`x%-8,`y%+16
COLOUR 135:GCOL135
VDU5,`brsh%
ENDIF
ENDPROC
DEF PROCdo_radii
CASE `state% OF
WHEN 1 : PROCrubb_line
IF (`b% AND 1)=1 THEN
PROCrubb_line
`do_x0% = `x%
`do_y0% = `y%
ELSE
IF (`b% AND 4)=4 THEN
PROCrubb_line
PLOT 4,`do_x0%,`do_y0%
PLOT 5,`x%,`y%
ELSE
PROCrubb_line
ENDIF
ENDIF
WHEN 0 : IF (`b% AND 4)=4 THEN
`do_x0% = `x%
`do_y0% = `y%
`state% = 1:PROCkey_bounce
ENDIF
ENDCASE
ENDPROC
DEF PROCdo_rect
CASE `state% OF
WHEN 1 : PROCrubb_rect
IF (`b% AND 1)=1 THEN
PROCrubb_rect
`do_x0% = `x%
`do_y0% = `y%
ELSE
IF (`b% AND 4)=4 THEN
PROCrubb_rect
PROCdraw_rect
`state% = 0:PROCkey_bounce
ELSE
PROCrubb_rect
ENDIF
ENDIF
WHEN 0 : IF (`b% AND 4)=4 THEN
`do_x0% = `x%
`do_y0% = `y%
`state% = 1:PROCkey_bounce
ENDIF
ENDCASE
ENDPROC
DEF PROCdo_square
CASE `state% OF
WHEN 1 : PROCrubb_sqre
IF (`b% AND 1)=1 THEN
PROCrubb_rect
`do_x0% = `x%
`do_y0% = `y%
ELSE
IF (`b% AND 4)=4 THEN
PROCrubb_sqre
PROCdraw_sqre
`state% = 0:PROCkey_bounce
ELSE
PROCrubb_sqre
ENDIF
ENDIF
WHEN 0 : IF (`b% AND 4)=4 THEN
`do_x0% = `x%
`do_y0% = `y%
`state% = 1:PROCkey_bounce
ENDIF
ENDCASE
ENDPROC
DEF PROCdo_para
CASE `state% OF
WHEN 0 : IF (`b% AND 4)=4 THEN
`do_x0% = `x%
`do_y0% = `y%
`state% = 1:PROCkey_bounce
ENDIF
WHEN 1 : PROCrubb_line
IF (`b% AND 1)=1 THEN
PROCrubb_line
`do_x0% = `x%
`do_y0% = `y%
ELSE
IF (`b% AND 4)=4 THEN
PROCrubb_line
`do_x1% = `x%
`do_y1% = `y%
`state% = 2:PROCkey_bounce
ELSE
PROCrubb_line
ENDIF
ENDIF
WHEN 2 : PROCrubb_para
IF (`b% AND 1)=1 THEN
PROCrubb_para
`do_x0% = `x%
`do_y0% = `y%
ELSE
IF (`b% AND 4)=4 THEN
PROCrubb_para
PROCdraw_para
`state% = 0:PROCkey_bounce
ELSE
PROCrubb_para
ENDIF
ENDIF
ENDCASE
ENDPROC
DEF PROCdo_tria
CASE `state% OF
WHEN 0 : IF (`b% AND 4)=4 THEN
`do_x0% = `x%
`do_y0% = `y%
`state% = 1:PROCkey_bounce
ENDIF
WHEN 1 : PROCrubb_line
IF (`b% AND 1)=1 THEN
PROCrubb_line
`do_x0% = `x%
`do_y0% = `y%
ELSE
IF (`b% AND 4)=4 THEN
PROCrubb_line
`do_x1% = `x%
`do_y1% = `y%
`state% = 2:PROCkey_bounce
ELSE
PROCrubb_line
ENDIF
ENDIF
WHEN 2 : PROCrubb_tria
IF (`b% AND 1)=1 THEN
PROCrubb_tria
`do_x0% = `x%
`do_y0% = `y%
ELSE
IF (`b% AND 4)=4 THEN
PROCrubb_tria
PROCdraw_tria
`state% = 0:PROCkey_bounce
ELSE
PROCrubb_tria
ENDIF
ENDIF
ENDCASE
ENDPROC
DEF PROCdo_circ
CASE `state% OF
WHEN 0 : IF (`b% AND 4)=4 THEN
`do_x0% = `x%
`do_y0% = `y%
`state% = 1:PROCkey_bounce
ENDIF
WHEN 1 : PROCrubb_circ
IF (`b% AND 1)=1 THEN
PROCrubb_circ
`do_x0% = `x%
`do_y0% = `y%
ELSE
IF (`b% AND 4)=4 THEN
PROCrubb_circ
PROCdraw_circ
`state% = 0:PROCkey_bounce
ELSE
PROCrubb_circ
ENDIF
ENDIF
ENDCASE
ENDPROC
DEF PROCdo_elip
CASE `state% OF
WHEN 0 : IF (`b% AND 4)=4 THEN
`do_x0% = `x%
`do_y0% = `y%
`state% = 1:PROCkey_bounce
ENDIF
WHEN 1 : IF (`b% AND 1)=1 THEN
`do_x0% = `x%
`do_y0% = `y%
ELSE
PROCrubb_line
IF (`b% AND 4)=4 THEN
PROCrubb_line
`do_x1% = `x%
`do_y1% = `y%
`state% = 2:PROCkey_bounce
ELSE
PROCrubb_line
ENDIF
ENDIF
WHEN 2 : PROCrubb_elip
IF (`b% AND 1)=1 THEN
PROCrubb_elip
`do_x0% = `x%
`do_y0% = `y%
ELSE
IF (`b% AND 4)=4 THEN
PROCrubb_elip
PROCdraw_elip
`state% = 0:PROCkey_bounce
ELSE
PROCrubb_elip
ENDIF
ENDIF
ENDCASE
ENDPROC
DEF PROCdo_segm
CASE `state% OF
WHEN 0 : IF (`b% AND 4)=4 THEN
`do_x0% = `x%
`do_y0% = `y%
`state% = 1:PROCkey_bounce
ENDIF
WHEN 1 : PROCrubb_line
IF (`b% AND 1)=1 THEN
PROCrubb_line
`do_x0% = `x%
`do_y0% = `y%
ELSE
IF (`b% AND 4)=4 THEN
PROCrubb_line
`do_x1% = `x%
`do_y1% = `y%
`state% = 2:PROCkey_bounce
ELSE
PROCrubb_line
ENDIF
ENDIF
WHEN 2 : PROCrubb_segm
IF (`b% AND 1)=1 THEN
PROCrubb_segm
`do_x1%=`x%
`do_y1%=`y%
ELSE
IF (`b% AND 4)=4 THEN
PROCrubb_segm
PROCdraw_segm
`state% = 0:PROCkey_bounce
ELSE
PROCrubb_segm
ENDIF
ENDIF
ENDCASE
ENDPROC
DEF PROCdo_arc
CASE `state% OF
WHEN 0 : IF (`b% AND 4)=4 THEN
`do_x0% = `x%
`do_y0% = `y%
`state% = 1:PROCkey_bounce
ENDIF
WHEN 1 : PROCrubb_line
IF (`b% AND 1)=1 THEN
PROCrubb_line
`do_x0% = `x%
`do_y0% = `y%
ELSE
IF (`b% AND 4)=4 THEN
PROCrubb_line
`do_x1% = `x%
`do_y1% = `y%
`state% = 2:PROCkey_bounce
ELSE
PROCrubb_line
ENDIF
ENDIF
WHEN 2 : PROCrubb_arc
IF (`b% AND 1)=1 THEN
PROCrubb_arc
`do_x1%=`x%
`do_y1%=`y%
ELSE
IF (`b% AND 4)=4 THEN
PROCrubb_arc
PROCdraw_arc
`state% = 0:PROCkey_bounce
ELSE
PROCrubb_arc
ENDIF
ENDIF
ENDCASE
ENDPROC
DEF PROCdo_sect
CASE `state% OF
WHEN 0 : IF (`b% AND 4)=4 THEN
`do_x0% = `x%
`do_y0% = `y%
`state% = 1:PROCkey_bounce
ENDIF
WHEN 1 : PROCrubb_line
IF (`b% AND 1)=1 THEN
PROCrubb_line
`do_x0% = `x%
`do_y0% = `y%
ELSE
IF (`b% AND 4)=4 THEN
PROCrubb_line
`do_x1% = `x%
`do_y1% = `y%
`state% = 2:PROCkey_bounce
ELSE
PROCrubb_line
ENDIF
ENDIF
WHEN 2 : PROCrubb_sect
IF (`b% AND 1)=1 THEN
PROCrubb_sect
`do_x1%=`x%
`do_y1%=`y%
ELSE
IF (`b% AND 4)=4 THEN
PROCrubb_sect
PROCdraw_sect
`state% = 0:PROCkey_bounce
ELSE
PROCrubb_sect
ENDIF
ENDIF
ENDCASE
ENDPROC
DEF PROCdo_copy
CASE `state% OF
WHEN 0 : IF (`b% AND 4)=4 THEN
`do_x0% = `x%
`do_y0% = `y%
`state% = 1:PROCkey_bounce
PROCkey_bounce
ENDIF
WHEN 1 : PROCrubb_rect
IF (`b% AND 1)=1 THEN
PROCrubb_rect
`do_x0% = `x%
`do_y0% = `y%
ELSE
IF (`b% AND 4)=4 THEN
PROCrubb_rect
`do_x1% = `x%
`do_y1% = `y%
MOVE `do_x0%,`do_y0%
MOVE `do_x1%,`do_y1%
REM *sget 1
SYS &2E,256+14,spt_area,"1",0
`state% = 2:PROCkey_bounce
PROCkey_bounce
ELSE
PROCrubb_rect
ENDIF
ENDIF
WHEN 2 : PROCmove_rect
IF (`b% AND 4)=4 THEN
PROCmove_rect
PROCdraw_copy
ELSE
IF (`b% AND 1)=1 THEN
PROCmove_rect
`state% = 0:PROCkey_bounce
PROCkey_bounce
ELSE
PROCmove_rect
ENDIF
ENDIF
ENDCASE
ENDPROC
DEF PROCdo_clear
IF (`b% AND 4)=4 THEN
GCOL 135
CLG
`dr_area=-1
PROCscrn_copy
SYS screen_redraw,-1,0,0,1279,1023
ENDIF
ENDPROC
DEF PROCdo_move
CASE `state% OF
WHEN 0 : IF (`b% AND 4)=4 THEN
`do_x0% = `x%
`do_y0% = `y%
`state% = 1:PROCkey_bounce
PROCkey_bounce
ENDIF
WHEN 1 : PROCrubb_rect
IF (`b% AND 1)=1 THEN
PROCrubb_rect
`do_x0% = `x%
`do_y0% = `y%
ELSE
IF (`b% AND 4)=4 THEN
PROCrubb_rect
`do_x1% = `x%
`do_y1% = `y%
`state% = 2:PROCkey_bounce
PROCkey_bounce
ELSE
PROCrubb_rect
ENDIF
ENDIF
WHEN 2 : PROCmove_rect
IF (`b% AND 4)=4 THEN
PROCmove_rect
PROCdraw_move
`state% = 0:PROCkey_bounce
ELSE
PROCmove_rect
ENDIF
ENDCASE
ENDPROC
DEF PROCdo_fill
IF (`b% AND 4)<>4 THEN ENDPROC
a% = POINT(`x%,`y%)
GCOL128+a%
PLOT &85,`x%,`y%
GCOL135
ENDPROC
DEF PROCdo_text
CASE `state% OF
WHEN 0 : IF (`b% AND 4)=4 THEN
`do_x0%=`x%
`do_y0%=`y%
`state% = 1 : PROCkey_bounce
SYS 6,15,1
ENDIF
WHEN 1 : WAIT:PROCrubb_curs:WAIT
IF (`b% AND 1)=1 THEN
PROCrubb_curs
`do_x0%=`x%
`do_y0%=`y%
ELSE
PROCrubb_curs
a%=INKEY(0)
IF a%=13 THEN
`state%=0
ELSE
IF a%<>-1 THEN
VDU 5
PLOT 4,`do_x0%,`do_y0%+32
VDU a%
`do_x0%=`do_x0%+16
ENDIF
ENDIF
ENDIF
ENDCASE
ENDPROC
REM *************************************************************
DEF PROCrubb_line
PLOT 4,`do_x0%,`do_y0%
PLOT 6,`x%,`y%
ENDPROC
DEF PROCrubb_rect
PLOT 4,`do_x0%,`do_y0%
PLOT 6,`do_x0%,`y%
PLOT 6,`x%,`y%
PLOT 6,`x%,`do_y0%
PLOT 6,`do_x0%,`do_y0%
ENDPROC
DEF PROCrubb_sqre
IF (ABS(`do_x0%-`x%)) > (ABS(`do_y0%-`y%)) THEN
IF `do_y0% > `y% THEN
`y% = `do_y0% - (ABS(`do_x0%-`x%))
ELSE
`y% = `do_y0% + (ABS(`do_x0%-`x%))
ENDIF
ELSE
IF `do_x0% > `x% THEN
`x% = `do_x0% - (ABS(`do_y0%-`y%))
ELSE
`x% = `do_x0% + (ABS(`do_y0%-`y%))
ENDIF
ENDIF
PLOT 4,`do_x0%,`do_y0%
PLOT 6,`do_x0%,`y%
PLOT 6,`x%,`y%
PLOT 6,`x%,`do_y0%
PLOT 6,`do_x0%,`do_y0%
ENDPROC
DEF PROCrubb_para
PLOT 4,`do_x0%,`do_y0%
PLOT 6,`do_x1%,`do_y1%
PLOT 6,`x%,`y%
PLOT 6,`do_x0%+(`x%-`do_x1%),`do_y0%+(`y%-`do_y1%)
PLOT 6,`do_x0%,`do_y0%
ENDPROC
DEF PROCrubb_tria
PLOT 4,`do_x0%,`do_y0%
PLOT 6,`do_x1%,`do_y1%
PLOT 6,`x%,`y%
PLOT 6,`do_x0%,`do_y0%
ENDPROC
DEF PROCrubb_circ
PLOT 4,`do_x0%,`do_y0%
PLOT &96,`x%,`y%
ENDPROC
DEF PROCrubb_elip
PLOT 4,`do_x0%,`do_y0%
PLOT 4,`do_x1%,`do_y1%
PLOT &C6,`x%,`y%
ENDPROC
DEF PROCrubb_segm
PLOT 4,`do_x0%,`do_y0%
PLOT 4,`do_x1%,`do_y1%
PLOT &AE,`x%,`y%
ENDPROC
DEF PROCrubb_arc
PLOT 4,`do_x0%,`do_y0%
PLOT 4,`do_x1%,`do_y1%
PLOT &A6,`x%,`y%
ENDPROC
DEF PROCrubb_sect
PLOT 4,`do_x0%,`do_y0%
PLOT 4,`do_x1%,`do_y1%
PLOT &B6,`x%,`y%
ENDPROC
DEF PROCrubb_curs
PLOT 4,`do_x0%,`do_y0%
PLOT &62,16,32
ENDPROC
DEF PROCmove_rect
PLOT 4,`x%,`y%
PLOT 6,`x%,`y%+ABS(`do_y0%-`do_y1%)
PLOT 6,`x%+ABS(`do_x1%-`do_x0%),`y%+ABS(`do_y0%-`do_y1%)
PLOT 6,`x%+ABS(`do_x1%-`do_x0%),`y%
PLOT 6,`x%,`y%
ENDPROC
REM *************************************************************
DEF PROCdraw_rect
IF `m_fill THEN
RECTANGLE FILL `x%,`y%,`do_x0%-`x%,`do_y0%-`y%
ELSE
RECTANGLE `x%,`y%,`do_x0%-`x%,`do_y0%-`y%
ENDIF
ENDPROC
DEF PROCdraw_sqre
IF (ABS(`do_x0%-`x%)) > (ABS(`do_y0%-`y%)) THEN
IF `do_y0% > `y% THEN
`y% = `do_y0% - (ABS(`do_x0%-`x%))
ELSE
`y% = `do_y0% + (ABS(`do_x0%-`x%))
ENDIF
ELSE
IF `do_x0% > `x% THEN
`x% = `do_x0% - (ABS(`do_y0%-`y%))
ELSE
`x% = `do_x0% + (ABS(`do_y0%-`y%))
ENDIF
ENDIF
IF `m_open THEN
RECTANGLE `x%,`y%,`do_x0%-`x%,`do_y0%-`y%
ELSE
RECTANGLE FILL `x%,`y%,`do_x0%-`x%,`do_y0%-`y%
ENDIF
ENDPROC
DEF PROCdraw_para
IF `m_open THEN
PLOT 4,`do_x0%,`do_y0%
PLOT 5,`do_x1%,`do_y1%
PLOT 5,`x%,`y%
PLOT 5,`do_x0%+(`x%-`do_x1%),`do_y0%+(`y%-`do_y1%)
PLOT 5,`do_x0%,`do_y0%
ELSE
PLOT 4,`do_x0%,`do_y0%
PLOT 4,`do_x1%,`do_y1%
PLOT &75,`x%,`y%
ENDIF
ENDPROC
DEF PROCdraw_tria
IF `m_open THEN
PLOT 4,`do_x0%,`do_y0%
PLOT 5,`do_x1%,`do_y1%
PLOT 5,`x%,`y%
PLOT 5,`do_x0%,`do_y0%
ELSE
PLOT 4,`do_x0%,`do_y0%
PLOT 4,`do_x1%,`do_y1%
PLOT &55,`x%,`y%
ENDIF
ENDPROC
DEF PROCdraw_circ
PLOT 4,`do_x0%,`do_y0%
IF `m_open THEN
PLOT &95,`x%,`y%
ELSE
PLOT &9D,`x%,`y%
ENDIF
ENDPROC
DEF PROCdraw_elip
PLOT 4,`do_x0%,`do_y0%
PLOT 4,`do_x1%,`do_y1%
IF `m_open THEN
PLOT &C5,`x%,`y%
ELSE
PLOT &CD,`x%,`y%
ENDIF
ENDPROC
DEF PROCdraw_segm
PLOT 4,`do_x0%,`do_y0%
IF `m_open THEN
PLOT 4,`do_x1%,`do_y1%
PLOT &AD,`x%,`y%
ELSE
PLOT 4,`do_x1%,`do_y1%
PLOT &AD,`x%,`y%
ENDIF
ENDPROC
DEF PROCdraw_arc
PLOT 4,`do_x0%,`do_y0%
PLOT 4,`do_x1%,`do_y1%
PLOT &A5,`x%,`y%
ENDPROC
DEF PROCdraw_sect
PLOT 4,`do_x0%,`do_y0%
IF `m_open THEN
PLOT 4,`do_x1%,`do_y1%
PLOT &B5,`x%,`y%
ELSE
PLOT 4,`do_x1%,`do_y1%
PLOT &B5,`x%,`y%
ENDIF
ENDPROC
DEF PROCdraw_copy
REM *SCHOOSE 1
MOVE `x%,`y%
SYS &2E,256+28,spt_area,"1"
ENDPROC
DEF PROCdraw_move
GCOL 135
PLOT 4,`do_x0%,`do_y0%
PLOT 4,`do_x1%,`do_y1%
PLOT &BD,`x%,`y%
ENDPROC
DATA "WELCOME PAINT By H.Douglas-Smith"
DATA "Help is not available on 512k machine"
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA ""
REM contain 28 icons (0-27)
DEF PROCcreate_help
LOCAL a$,b$,a%,b%,c%
n% = 0
hp = `help
REPEAT
FOR a% = 1 TO 7
READ a$
IF LEN a$<44 THEN
REPEAT
a$ = " "+a$+" "
UNTIL LEN a$ >= 44
ENDIF
a$ = LEFT$(a$,44)
FOR b% = 0 TO 3
!hp = windows(3)
hp!4= b%*180
hp!8= 0-a%*40
hp!12 = b%*180+180
hp!16 = 0-(a%*40-40)
hp!20 = &31
hp?23 = `ib*16+`if
$(hp+24) = MID$(a$,b%*11+1,11)
hp = hp + 36
NEXT b%
NEXT a%
READ b$
UNTIL b$ = ""
hp = `help
help(0,2) = hp
FOR a% = 1 TO 5
FOR b% = 3 TO `sub_men(a%)-1
help(a%,b%) = hp
NEXT b%
NEXT a%
ENDPROC
DEF PROCupdate_help
PROCget_window_state(windows(3))
IF (wimp?34 AND 1) = 1 THEN
PROCclose_window(windows(3))
PROCtest_open(windows(3))
ENDIF
ENDPROC
DEF PROCselect_colour(icon%)
IF icon%>19 THEN ENDPROC
IF icon% <16 THEN
`col% = icon%
GCOL `col%
RECTANGLE FILL 46,694,64,64
SYS &2E,16,0,"curcol",0,46,694,100,758
PROCset_icon_state(windows(6),20,&303E,`if,`col%+&80,-1)
PROCget_window_state(windows(7)) :REM palette
IF (wimp?34 AND 3)=3 PROCpal_upd
GCOL `style%,`col%
COLOUR `col%
ELSE
`ptrn = icon%-16
`col% = 17
PROCecf(`ptrn)
GCOL 80,0
RECTANGLE FILL 46,694,64,64
SYS &2E,16,0,"curcol",0,46,694,100,758
PROCupd_ecf
GCOL80+`style%,0
VDU26
PLOT &85,84,740
PROCshow_patt
ENDIF
ENDPROC
REM * Palette Window Update *
DEF PROCpal_upd
GCOL 7
CIRCLE FILL 500,500,150
RECTANGLE FILL 302,344,16,312
GCOL 0
CIRCLE 500,500,150
GCOL 0
CIRCLE 500,500,150
RECTANGLE 300,340,20,320
IF `col% > 15 THEN ENDPROC
PROCrgb_hsv(`col%)
MOVE 500,500
s1 = s*150
v1 = v*300
DRAW (s1*COS(RAD(h)))+500,(s1*SIN(RAD(h)))+500
MOVE 302,350+v1
DRAW 318,350+v1
ENDPROC
REM * PALETTE UPDATE*
DEF PROCpalette
IF `col% > 15 THEN ENDPROC
PROCrgb_hsv(`col%):REM convert colour palette to HSV
GCOL 7
CIRCLE FILL 500,500,150
RECTANGLE FILL 302,344,16,312
GCOL 0
CIRCLE 500,500,150
s1 = s*150
v1 = v*300

REM ***************************************************************
REM `b% seems to not hold the correct button presses at this point since
REM the only way to trigger this is to press left and middle together
REM ***************************************************************

IF (`b% AND 4)=4 THEN
IF SQR((`x%-500)^2+(`y%-500)^2) <= 150 THEN
s1 = SQR ((`x%-500)^2+(`y%-500)^2)
IF `x% = 500 THEN
h = 0
ELSE
h = DEG(ATN((`y%-500)/(`x%-500)))
ENDIF
IF h < 0 THEN
IF `x% < 500 THEN
h = h + 180
ELSE
h = h + 360
ENDIF
ELSE
IF `y% < 500 THEN
h = h + 180
ENDIF
ENDIF
IF h = 90 h = 91
IF h = 180 h = 181
IF h = 270 h = 271
s = s1/150 : v = v1/300
PROChsv_rgb
`r(`col%) = r*256 : `g(`col%) = g*256 : `b(`col%) = b*256
VDU19,`col%,16,r*256,g*256,b*256
ELSE
IF `x% > 300 AND `x% < 320 AND `y% > 350 AND `y% < 650 THEN
v1 = (`y%-350)
s = s1/150 : v = v1/300
PROChsv_rgb
`r(`col%) = r*256 : `g(`col%) = g*256 : `b(`col%) = b*256
VDU19,`col%,16,r*256,g*256,b*256
ENDIF
ENDIF
PROCrgb_hsv(`col%)
v1 = v*300 : s1 = s*150
MOVE 302,350+v1
DRAW 318,350+v1
MOVE 500,500
DRAW (s1*COS(RAD(h)))+500,(s1*SIN(RAD(h)))+500
ENDIF
ENDPROC
REM * RGB TO HSV*
DEF PROCrgb_hsv(c)
LOCAL max,min,r,g,b,rc,gc,bc
r = (`r(c)DIV 16)/16
g = (`g(c)DIV 16)/16
b = (`b(c)DIV 16)/16
max = 0 : min = 1
IF max < r THEN max = r
IF min > r THEN min = r
IF max < g THEN max = g
IF min > g THEN min = g
IF max < b THEN max = b
IF min > b THEN min = b
v = max
IF max <> 0 THEN
s = (max-min)/max
ELSE
s = 0
ENDIF
IF s = 0 THEN
h = 0
ELSE
rc = (max - r)/(max-min)
gc = (max-g)/(max-min)
bc = (max-b)/(max-min)
IF r = max THEN
h = bc-gc
ELSE
IF g = max THEN
h = 2 + rc - bc
ELSE
IF b = max THEN h = 4 + gc - rc
ENDIF
ENDIF
h = h * 60
IF h < 0 THEN h = h + 360
ENDIF
ENDPROC
REM * HSV TO RGB*
DEF PROChsv_rgb
LOCAL i%,f,p,q,t
IF s = 0 THEN
r = v
g = v
b = v
ENDPROC
ENDIF
IF h = 360 THEN h = 0
i% = h/60
h= h/60
f= h-i%
p= v*(1-s)
q= v*(1-(s*f))
t= v*(1-(s*(1-f)))
CASE i% OF
WHEN 0 : r = v : g = t : b = p
WHEN 1 : r = q : g = v : b = p
WHEN 2 : r = p : g = v : b = t
WHEN 3 : r = p : g = q : b = v
WHEN 4 : r = t : g = p : b = v
WHEN 5 : r = v : g = p : b = q
ENDCASE
ENDPROC
DEF PROCecf(n%)
VDU 23,2,`p(n%,0)+`p(n%,1)*16,`p(n%,8)+`p(n%,9)*16,`p(n%,16)+`p(n%,17)*16,`p(n%,24)+`p(n%,25)*16,`p(n%,32)+`p(n%,33)*16,`p(n%,40)+`p(n%,41)*16,`p(n%,48)+`p(n%,49)*16,`p(n%,56)+`p(n%,57)*16
VDU 23,3,`p(n%,2)+`p(n%,3)*16,`p(n%,10)+`p(n%,11)*16,`p(n%,18)+`p(n%,19)*16,`p(n%,26)+`p(n%,27)*16,`p(n%,34)+`p(n%,35)*16,`p(n%,42)+`p(n%,43)*16,`p(n%,50)+`p(n%,51)*16,`p(n%,58)+`p(n%,59)*16
VDU 23,4,`p(n%,4)+`p(n%,5)*16,`p(n%,12)+`p(n%,13)*16,`p(n%,20)+`p(n%,21)*16,`p(n%,28)+`p(n%,29)*16,`p(n%,36)+`p(n%,37)*16,`p(n%,44)+`p(n%,45)*16,`p(n%,52)+`p(n%,53)*16,`p(n%,60)+`p(n%,61)*16
VDU 23,5,`p(n%,6)+`p(n%,7)*16,`p(n%,14)+`p(n%,15)*16,`p(n%,22)+`p(n%,23)*16,`p(n%,30)+`p(n%,31)*16,`p(n%,38)+`p(n%,39)*16,`p(n%,46)+`p(n%,47)*16,`p(n%,54)+`p(n%,55)*16,`p(n%,62)+`p(n%,63)*16
GCOL 80+`style%,0
RECTANGLE FILL 46,694,64,64

CASE n% OF
WHEN 0 : SYS &2E,16,0,"ecf0",0,46,694,100,758
WHEN 1 : SYS &2E,16,0,"ecf1",0,46,694,100,758
WHEN 2 : SYS &2E,16,0,"ecf2",0,46,694,100,758
WHEN 3 : SYS &2E,16,0,"ecf3",0,46,694,100,758
ENDCASE
ENDPROC
DEF PROCshow_patt
FOR a% = 0 TO 63
PROCset_icon_state(windows(8),a%,&3029,8,`p(`ptrn,a%)+&80,-1)
NEXT a%
ENDPROC
DEF PROCpatt_edit(icon%)
IF icon% = -1 THEN ENDPROC
IF `col% = 17 THEN ENDPROC
PROCset_icon_state(windows(8),icon%,&3029,8,`col%+&80,-1)
`p(`ptrn,icon%)=`col%
ENDPROC
DEF PROCscrn
GCOL 135
CLG
ENDPROC
DEF PROCupdate(handle%)
IF handle% = windows(5) THEN PROCdr_copy
IF handle% = windows(7) THEN PROCpal_upd
ENDPROC
DEF PROCscrn_copy
IF `dr_area = -1 THEN
SYS &2E,256+16,spt_area,"HDS",0,162,232,1274,972
ENDIF
ENDPROC
DEF PROCdr_copy
SYS &2E,256+34,spt_area,"HDS",162,232
ENDPROC
DEF PROCselect_brush(icon%)
IF icon%<0 OR icon%>12 THEN ENDPROC
PROCset_icon_state(windows(9),`brsh%-243,&303D,`if,`ib,-1)
`brsh% = icon%+243
PROCset_icon_state(windows(9),icon%,&303D,`if,&88,-1)
ENDPROC
REM **************************************************************
DEF PROCget_dir
FOR a% = `max_file% TO 0 STEP -1
PROCdelete_icon(windows(4),a%)
NEXT a%
a%=0: ht%=0
SYS &0C,10,"UserPics",par%,1,a%,255,"*" TO ,,,n%
IF n% = 0 THEN
  IF FNon_top THEN PROCtest_open(windows(4))
  ENDPROC
ENDIF
WHILE n%=1
  PROCentry
  a%+=1
  SYS &0C,10,"UserPics",par%,1,a%,255,"*" TO ,,,n%
ENDWHILE
IF FNon_top THEN PROCtest_open(windows(4))
ENDPROC
DEF PROCentry
!wimp = windows(4)
wimp!4= 10           : REM 0
wimp!8= ht% - 32
wimp!12 = 120        : REM 100
wimp!16 = ht%
wimp!20 = &3019
wimp?22 = `if
wimp?23 = `ib
$(wimp+24) = FNstrng(par%+20)
SYS create_icon,0,wimp
ht%=ht%-32
ENDPROC
DEF FNstrng(p%)
LOCAL res$: res$=""
WHILE ?p%<>0 res$+=CHR$(?p%):p%+=1:ENDWHILE
=res$
DEF PROCload(icon%)
IF icon% = -1 THEN ENDPROC
PROCget_icon_info(windows(4),icon%)
PROCclose_window(windows(4))
PROCdr_copy
VDU24,162;232;1274;972;
OSCLI("SCREENLOAD UserPics."+$(wimp+28))
`dr_area = -1
PROCscrn_copy
VDU26
ENDPROC
DEF PROCsave_name
IF !wimp<> windows(10) AND wimp!4<>0 THEN ENDPROC
IF wimp?24<> 13 THEN ENDPROC
PROCclose_window(windows(10))
PROCdr_copy
VDU24,162;232;1274;972;
OSCLI("SCREENSAVE UserPics."+$save%)
VDU26
ENDPROC
DEF PROCupd_ecf
FOR a% = 0 TO 3
PROCset_icon_state(windows(6),a%+16,&303E,`if,`ib,-1)
NEXT a%
ENDPROC
DEF FNon_top
!t_wimp= windows(5)
SYS get_window_state,0,t_wimp
IF t_wimp!28 <> -1 THEN= FALSE
= TRUE

DEF PROCreport
PROCopen_window(windows(11),100,50,1100,150,0,0,-1)
MOUSE RECTANGLE100,50,1000,136
ENDPROC
00000000  52 45 4d 20 3e 20 50 61  69 6e 74 69 6e 67 0a 52  |REM > Painting.R|
00000010  45 4d 20 28 63 29 20 41  63 6f 72 6e 20 43 6f 6d  |EM (c) Acorn Com|
00000020  70 75 74 65 72 73 20 31  39 38 37 0a 52 45 4d 20  |puters 1987.REM |
00000030  56 65 72 73 69 6f 6e 20  31 2e 32 0a 20 0a 2a 53  |Version 1.2. .*S|
00000040  4e 45 57 0a 44 49 4d 20  77 69 6d 70 20 32 32 30  |NEW.DIM wimp 220|
00000050  30 20 2c 20 77 69 6e 64  6f 77 73 28 33 31 29 20  |0 , windows(31) |
00000060  2c 20 68 65 61 70 20 34  30 30 30 20 2c 20 68 65  |, heap 4000 , he|
00000070  61 70 28 31 30 29 20 2c  20 60 73 75 62 5f 6d 65  |ap(10) , `sub_me|
00000080  6e 28 31 30 29 0a 44 49  4d 20 60 68 65 6c 70 20  |n(10).DIM `help |
00000090  32 30 30 30 20 2c 20 68  65 6c 70 28 31 30 2c 31  |2000 , help(10,1|
000000a0  30 29 20 2c 20 60 72 28  31 36 29 20 2c 20 60 67  |0) , `r(16) , `g|
000000b0  28 31 36 29 20 2c 20 60  62 28 31 36 29 20 2c 20  |(16) , `b(16) , |
000000c0  70 61 72 25 20 32 35 36  0a 44 49 4d 20 74 5f 77  |par% 256.DIM t_w|
000000d0  69 6d 70 20 31 32 38 20  2c 20 64 61 74 61 20 33  |imp 128 , data 3|
000000e0  31 30 30 20 2c 20 73 61  76 65 25 20 31 36 20 2c  |100 , save% 16 ,|
000000f0  20 60 70 28 33 2c 36 34  29 0a 73 70 74 5f 61 72  | `p(3,64).spt_ar|
00000100  65 61 5f 73 69 7a 65 20  3d 20 31 31 30 30 30 30  |ea_size = 110000|
00000110  3a 20 44 49 4d 20 73 70  74 5f 61 72 65 61 20 73  |: DIM spt_area s|
00000120  70 74 5f 61 72 65 61 5f  73 69 7a 65 0a 46 4f 52  |pt_area_size.FOR|
00000130  20 41 25 20 3d 20 73 70  74 5f 61 72 65 61 20 54  | A% = spt_area T|
00000140  4f 20 73 70 74 5f 61 72  65 61 2b 73 70 74 5f 61  |O spt_area+spt_a|
00000150  72 65 61 5f 73 69 7a 65  2d 31 20 53 54 45 50 20  |rea_size-1 STEP |
00000160  34 3a 21 41 25 3d 2d 31  3a 4e 45 58 54 0a 56 44  |4:!A%=-1:NEXT.VD|
00000170  55 36 2c 31 32 2c 32 33  2c 31 36 2c 26 34 30 2c  |U6,12,23,16,&40,|
00000180  26 42 46 7c 0a 47 43 4f  4c 20 31 33 35 0a 50 52  |&BF|.GCOL 135.PR|
00000190  4f 43 77 69 6d 70 5f 76  61 72 73 0a 50 52 4f 43  |OCwimp_vars.PROC|
000001a0  69 6e 69 74 0a 53 59 53  20 69 6e 69 74 69 61 6c  |init.SYS initial|
000001b0  69 73 65 0a 50 52 4f 43  64 65 73 6b 74 6f 70 0a  |ise.PROCdesktop.|
000001c0  2a 50 4f 49 4e 54 45 52  0a 50 52 4f 43 6f 70 65  |*POINTER.PROCope|
000001d0  6e 5f 77 69 6e 64 6f 77  28 77 69 6e 64 6f 77 73  |n_window(windows|
000001e0  28 31 29 2c 30 2c 31 30  30 2c 31 32 38 30 2c 39  |(1),0,100,1280,9|
000001f0  38 38 2c 30 2c 30 2c 2d  31 29 0a 50 52 4f 43 64  |88,0,0,-1).PROCd|
00000200  65 66 5f 68 65 61 70 28  77 69 6e 64 6f 77 73 28  |ef_heap(windows(|
00000210  31 29 29 0a 50 52 4f 43  63 72 65 61 74 65 5f 68  |1)).PROCcreate_h|
00000220  65 6c 70 0a 50 52 4f 43  73 63 72 6e 0a 4f 4e 20  |elp.PROCscrn.ON |
00000230  45 52 52 4f 52 20 50 52  4f 43 72 65 70 6f 72 74  |ERROR PROCreport|
00000240  0a 52 45 50 45 41 54 0a  60 6f 6c 64 5f 61 72 65  |.REPEAT.`old_are|
00000250  61 20 3d 20 60 64 72 5f  61 72 65 61 0a 63 20 3d  |a = `dr_area.c =|
00000260  20 46 4e 70 6f 6c 6c 28  30 29 0a 43 41 53 45 20  | FNpoll(0).CASE |
00000270  63 20 4f 46 0a 57 48 45  4e 20 31 20 3a 20 50 52  |c OF.WHEN 1 : PR|
00000280  4f 43 72 65 64 72 61 77  5f 77 69 6e 64 6f 77 28  |OCredraw_window(|
00000290  21 77 69 6d 70 29 3a 50  52 4f 43 75 70 64 61 74  |!wimp):PROCupdat|
000002a0  65 28 21 77 69 6d 70 29  0a 57 48 45 4e 20 32 20  |e(!wimp).WHEN 2 |
000002b0  3a 20 50 52 4f 43 6f 70  65 6e 5f 77 69 6e 64 6f  |: PROCopen_windo|
000002c0  77 28 21 77 69 6d 70 2c  77 69 6d 70 21 34 2c 77  |w(!wimp,wimp!4,w|
000002d0  69 6d 70 21 38 2c 77 69  6d 70 21 31 32 2c 77 69  |imp!8,wimp!12,wi|
000002e0  6d 70 21 31 36 2c 77 69  6d 70 21 32 30 2c 20 77  |mp!16,wimp!20, w|
000002f0  69 6d 70 21 32 34 2c 77  69 6d 70 21 32 38 29 0a  |imp!24,wimp!28).|
00000300  57 48 45 4e 20 33 20 3a  20 50 52 4f 43 63 6c 6f  |WHEN 3 : PROCclo|
00000310  73 65 5f 77 69 6e 64 6f  77 28 21 77 69 6d 70 29  |se_window(!wimp)|
00000320  0a 57 48 45 4e 20 34 20  3a 0a 57 48 45 4e 20 35  |.WHEN 4 :.WHEN 5|
00000330  20 3a 20 49 46 20 21 77  69 6d 70 3d 77 69 6e 64  | : IF !wimp=wind|
00000340  6f 77 73 28 35 29 20 54  48 45 4e 20 60 68 61 6e  |ows(5) THEN `han|
00000350  64 6c 65 25 20 3d 20 77  69 6e 64 6f 77 73 28 35  |dle% = windows(5|
00000360  29 0a 57 48 45 4e 20 36  20 3a 20 50 52 4f 43 6d  |).WHEN 6 : PROCm|
00000370  6f 75 73 65 28 21 77 69  6d 70 2c 77 69 6d 70 21  |ouse(!wimp,wimp!|
00000380  34 2c 77 69 6d 70 21 38  2c 77 69 6d 70 21 31 32  |4,wimp!8,wimp!12|
00000390  2c 77 69 6d 70 21 31 36  2c 77 69 6d 70 21 32 30  |,wimp!16,wimp!20|
000003a0  29 0a 57 48 45 4e 20 37  20 3a 0a 57 48 45 4e 20  |).WHEN 7 :.WHEN |
000003b0  38 20 3a 20 50 52 4f 43  73 61 76 65 5f 6e 61 6d  |8 : PROCsave_nam|
000003c0  65 0a 45 4e 44 43 41 53  45 0a 4d 4f 55 53 45 20  |e.ENDCASE.MOUSE |
000003d0  60 78 25 2c 60 79 25 2c  60 62 25 0a 49 46 20 46  |`x%,`y%,`b%.IF F|
000003e0  4e 64 72 61 77 5f 61 72  65 61 20 54 48 45 4e 0a  |Ndraw_area THEN.|
000003f0  49 46 20 60 6f 6c 64 5f  61 72 65 61 20 3c 3e 20  |IF `old_area <> |
00000400  60 64 72 5f 61 72 65 61  20 54 48 45 4e 20 50 52  |`dr_area THEN PR|
00000410  4f 43 64 72 5f 63 6f 70  79 0a 56 44 55 32 34 2c  |OCdr_copy.VDU24,|
00000420  31 36 32 3b 32 33 32 3b  31 32 37 34 3b 39 37 32  |162;232;1274;972|
00000430  3b 0a 49 46 20 60 63 6f  6c 25 20 3d 20 31 37 20  |;.IF `col% = 17 |
00000440  54 48 45 4e 0a 47 43 4f  4c 38 30 2b 60 73 74 79  |THEN.GCOL80+`sty|
00000450  6c 65 25 2c 30 0a 45 4c  53 45 0a 47 43 4f 4c 20  |le%,0.ELSE.GCOL |
00000460  60 73 74 79 6c 65 25 2c  60 63 6f 6c 25 0a 45 4e  |`style%,`col%.EN|
00000470  44 49 46 0a 49 46 20 60  63 75 72 5f 6d 65 6e 75  |DIF.IF `cur_menu|
00000480  20 3d 20 31 20 54 48 45  4e 0a 43 41 53 45 20 60  | = 1 THEN.CASE `|
00000490  66 75 6e 63 25 20 4f 46  0a 57 48 45 4e 20 33 20  |func% OF.WHEN 3 |
000004a0  3a 20 50 52 4f 43 64 6f  5f 6c 69 6e 65 0a 57 48  |: PROCdo_line.WH|
000004b0  45 4e 20 34 20 3a 20 50  52 4f 43 64 6f 5f 6a 6f  |EN 4 : PROCdo_jo|
000004c0  69 6e 65 64 0a 57 48 45  4e 20 35 20 3a 20 50 52  |ined.WHEN 5 : PR|
000004d0  4f 43 64 6f 5f 72 61 64  69 69 0a 57 48 45 4e 20  |OCdo_radii.WHEN |
000004e0  36 20 3a 20 50 52 4f 43  64 6f 5f 70 6f 69 6e 74  |6 : PROCdo_point|
000004f0  0a 45 4e 44 43 41 53 45  0a 45 4e 44 49 46 0a 49  |.ENDCASE.ENDIF.I|
00000500  46 20 60 63 75 72 5f 6d  65 6e 75 20 3d 20 32 20  |F `cur_menu = 2 |
00000510  54 48 45 4e 0a 43 41 53  45 20 60 66 75 6e 63 25  |THEN.CASE `func%|
00000520  20 4f 46 0a 57 48 45 4e  20 33 20 3a 20 50 52 4f  | OF.WHEN 3 : PRO|
00000530  43 64 6f 5f 72 65 63 74  0a 57 48 45 4e 20 34 20  |Cdo_rect.WHEN 4 |
00000540  3a 20 50 52 4f 43 64 6f  5f 73 71 75 61 72 65 0a  |: PROCdo_square.|
00000550  57 48 45 4e 20 35 20 3a  20 50 52 4f 43 64 6f 5f  |WHEN 5 : PROCdo_|
00000560  70 61 72 61 0a 57 48 45  4e 20 36 20 3a 20 50 52  |para.WHEN 6 : PR|
00000570  4f 43 64 6f 5f 74 72 69  61 0a 45 4e 44 43 41 53  |OCdo_tria.ENDCAS|
00000580  45 0a 45 4e 44 49 46 0a  49 46 20 60 63 75 72 5f  |E.ENDIF.IF `cur_|
00000590  6d 65 6e 75 20 3d 20 33  20 54 48 45 4e 0a 43 41  |menu = 3 THEN.CA|
000005a0  53 45 20 60 66 75 6e 63  25 20 4f 46 0a 57 48 45  |SE `func% OF.WHE|
000005b0  4e 20 33 20 3a 20 50 52  4f 43 64 6f 5f 63 69 72  |N 3 : PROCdo_cir|
000005c0  63 0a 57 48 45 4e 20 34  20 3a 20 50 52 4f 43 64  |c.WHEN 4 : PROCd|
000005d0  6f 5f 65 6c 69 70 0a 57  48 45 4e 20 35 20 3a 20  |o_elip.WHEN 5 : |
000005e0  50 52 4f 43 64 6f 5f 73  65 67 6d 0a 57 48 45 4e  |PROCdo_segm.WHEN|
000005f0  20 36 20 3a 20 50 52 4f  43 64 6f 5f 61 72 63 0a  | 6 : PROCdo_arc.|
00000600  57 48 45 4e 20 37 20 3a  20 50 52 4f 43 64 6f 5f  |WHEN 7 : PROCdo_|
00000610  73 65 63 74 0a 45 4e 44  43 41 53 45 0a 45 4e 44  |sect.ENDCASE.END|
00000620  49 46 0a 49 46 20 60 63  75 72 5f 6d 65 6e 75 20  |IF.IF `cur_menu |
00000630  3d 20 34 20 54 48 45 4e  0a 43 41 53 45 20 60 66  |= 4 THEN.CASE `f|
00000640  75 6e 63 25 20 4f 46 0a  57 48 45 4e 20 33 20 3a  |unc% OF.WHEN 3 :|
00000650  20 50 52 4f 43 64 6f 5f  74 65 78 74 0a 45 4e 44  | PROCdo_text.END|
00000660  43 41 53 45 0a 45 4e 44  49 46 0a 49 46 20 60 63  |CASE.ENDIF.IF `c|
00000670  75 72 5f 6d 65 6e 75 20  3d 20 35 20 54 48 45 4e  |ur_menu = 5 THEN|
00000680  0a 43 41 53 45 20 60 66  75 6e 63 25 20 4f 46 0a  |.CASE `func% OF.|
00000690  57 48 45 4e 20 33 20 3a  20 50 52 4f 43 64 6f 5f  |WHEN 3 : PROCdo_|
000006a0  63 6f 70 79 0a 57 48 45  4e 20 34 20 3a 20 50 52  |copy.WHEN 4 : PR|
000006b0  4f 43 64 6f 5f 6d 6f 76  65 0a 57 48 45 4e 20 35  |OCdo_move.WHEN 5|
000006c0  20 3a 20 50 52 4f 43 64  6f 5f 63 6c 65 61 72 0a  | : PROCdo_clear.|
000006d0  57 48 45 4e 20 37 20 3a  20 50 52 4f 43 64 6f 5f  |WHEN 7 : PROCdo_|
000006e0  66 69 6c 6c 0a 45 4e 44  43 41 53 45 0a 45 4e 44  |fill.ENDCASE.END|
000006f0  49 46 0a 45 4e 44 49 46  0a 56 44 55 20 32 36 0a  |IF.ENDIF.VDU 26.|
00000700  55 4e 54 49 4c 20 46 41  4c 53 45 0a 45 4e 44 0a  |UNTIL FALSE.END.|
00000710  44 45 46 20 50 52 4f 43  69 6e 69 74 0a 56 44 55  |DEF PROCinit.VDU|
00000720  20 31 39 2c 20 30 2c 31  36 2c 20 20 30 2c 20 20  | 19, 0,16,  0,  |
00000730  30 2c 20 20 30 20 3a 60  72 28 30 29 3d 30 20 20  |0,  0 :`r(0)=0  |
00000740  3a 60 67 28 30 29 3d 30  20 20 3a 60 62 28 30 29  |:`g(0)=0  :`b(0)|
00000750  3d 30 20 20 3a 20 20 20  52 45 4d 20 42 4c 41 43  |=0  :   REM BLAC|
00000760  4b 0a 56 44 55 20 31 39  2c 20 31 2c 31 36 2c 32  |K.VDU 19, 1,16,2|
00000770  34 30 2c 20 20 30 2c 20  20 30 20 3a 60 72 28 31  |40,  0,  0 :`r(1|
00000780  29 3d 32 34 30 3a 60 67  28 31 29 3d 30 20 20 3a  |)=240:`g(1)=0  :|
00000790  60 62 28 31 29 3d 30 20  20 3a 20 20 20 52 45 4d  |`b(1)=0  :   REM|
000007a0  20 52 45 44 20 31 30 30  25 0a 56 44 55 20 31 39  | RED 100%.VDU 19|
000007b0  2c 20 32 2c 31 36 2c 20  20 30 2c 32 34 30 2c 20  |, 2,16,  0,240, |
000007c0  20 30 20 3a 60 72 28 32  29 3d 30 20 20 3a 60 67  | 0 :`r(2)=0  :`g|
000007d0  28 32 29 3d 32 34 30 3a  60 62 28 32 29 3d 30 20  |(2)=240:`b(2)=0 |
000007e0  20 3a 20 20 20 52 45 4d  20 47 52 45 45 4e 20 31  | :   REM GREEN 1|
000007f0  30 30 25 0a 56 44 55 20  31 39 2c 20 33 2c 31 36  |00%.VDU 19, 3,16|
00000800  2c 32 34 30 2c 32 34 30  2c 20 20 30 20 3a 60 72  |,240,240,  0 :`r|
00000810  28 33 29 3d 32 34 30 3a  60 67 28 33 29 3d 32 34  |(3)=240:`g(3)=24|
00000820  30 3a 60 62 28 33 29 3d  30 20 20 3a 20 20 20 52  |0:`b(3)=0  :   R|
00000830  45 4d 20 59 45 4c 4c 4f  57 20 31 30 30 25 0a 56  |EM YELLOW 100%.V|
00000840  44 55 20 31 39 2c 20 34  2c 31 36 2c 20 20 30 2c  |DU 19, 4,16,  0,|
00000850  20 20 30 2c 32 34 30 20  3a 60 72 28 34 29 3d 30  |  0,240 :`r(4)=0|
00000860  20 20 3a 60 67 28 34 29  3d 30 20 20 3a 60 62 28  |  :`g(4)=0  :`b(|
00000870  34 29 3d 32 34 30 3a 20  20 20 52 45 4d 20 42 4c  |4)=240:   REM BL|
00000880  55 45 20 31 30 30 25 0a  56 44 55 20 31 39 2c 20  |UE 100%.VDU 19, |
00000890  35 2c 31 36 2c 32 34 30  2c 20 20 30 2c 32 34 30  |5,16,240,  0,240|
000008a0  20 3a 60 72 28 35 29 3d  32 34 30 3a 60 67 28 35  | :`r(5)=240:`g(5|
000008b0  29 3d 30 20 20 3a 60 62  28 35 29 3d 32 34 30 3a  |)=0  :`b(5)=240:|
000008c0  20 20 20 52 45 4d 20 4d  41 47 45 4e 54 41 20 31  |   REM MAGENTA 1|
000008d0  30 30 25 0a 56 44 55 20  31 39 2c 20 36 2c 31 36  |00%.VDU 19, 6,16|
000008e0  2c 20 20 30 2c 32 34 30  2c 32 34 30 20 3a 60 72  |,  0,240,240 :`r|
000008f0  28 36 29 3d 30 20 20 3a  60 67 28 36 29 3d 32 34  |(6)=0  :`g(6)=24|
00000900  30 3a 60 62 28 36 29 3d  32 34 30 3a 20 20 20 52  |0:`b(6)=240:   R|
00000910  45 4d 20 43 59 41 4e 20  31 30 30 25 0a 56 44 55  |EM CYAN 100%.VDU|
00000920  20 31 39 2c 20 37 2c 31  36 2c 32 34 30 2c 32 34  | 19, 7,16,240,24|
00000930  30 2c 32 34 30 20 3a 60  72 28 37 29 3d 32 34 30  |0,240 :`r(7)=240|
00000940  3a 60 67 28 37 29 3d 32  34 30 3a 60 62 28 37 29  |:`g(7)=240:`b(7)|
00000950  3d 32 34 30 3a 20 20 20  52 45 4d 20 57 48 49 54  |=240:   REM WHIT|
00000960  45 20 31 30 30 25 0a 56  44 55 20 31 39 2c 20 38  |E 100%.VDU 19, 8|
00000970  2c 31 36 2c 32 32 34 2c  31 34 34 2c 31 34 34 20  |,16,224,144,144 |
00000980  3a 60 72 28 38 29 3d 32  32 34 3a 60 67 28 38 29  |:`r(8)=224:`g(8)|
00000990  3d 31 34 34 3a 60 62 28  38 29 3d 31 34 34 3a 20  |=144:`b(8)=144: |
000009a0  20 20 52 45 4d 20 54 49  54 4c 45 20 42 41 43 4b  |  REM TITLE BACK|
000009b0  0a 56 44 55 20 31 39 2c  20 39 2c 31 36 2c 31 36  |.VDU 19, 9,16,16|
000009c0  30 2c 31 36 30 2c 31 36  30 20 3a 60 72 28 39 29  |0,160,160 :`r(9)|
000009d0  3d 31 36 30 3a 60 67 28  39 29 3d 31 36 30 3a 60  |=160:`g(9)=160:`|
000009e0  62 28 39 29 3d 31 36 30  3a 20 20 20 52 45 4d 20  |b(9)=160:   REM |
000009f0  49 43 4f 4e 20 42 41 43  4b 0a 56 44 55 20 31 39  |ICON BACK.VDU 19|
00000a00  2c 31 30 2c 31 36 2c 31  31 34 2c 31 31 34 2c 31  |,10,16,114,114,1|
00000a10  31 34 20 3a 60 72 28 31  30 29 3d 31 31 34 3a 60  |14 :`r(10)=114:`|
00000a20  67 28 31 30 29 3d 31 31  34 3a 60 62 28 31 30 29  |g(10)=114:`b(10)|
00000a30  3d 31 31 34 3a 52 45 4d  20 53 43 52 4f 4c 4c 20  |=114:REM SCROLL |
00000a40  42 41 43 4b 0a 56 44 55  20 31 39 2c 31 31 2c 31  |BACK.VDU 19,11,1|
00000a50  36 2c 31 37 36 2c 31 37  36 2c 31 37 36 20 3a 60  |6,176,176,176 :`|
00000a60  72 28 31 31 29 3d 31 37  36 3a 60 67 28 31 31 29  |r(11)=176:`g(11)|
00000a70  3d 31 37 36 3a 60 62 28  31 31 29 3d 31 37 36 3a  |=176:`b(11)=176:|
00000a80  52 45 4d 20 4d 45 4e 55  20 42 41 43 4b 0a 56 44  |REM MENU BACK.VD|
00000a90  55 20 31 39 2c 31 32 2c  31 36 2c 32 30 38 2c 20  |U 19,12,16,208, |
00000aa0  20 30 2c 20 20 30 20 3a  60 72 28 31 32 29 3d 32  | 0,  0 :`r(12)=2|
00000ab0  30 38 3a 60 67 28 31 32  29 3d 30 20 20 3a 60 62  |08:`g(12)=0  :`b|
00000ac0  28 31 32 29 3d 30 0a 56  44 55 20 31 39 2c 31 33  |(12)=0.VDU 19,13|
00000ad0  2c 31 36 2c 31 37 36 2c  31 37 36 2c 20 20 30 20  |,16,176,176,  0 |
00000ae0  3a 60 72 28 31 33 29 3d  31 37 36 3a 60 67 28 31  |:`r(13)=176:`g(1|
00000af0  33 29 3d 31 37 36 3a 60  62 28 31 33 29 3d 30 0a  |3)=176:`b(13)=0.|
00000b00  56 44 55 20 31 39 2c 31  34 2c 31 36 2c 20 20 30  |VDU 19,14,16,  0|
00000b10  2c 20 20 30 2c 32 30 38  20 3a 60 72 28 31 34 29  |,  0,208 :`r(14)|
00000b20  3d 30 20 20 3a 60 67 28  31 34 29 3d 30 20 20 3a  |=0  :`g(14)=0  :|
00000b30  60 62 28 31 34 29 3d 32  30 38 0a 56 44 55 20 31  |`b(14)=208.VDU 1|
00000b40  39 2c 31 35 2c 31 36 2c  31 31 32 2c 31 36 30 2c  |9,15,16,112,160,|
00000b50  31 36 30 20 3a 60 72 28  31 35 29 3d 31 31 32 3a  |160 :`r(15)=112:|
00000b60  60 67 28 31 35 29 3d 31  36 30 3a 60 62 28 31 35  |`g(15)=160:`b(15|
00000b70  29 3d 31 36 30 0a 3a 0a  60 69 62 20 3d 20 26 38  |)=160.:.`ib = &8|
00000b80  39 20 3a 20 60 69 66 20  3d 20 26 30 30 20 3a 20  |9 : `if = &00 : |
00000b90  60 77 66 20 3d 20 26 30  30 20 3a 20 60 77 62 20  |`wf = &00 : `wb |
00000ba0  3d 20 26 38 37 20 3a 20  60 74 66 20 3d 20 26 30  |= &87 : `tf = &0|
00000bb0  30 20 3a 20 60 74 62 20  3d 20 26 38 38 0a 60 73  |0 : `tb = &88.`s|
00000bc0  66 20 3d 20 26 30 34 20  3a 20 60 73 62 20 3d 20  |f = &04 : `sb = |
00000bd0  26 38 41 0a 56 44 55 31  39 2c 30 2c 32 34 2c 26  |&8A.VDU19,0,24,&|
00000be0  35 30 2c 26 35 30 2c 26  35 30 0a 56 44 55 31 39  |50,&50,&50.VDU19|
00000bf0  2c 31 2c 32 35 2c 26 30  30 2c 26 46 30 2c 26 46  |,1,25,&00,&F0,&F|
00000c00  30 0a 56 44 55 31 39 2c  32 2c 32 35 2c 26 30 30  |0.VDU19,2,25,&00|
00000c10  2c 26 30 30 2c 26 46 30  0a 56 44 55 31 39 2c 33  |,&00,&F0.VDU19,3|
00000c20  2c 32 35 2c 26 46 30 2c  26 30 30 2c 26 30 30 0a  |,25,&F0,&00,&00.|
00000c30  60 63 75 72 5f 6d 65 6e  75 20 3d 20 30 0a 60 6d  |`cur_menu = 0.`m|
00000c40  5f 66 69 6c 6c 20 3d 20  46 41 4c 53 45 0a 60 6d  |_fill = FALSE.`m|
00000c50  5f 6f 70 65 6e 20 3d 20  54 52 55 45 0a 60 6d 5f  |_open = TRUE.`m_|
00000c60  64 6f 74 73 20 3d 20 46  41 4c 53 45 0a 60 6d 5f  |dots = FALSE.`m_|
00000c70  78 6f 72 3d 20 46 41 4c  53 45 0a 60 6d 5f 6f 72  |xor= FALSE.`m_or|
00000c80  20 3d 20 46 41 4c 53 45  0a 60 6d 5f 61 6e 64 3d  | = FALSE.`m_and=|
00000c90  20 46 41 4c 53 45 0a 60  6d 5f 69 6e 76 3d 20 46  | FALSE.`m_inv= F|
00000ca0  41 4c 53 45 0a 60 66 75  6e 63 25 3d 20 32 0a 60  |ALSE.`func%= 2.`|
00000cb0  63 6f 6c 25 20 3d 20 30  0a 60 73 74 79 6c 65 25  |col% = 0.`style%|
00000cc0  20 3d 20 30 0a 60 62 72  73 68 25 3d 20 32 34 33  | = 0.`brsh%= 243|
00000cd0  0a 60 78 25 20 3d 20 30  20 3a 20 60 79 25 20 3d  |.`x% = 0 : `y% =|
00000ce0  20 30 20 3a 20 60 62 25  20 3d 20 30 0a 60 68 61  | 0 : `b% = 0.`ha|
00000cf0  6e 64 6c 65 25 20 3d 20  30 0a 60 69 63 6f 6e 25  |ndle% = 0.`icon%|
00000d00  20 3d 20 30 0a 60 73 74  61 74 65 25 20 3d 20 30  | = 0.`state% = 0|
00000d10  0a 60 64 72 5f 61 72 65  61 20 3d 20 2d 31 0a 60  |.`dr_area = -1.`|
00000d20  6d 61 78 5f 66 69 6c 65  25 20 3d 20 37 37 0a 56  |max_file% = 77.V|
00000d30  44 55 32 33 2c 32 34 33  2c 30 2c 30 2c 30 2c 26  |DU23,243,0,0,0,&|
00000d40  31 38 2c 26 31 38 2c 30  2c 30 2c 30 0a 56 44 55  |18,&18,0,0,0.VDU|
00000d50  32 33 2c 32 34 34 2c 30  2c 30 2c 26 33 43 2c 26  |23,244,0,0,&3C,&|
00000d60  33 43 2c 26 33 43 2c 26  33 43 2c 30 2c 30 0a 56  |3C,&3C,&3C,0,0.V|
00000d70  44 55 32 33 2c 32 34 35  2c 26 46 46 2c 26 46 46  |DU23,245,&FF,&FF|
00000d80  2c 26 46 46 2c 26 46 46  2c 26 46 46 2c 26 46 46  |,&FF,&FF,&FF,&FF|
00000d90  2c 26 46 46 2c 26 46 46  0a 56 44 55 32 33 2c 32  |,&FF,&FF.VDU23,2|
00000da0  34 36 2c 30 2c 26 31 38  2c 26 33 43 2c 26 37 45  |46,0,&18,&3C,&7E|
00000db0  2c 26 46 46 2c 30 2c 30  2c 30 0a 56 44 55 32 33  |,&FF,0,0,0.VDU23|
00000dc0  2c 32 34 37 2c 30 2c 26  31 38 2c 26 33 43 2c 26  |,247,0,&18,&3C,&|
00000dd0  37 45 2c 26 37 45 2c 26  33 43 2c 26 31 38 2c 30  |7E,&7E,&3C,&18,0|
00000de0  0a 56 44 55 32 33 2c 32  34 38 2c 30 2c 36 2c 26  |.VDU23,248,0,6,&|
00000df0  45 2c 26 31 43 2c 26 33  38 2c 26 37 30 2c 26 36  |E,&1C,&38,&70,&6|
00000e00  30 2c 30 0a 56 44 55 32  33 2c 32 34 39 2c 30 2c  |0,0.VDU23,249,0,|
00000e10  26 35 34 2c 26 32 41 2c  26 35 34 2c 26 32 41 2c  |&54,&2A,&54,&2A,|
00000e20  26 35 34 2c 26 32 41 2c  30 0a 56 44 55 32 33 2c  |&54,&2A,0.VDU23,|
00000e30  32 35 30 2c 30 2c 26 34  30 2c 26 32 30 2c 26 31  |250,0,&40,&20,&1|
00000e40  30 2c 38 2c 34 2c 32 2c  30 0a 56 44 55 32 33 2c  |0,8,4,2,0.VDU23,|
00000e50  32 35 31 2c 30 2c 31 36  2c 31 36 2c 31 36 2c 31  |251,0,16,16,16,1|
00000e60  36 2c 31 36 2c 31 36 2c  30 0a 56 44 55 32 33 2c  |6,16,16,0.VDU23,|
00000e70  32 35 32 2c 30 2c 30 2c  30 2c 30 2c 30 2c 30 2c  |252,0,0,0,0,0,0,|
00000e80  30 2c 30 0a 56 44 55 32  33 2c 32 35 33 2c 26 38  |0,0.VDU23,253,&8|
00000e90  30 2c 26 35 32 2c 38 2c  26 32 39 2c 26 39 30 2c  |0,&52,8,&29,&90,|
00000ea0  26 43 2c 26 41 32 2c 38  0a 56 44 55 32 33 2c 32  |&C,&A2,8.VDU23,2|
00000eb0  35 34 2c 30 2c 30 2c 30  2c 26 37 45 2c 30 2c 30  |54,0,0,0,&7E,0,0|
00000ec0  2c 30 2c 30 0a 56 44 55  20 32 33 2c 31 37 2c 34  |,0,0.VDU 23,17,4|
00000ed0  2c 31 2c 30 2c 30 2c 30  2c 30 2c 30 2c 30 0a 46  |,1,0,0,0,0,0,0.F|
00000ee0  4f 52 20 61 25 20 3d 20  30 20 54 4f 20 36 33 0a  |OR a% = 0 TO 63.|
00000ef0  60 70 28 30 2c 61 25 29  20 3d 20 28 61 25 20 4d  |`p(0,a%) = (a% M|
00000f00  4f 44 20 32 29 2b 31 2b  28 61 25 20 44 49 56 20  |OD 2)+1+(a% DIV |
00000f10  38 29 4d 4f 44 20 32 0a  60 70 28 31 2c 61 25 29  |8)MOD 2.`p(1,a%)|
00000f20  20 3d 20 28 28 61 25 20  4d 4f 44 20 32 29 2b 28  | = ((a% MOD 2)+(|
00000f30  61 25 20 44 49 56 20 38  29 4d 4f 44 20 32 29 4d  |a% DIV 8)MOD 2)M|
00000f40  4f 44 20 32 2b 31 0a 60  70 28 32 2c 61 25 29 20  |OD 2+1.`p(2,a%) |
00000f50  3d 20 28 61 25 20 4d 4f  44 20 32 29 2b 35 2b 28  |= (a% MOD 2)+5+(|
00000f60  61 25 20 44 49 56 20 38  29 4d 4f 44 20 32 0a 60  |a% DIV 8)MOD 2.`|
00000f70  70 28 33 2c 61 25 29 20  3d 20 28 28 61 25 20 4d  |p(3,a%) = ((a% M|
00000f80  4f 44 20 32 29 2b 28 61  25 20 44 49 56 20 38 29  |OD 2)+(a% DIV 8)|
00000f90  4d 4f 44 20 32 29 4d 4f  44 20 32 2b 39 0a 4e 45  |MOD 2)MOD 2+9.NE|
00000fa0  58 54 20 61 25 0a 60 70  74 72 6e 20 3d 20 30 0a  |XT a%.`ptrn = 0.|
00000fb0  47 43 4f 4c 20 30 0a 52  45 43 54 41 4e 47 4c 45  |GCOL 0.RECTANGLE|
00000fc0  20 46 49 4c 4c 20 34 36  2c 36 39 34 2c 36 34 2c  | FILL 46,694,64,|
00000fd0  36 34 0a 53 59 53 20 26  32 45 2c 31 36 2c 30 2c  |64.SYS &2E,16,0,|
00000fe0  22 63 75 72 63 6f 6c 22  2c 30 2c 34 36 2c 36 39  |"curcol",0,46,69|
00000ff0  34 2c 31 30 30 2c 37 35  38 0a 73 70 74 5f 61 72  |4,100,758.spt_ar|
00001000  65 61 21 30 20 3d 20 73  70 74 5f 61 72 65 61 5f  |ea!0 = spt_area_|
00001010  73 69 7a 65 20 3a 20 73  70 74 5f 61 72 65 61 21  |size : spt_area!|
00001020  34 20 3d 20 30 20 3a 20  73 70 74 5f 61 72 65 61  |4 = 0 : spt_area|
00001030  21 38 20 3d 31 36 20 3a  20 73 70 74 5f 61 72 65  |!8 =16 : spt_are|
00001040  61 21 31 32 20 3d 20 73  70 74 5f 61 72 65 61 21  |a!12 = spt_area!|
00001050  38 0a 56 44 55 32 36 2c  32 33 2c 31 37 2c 34 2c  |8.VDU26,23,17,4,|
00001060  31 2c 30 2c 30 2c 30 2c  30 2c 30 2c 30 0a 45 4e  |1,0,0,0,0,0,0.EN|
00001070  44 50 52 4f 43 0a 44 45  46 20 50 52 4f 43 77 69  |DPROC.DEF PROCwi|
00001080  6d 70 5f 76 61 72 73 0a  3a 0a 3a 0a 77 73 20 3d  |mp_vars.:.:.ws =|
00001090  20 26 30 30 30 34 30 30  43 30 0a 3a 0a 69 6e 69  | &000400C0.:.ini|
000010a0  74 69 61 6c 69 73 65 3d  20 77 73 0a 63 72 65 61  |tialise= ws.crea|
000010b0  74 65 5f 77 69 6e 64 6f  77 20 3d 20 77 73 20 2b  |te_window = ws +|
000010c0  20 30 31 0a 63 72 65 61  74 65 5f 69 63 6f 6e 20  | 01.create_icon |
000010d0  3d 20 77 73 20 2b 20 30  32 0a 64 65 6c 65 74 65  |= ws + 02.delete|
000010e0  5f 77 69 6e 64 6f 77 20  3d 20 77 73 20 2b 20 30  |_window = ws + 0|
000010f0  33 0a 64 65 6c 65 74 65  5f 69 63 6f 6e 20 3d 20  |3.delete_icon = |
00001100  77 73 20 2b 20 30 34 0a  6f 70 65 6e 5f 77 69 6e  |ws + 04.open_win|
00001110  64 6f 77 20 3d 20 77 73  20 2b 20 30 35 0a 63 6c  |dow = ws + 05.cl|
00001120  6f 73 65 5f 77 69 6e 64  6f 77 3d 20 77 73 20 2b  |ose_window= ws +|
00001130  20 30 36 0a 70 6f 6c 6c  5f 77 69 6d 70 20 3d 20  | 06.poll_wimp = |
00001140  77 73 20 2b 20 30 37 0a  72 65 64 72 61 77 5f 77  |ws + 07.redraw_w|
00001150  69 6e 64 6f 77 20 3d 20  77 73 20 2b 20 30 38 0a  |indow = ws + 08.|
00001160  75 70 64 61 74 65 5f 77  69 6e 64 6f 77 20 3d 20  |update_window = |
00001170  77 73 20 2b 20 30 39 0a  67 65 74 5f 72 65 63 74  |ws + 09.get_rect|
00001180  61 6e 67 6c 65 20 3d 20  77 73 20 2b 20 31 30 0a  |angle = ws + 10.|
00001190  67 65 74 5f 77 69 6e 64  6f 77 5f 73 74 61 74 65  |get_window_state|
000011a0  3d 20 77 73 20 2b 20 31  31 0a 67 65 74 5f 77 69  |= ws + 11.get_wi|
000011b0  6e 64 6f 77 5f 69 6e 66  6f 20 3d 20 77 73 20 2b  |ndow_info = ws +|
000011c0  20 31 32 0a 73 65 74 5f  69 63 6f 6e 5f 73 74 61  | 12.set_icon_sta|
000011d0  74 65 3d 20 77 73 20 2b  20 31 33 0a 67 65 74 5f  |te= ws + 13.get_|
000011e0  69 63 6f 6e 5f 69 6e 66  6f 20 3d 20 77 73 20 2b  |icon_info = ws +|
000011f0  20 31 34 0a 67 65 74 5f  70 6f 69 6e 74 65 72 5f  | 14.get_pointer_|
00001200  69 6e 66 6f 3d 20 77 73  20 2b 20 31 35 0a 64 72  |info= ws + 15.dr|
00001210  61 67 5f 62 6f 78 3d 20  77 73 20 2b 20 31 36 0a  |ag_box= ws + 16.|
00001220  73 63 72 65 65 6e 5f 72  65 64 72 61 77 20 3d 20  |screen_redraw = |
00001230  77 73 20 2b 20 31 37 0a  73 65 74 5f 63 61 72 6f  |ws + 17.set_caro|
00001240  74 5f 70 6f 73 69 74 69  6f 6e 3d 20 77 73 20 2b  |t_position= ws +|
00001250  20 31 38 0a 3a 0a 45 4e  44 50 52 4f 43 0a 44 45  | 18.:.ENDPROC.DE|
00001260  46 20 50 52 4f 43 64 65  73 6b 74 6f 70 0a 52 45  |F PROCdesktop.RE|
00001270  53 54 4f 52 45 0a 77 69  6e 64 25 20 3d 20 2d 31  |STORE.wind% = -1|
00001280  0a 52 45 50 45 41 54 0a  52 45 41 44 20 66 25 2c  |.REPEAT.READ f%,|
00001290  66 63 25 2c 62 63 25 2c  78 30 25 2c 79 30 25 2c  |fc%,bc%,x0%,y0%,|
000012a0  78 31 25 2c 79 31 25 2c  69 66 25 2c 69 63 24 2c  |x1%,y1%,if%,ic$,|
000012b0  63 78 30 25 2c 63 79 30  25 2c 63 78 31 25 2c 63  |cx0%,cy0%,cx1%,c|
000012c0  79 31 25 2c 6e 69 63 25  2c 74 69 74 24 3a 0a 77  |y1%,nic%,tit$:.w|
000012d0  69 6e 64 25 20 3d 20 77  69 6e 64 25 20 2b 20 31  |ind% = wind% + 1|
000012e0  0a 77 69 6e 64 6f 77 73  28 77 69 6e 64 25 29 20  |.windows(wind%) |
000012f0  3d 20 46 4e 63 72 65 61  74 65 57 28 63 78 30 25  |= FNcreateW(cx0%|
00001300  2c 63 79 30 25 2c 63 78  31 25 2c 63 79 31 25 2c  |,cy0%,cx1%,cy1%,|
00001310  30 2c 30 2c 66 25 2c 66  63 25 2c 62 63 25 2c 78  |0,0,f%,fc%,bc%,x|
00001320  30 25 2c 79 30 25 2c 78  31 25 2c 79 31 25 2c 69  |0%,y0%,x1%,y1%,i|
00001330  66 25 2c 43 48 52 24 31  39 37 2c 74 69 74 24 2c  |f%,CHR$197,tit$,|
00001340  6e 69 63 25 29 0a 3a 0a  52 45 41 44 20 41 24 0a  |nic%).:.READ A$.|
00001350  55 4e 54 49 4c 20 41 24  3d 22 22 0a 21 77 69 6d  |UNTIL A$="".!wim|
00001360  70 20 3d 20 77 69 6e 64  6f 77 73 28 31 30 29 0a  |p = windows(10).|
00001370  77 69 6d 70 21 34 3d 20  30 0a 77 69 6d 70 21 38  |wimp!4= 0.wimp!8|
00001380  3d 20 2d 31 30 30 0a 77  69 6d 70 21 31 32 20 3d  |= -100.wimp!12 =|
00001390  20 32 35 30 0a 77 69 6d  70 21 31 36 20 3d 20 30  | 250.wimp!16 = 0|
000013a0  0a 77 69 6d 70 21 32 30  20 3d 20 26 39 30 30 30  |.wimp!20 = &9000|
000013b0  46 31 33 35 0a 77 69 6d  70 21 32 34 20 3d 20 73  |F135.wimp!24 = s|
000013c0  61 76 65 25 0a 77 69 6d  70 21 32 38 20 3d 20 2d  |ave%.wimp!28 = -|
000013d0  31 0a 77 69 6d 70 21 33  32 20 3d 20 31 30 0a 24  |1.wimp!32 = 10.$|
000013e0  73 61 76 65 25 20 3d 20  22 22 0a 53 59 53 20 63  |save% = "".SYS c|
000013f0  72 65 61 74 65 5f 69 63  6f 6e 2c 30 2c 77 69 6d  |reate_icon,0,wim|
00001400  70 0a 3a 0a 52 45 4d 20  66 6c 61 67 73 2c 66 6f  |p.:.REM flags,fo|
00001410  72 65 63 6c 2c 62 61 63  6b 63 6c 2c 6d 69 6e 78  |recl,backcl,minx|
00001420  2c 6d 69 6e 79 2c 6d 61  78 78 2c 6d 69 6e 79 2c  |,miny,maxx,miny,|
00001430  69 63 6f 6e 66 6c 67 2c  69 63 6f 6e 2c 78 30 2c  |iconflg,icon,x0,|
00001440  79 30 2c 78 31 2c 79 31  2c 6e 2c 74 24 0a 3a 0a  |y0,x1,y1,n,t$.:.|
00001450  52 45 4d 50 41 4c 45 54  54 45 20 57 49 4e 44 4f  |REMPALETTE WINDO|
00001460  57 20 37 0a 44 41 54 41  20 26 35 30 2c 60 77 66  |W 7.DATA &50,`wf|
00001470  2c 60 77 62 2c 30 2c 2d  39 36 2c 31 30 30 2c 30  |,`wb,0,-96,100,0|
00001480  2c 30 2c 22 22 2c 30 2c  30 2c 31 30 30 2c 39 36  |,0,"",0,0,100,96|
00001490  2c 31 2c 22 22 0a 44 41  54 41 20 30 2c 2d 39 36  |,1,"".DATA 0,-96|
000014a0  2c 31 30 30 2c 34 2c 26  33 30 30 45 2c 60 69 66  |,100,4,&300E,`if|
000014b0  2c 30 2c 66 75 6e 63 2c  6e 75 6c 6c 0a 3a 0a 44  |,0,func,null.:.D|
000014c0  41 54 41 20 26 31 31 2c  60 77 66 2c 60 77 62 2c  |ATA &11,`wf,`wb,|
000014d0  30 2c 2d 38 38 38 2c 31  32 38 30 2c 30 2c 26 33  |0,-888,1280,0,&3|
000014e0  30 32 44 2c 22 22 2c 30  2c 31 30 30 2c 31 32 38  |02D,"",0,100,128|
000014f0  30 2c 39 38 38 2c 31 31  2c 22 41 52 4d 20 50 41  |0,988,11,"ARM PA|
00001500  49 4e 54 22 0a 44 41 54  41 20 30 2c 2d 34 30 2c  |INT".DATA 0,-40,|
00001510  31 36 30 2c 34 2c 26 33  30 32 44 2c 60 69 66 2c  |160,4,&302D,`if,|
00001520  60 69 62 2c 43 4f 4c 4f  55 52 53 0a 44 41 54 41  |`ib,COLOURS.DATA|
00001530  20 30 2c 2d 37 35 32 2c  31 36 30 2c 2d 35 33 38  | 0,-752,160,-538|
00001540  2c 26 33 30 33 44 2c 60  69 66 2c 60 69 62 2c 6d  |,&303D,`if,`ib,m|
00001550  6f 64 65 0a 44 41 54 41  20 30 2c 2d 38 38 38 2c  |ode.DATA 0,-888,|
00001560  31 36 30 2c 2d 37 34 38  2c 26 33 30 33 44 2c 60  |160,-748,&303D,`|
00001570  69 66 2c 26 38 38 2c 66  75 6e 63 0a 44 41 54 41  |if,&88,func.DATA|
00001580  20 31 36 30 2c 2d 38 38  38 2c 33 30 30 2c 2d 37  | 160,-888,300,-7|
00001590  34 38 2c 26 33 30 33 44  2c 60 69 66 2c 60 69 62  |48,&303D,`if,`ib|
000015a0  2c 64 72 61 77 0a 44 41  54 41 20 33 30 30 2c 2d  |,draw.DATA 300,-|
000015b0  38 38 38 2c 34 34 30 2c  2d 37 34 38 2c 26 33 30  |888,440,-748,&30|
000015c0  33 44 2c 60 69 66 2c 60  69 62 2c 73 68 61 70 65  |3D,`if,`ib,shape|
000015d0  73 0a 44 41 54 41 20 34  34 30 2c 2d 38 38 38 2c  |s.DATA 440,-888,|
000015e0  35 38 30 2c 2d 37 34 38  2c 26 33 30 33 44 2c 60  |580,-748,&303D,`|
000015f0  69 66 2c 60 69 62 2c 63  75 72 76 65 0a 44 41 54  |if,`ib,curve.DAT|
00001600  41 20 35 38 30 2c 2d 38  38 38 2c 37 32 30 2c 2d  |A 580,-888,720,-|
00001610  37 34 38 2c 26 33 30 33  44 2c 60 69 66 2c 60 69  |748,&303D,`if,`i|
00001620  62 2c 74 65 78 74 0a 44  41 54 41 20 37 32 30 2c  |b,text.DATA 720,|
00001630  2d 38 38 38 2c 38 36 30  2c 2d 37 34 38 2c 26 33  |-888,860,-748,&3|
00001640  30 33 44 2c 60 69 66 2c  60 69 62 2c 61 72 65 61  |03D,`if,`ib,area|
00001650  0a 44 41 54 41 20 38 36  30 2c 2d 38 38 38 2c 31  |.DATA 860,-888,1|
00001660  30 30 30 2c 2d 37 34 38  2c 26 33 30 33 44 2c 60  |000,-748,&303D,`|
00001670  69 66 2c 60 69 62 2c 22  22 0a 44 41 54 41 20 31  |if,`ib,"".DATA 1|
00001680  30 30 30 2c 2d 38 38 38  2c 31 31 34 30 2c 2d 37  |000,-888,1140,-7|
00001690  34 38 2c 26 33 30 33 44  2c 60 69 66 2c 60 69 62  |48,&303D,`if,`ib|
000016a0  2c 6c 6f 61 64 0a 44 41  54 41 20 31 31 34 30 2c  |,load.DATA 1140,|
000016b0  2d 38 38 38 2c 31 32 38  30 2c 2d 37 34 38 2c 26  |-888,1280,-748,&|
000016c0  33 30 33 44 2c 60 69 66  2c 60 69 62 2c 73 61 76  |303D,`if,`ib,sav|
000016d0  65 2c 6e 75 6c 6c 0a 3a  0a 44 41 54 41 20 26 31  |e,null.:.DATA &1|
000016e0  31 2c 60 77 66 2c 60 77  62 2c 30 2c 2d 32 30 30  |1,`wf,`wb,0,-200|
000016f0  2c 34 30 30 2c 30 2c 26  33 30 32 44 2c 22 22 2c  |,400,0,&302D,"",|
00001700  31 32 30 2c 32 33 30 2c  35 32 30 2c 34 33 30 2c  |120,230,520,430,|
00001710  37 2c 4d 4f 44 45 0a 44  41 54 41 20 30 2c 2d 39  |7,MODE.DATA 0,-9|
00001720  38 2c 32 30 30 2c 30 2c  26 33 30 33 44 2c 60 69  |8,200,0,&303D,`i|
00001730  66 2c 60 69 62 2c 66 69  6c 6c 0a 44 41 54 41 20  |f,`ib,fill.DATA |
00001740  32 30 30 2c 2d 39 38 2c  34 30 30 2c 30 2c 26 33  |200,-98,400,0,&3|
00001750  30 33 44 2c 60 69 66 2c  26 38 38 2c 6f 70 65 6e  |03D,`if,&88,open|
00001760  0a 44 41 54 41 20 30 2c  30 2c 30 2c 30 2c 26 33  |.DATA 0,0,0,0,&3|
00001770  30 33 45 2c 60 69 66 2c  60 69 62 2c 22 22 0a 44  |03E,`if,`ib,"".D|
00001780  41 54 41 20 30 2c 2d 32  30 30 2c 31 30 30 2c 2d  |ATA 0,-200,100,-|
00001790  31 30 30 2c 26 33 30 33  44 2c 60 69 66 2c 60 69  |100,&303D,`if,`i|
000017a0  62 2c 58 6f 72 0a 44 41  54 41 20 31 30 30 2c 2d  |b,Xor.DATA 100,-|
000017b0  32 30 30 2c 32 30 30 2c  2d 31 30 30 2c 26 33 30  |200,200,-100,&30|
000017c0  33 44 2c 60 69 66 2c 60  69 62 2c 4f 52 0a 44 41  |3D,`if,`ib,OR.DA|
000017d0  54 41 20 32 30 30 2c 2d  32 30 30 2c 33 30 30 2c  |TA 200,-200,300,|
000017e0  2d 31 30 30 2c 26 33 30  33 44 2c 60 69 66 2c 60  |-100,&303D,`if,`|
000017f0  69 62 2c 41 4e 44 0a 44  41 54 41 20 33 30 30 2c  |ib,AND.DATA 300,|
00001800  2d 32 30 30 2c 34 30 30  2c 2d 31 30 30 2c 26 33  |-200,400,-100,&3|
00001810  30 33 44 2c 60 69 66 2c  60 69 62 2c 49 4e 56 2c  |03D,`if,`ib,INV,|
00001820  6e 75 6c 6c 0a 3a 0a 44  41 54 41 20 26 31 31 2c  |null.:.DATA &11,|
00001830  60 77 66 2c 60 77 62 2c  30 2c 2d 32 38 30 2c 37  |`wf,`wb,0,-280,7|
00001840  32 30 2c 30 2c 26 33 30  32 44 2c 22 22 2c 31 38  |20,0,&302D,"",18|
00001850  30 2c 31 37 30 2c 39 30  30 2c 34 35 30 2c 30 2c  |0,170,900,450,0,|
00001860  48 45 4c 50 21 0a 44 41  54 41 20 6e 75 6c 6c 0a  |HELP!.DATA null.|
00001870  44 41 54 41 20 26 31 44  2c 60 77 66 2c 60 77 62  |DATA &1D,`wf,`wb|
00001880  2c 30 2c 2d 37 30 30 2c  31 35 30 2c 30 2c 26 33  |,0,-700,150,0,&3|
00001890  30 32 44 2c 22 22 2c 35  30 30 2c 35 35 30 2c 36  |02D,"",500,550,6|
000018a0  35 30 2c 38 35 30 2c 30  2c 44 49 53 4b 0a 44 41  |50,850,0,DISK.DA|
000018b0  54 41 20 6e 75 6c 6c 0a  44 41 54 41 20 26 30 30  |TA null.DATA &00|
000018c0  2c 60 77 66 2c 60 77 62  2c 30 2c 2d 37 34 34 2c  |,`wf,`wb,0,-744,|
000018d0  31 31 31 32 2c 30 2c 26  33 30 32 44 2c 22 22 2c  |1112,0,&302D,"",|
000018e0  31 36 34 2c 32 33 32 2c  31 32 37 36 2c 39 37 36  |164,232,1276,976|
000018f0  2c 30 2c 22 22 0a 44 41  54 41 20 6e 75 6c 6c 0a  |,0,"".DATA null.|
00001900  44 41 54 41 20 26 31 30  2c 60 69 66 2c 60 69 62  |DATA &10,`if,`ib|
00001910  2c 30 2c 2d 34 39 34 2c  31 36 30 2c 30 2c 30 2c  |,0,-494,160,0,0,|
00001920  22 22 2c 30 2c 34 34 32  2c 31 36 30 2c 39 33 36  |"",0,442,160,936|
00001930  2c 32 31 2c 22 22 0a 44  41 54 41 20 34 2c 2d 20  |,21,"".DATA 4,- |
00001940  34 30 2c 20 33 36 2c 2d  38 2c 26 33 30 32 44 2c  |40, 36,-8,&302D,|
00001950  60 69 66 2c 26 38 30 2c  22 22 0a 44 41 54 41 34  |`if,&80,"".DATA4|
00001960  34 2c 2d 20 34 30 2c 20  37 36 2c 2d 38 2c 26 33  |4,- 40, 76,-8,&3|
00001970  30 32 44 2c 60 69 66 2c  26 38 31 2c 22 22 0a 44  |02D,`if,&81,"".D|
00001980  41 54 41 38 34 2c 2d 20  34 30 2c 31 31 36 2c 2d  |ATA84,- 40,116,-|
00001990  38 2c 26 33 30 32 44 2c  60 69 66 2c 26 38 32 2c  |8,&302D,`if,&82,|
000019a0  22 22 0a 44 41 54 41 20  31 32 34 2c 2d 20 34 30  |"".DATA 124,- 40|
000019b0  2c 31 35 36 2c 2d 38 2c  26 33 30 32 44 2c 60 69  |,156,-8,&302D,`i|
000019c0  66 2c 26 38 33 2c 22 22  0a 44 41 54 41 20 34 2c  |f,&83,"".DATA 4,|
000019d0  2d 20 38 30 2c 20 33 36  2c 2d 20 34 38 2c 26 33  |- 80, 36,- 48,&3|
000019e0  30 32 44 2c 60 69 66 2c  26 38 34 2c 22 22 0a 44  |02D,`if,&84,"".D|
000019f0  41 54 41 34 34 2c 2d 20  38 30 2c 20 37 36 2c 2d  |ATA44,- 80, 76,-|
00001a00  20 34 38 2c 26 33 30 32  44 2c 60 69 66 2c 26 38  | 48,&302D,`if,&8|
00001a10  35 2c 22 22 0a 44 41 54  41 38 34 2c 2d 20 38 30  |5,"".DATA84,- 80|
00001a20  2c 31 31 36 2c 2d 20 34  38 2c 26 33 30 32 44 2c  |,116,- 48,&302D,|
00001a30  60 69 66 2c 26 38 36 2c  22 22 0a 44 41 54 41 20  |`if,&86,"".DATA |
00001a40  31 32 34 2c 2d 20 38 30  2c 31 35 36 2c 2d 20 34  |124,- 80,156,- 4|
00001a50  38 2c 26 33 30 32 44 2c  60 69 66 2c 26 38 37 2c  |8,&302D,`if,&87,|
00001a60  22 22 0a 44 41 54 41 20  34 2c 2d 31 32 30 2c 20  |"".DATA 4,-120, |
00001a70  33 36 2c 2d 20 38 38 2c  26 33 30 32 44 2c 60 69  |36,- 88,&302D,`i|
00001a80  66 2c 26 38 38 2c 22 22  0a 44 41 54 41 34 34 2c  |f,&88,"".DATA44,|
00001a90  2d 31 32 30 2c 20 37 36  2c 2d 20 38 38 2c 26 33  |-120, 76,- 88,&3|
00001aa0  30 32 44 2c 60 69 66 2c  26 38 39 2c 22 22 0a 44  |02D,`if,&89,"".D|
00001ab0  41 54 41 38 34 2c 2d 31  32 30 2c 31 31 36 2c 2d  |ATA84,-120,116,-|
00001ac0  20 38 38 2c 26 33 30 32  44 2c 60 69 66 2c 26 38  | 88,&302D,`if,&8|
00001ad0  41 2c 22 22 0a 44 41 54  41 20 31 32 34 2c 2d 31  |A,"".DATA 124,-1|
00001ae0  32 30 2c 31 35 36 2c 2d  20 38 38 2c 26 33 30 32  |20,156,- 88,&302|
00001af0  44 2c 60 69 66 2c 26 38  42 2c 22 22 0a 44 41 54  |D,`if,&8B,"".DAT|
00001b00  41 20 34 2c 2d 31 36 30  2c 20 33 36 2c 2d 31 32  |A 4,-160, 36,-12|
00001b10  38 2c 26 33 30 32 44 2c  60 69 66 2c 26 38 43 2c  |8,&302D,`if,&8C,|
00001b20  22 22 0a 44 41 54 41 34  34 2c 2d 31 36 30 2c 20  |"".DATA44,-160, |
00001b30  37 36 2c 2d 31 32 38 2c  26 33 30 32 44 2c 60 69  |76,-128,&302D,`i|
00001b40  66 2c 26 38 44 2c 22 22  0a 44 41 54 41 38 34 2c  |f,&8D,"".DATA84,|
00001b50  2d 31 36 30 2c 31 31 36  2c 2d 31 32 38 2c 26 33  |-160,116,-128,&3|
00001b60  30 32 44 2c 60 69 66 2c  26 38 45 2c 22 22 0a 44  |02D,`if,&8E,"".D|
00001b70  41 54 41 20 31 32 34 2c  2d 31 36 30 2c 31 35 36  |ATA 124,-160,156|
00001b80  2c 2d 31 32 38 2c 26 33  30 32 44 2c 60 69 66 2c  |,-128,&302D,`if,|
00001b90  26 38 46 2c 22 22 0a 44  41 54 41 20 34 2c 2d 33  |&8F,"".DATA 4,-3|
00001ba0  38 30 2c 20 36 38 2c 2d  33 30 38 2c 26 33 30 33  |80, 68,-308,&303|
00001bb0  45 2c 60 69 66 2c 60 69  62 2c 22 65 63 66 30 22  |E,`if,`ib,"ecf0"|
00001bc0  0a 44 41 54 41 39 32 2c  2d 33 38 30 2c 31 35 32  |.DATA92,-380,152|
00001bd0  2c 2d 33 30 38 2c 26 33  30 33 45 2c 60 69 66 2c  |,-308,&303E,`if,|
00001be0  60 69 62 2c 22 65 63 66  31 22 0a 44 41 54 41 20  |`ib,"ecf1".DATA |
00001bf0  34 2c 2d 34 36 30 2c 20  36 38 2c 2d 33 38 38 2c  |4,-460, 68,-388,|
00001c00  26 33 30 33 45 2c 60 69  66 2c 60 69 62 2c 22 65  |&303E,`if,`ib,"e|
00001c10  63 66 32 22 0a 44 41 54  41 39 32 2c 2d 34 36 30  |cf2".DATA92,-460|
00001c20  2c 31 35 32 2c 2d 33 38  38 2c 26 33 30 33 45 2c  |,152,-388,&303E,|
00001c30  60 69 66 2c 60 69 62 2c  22 65 63 66 33 22 0a 44  |`if,`ib,"ecf3".D|
00001c40  41 54 41 20 34 30 2c 2d  32 34 38 2c 31 31 30 2c  |ATA 40,-248,110,|
00001c50  2d 31 37 32 2c 26 33 30  33 45 2c 60 69 66 2c 26  |-172,&303E,`if,&|
00001c60  38 30 2c 22 63 75 72 63  6f 6c 22 0a 44 41 54 41  |80,"curcol".DATA|
00001c70  20 6e 75 6c 6c 0a 44 41  54 41 20 26 31 2c 60 77  | null.DATA &1,`w|
00001c80  66 2c 60 77 62 2c 30 2c  2d 34 30 30 2c 35 30 30  |f,`wb,0,-400,500|
00001c90  2c 30 2c 26 33 30 32 44  2c 22 22 2c 32 35 30 2c  |,0,&302D,"",250,|
00001ca0  33 33 30 2c 37 35 30 2c  37 33 30 2c 31 2c 50 61  |330,750,730,1,Pa|
00001cb0  6c 65 74 74 65 0a 44 41  54 41 20 30 2c 2d 34 30  |lette.DATA 0,-40|
00001cc0  30 2c 35 30 30 2c 30 2c  26 33 30 30 30 2c 60 69  |0,500,0,&3000,`i|
00001cd0  66 2c 60 69 62 2c 22 22  0a 44 41 54 41 20 6e 75  |f,`ib,"".DATA nu|
00001ce0  6c 6c 0a 44 41 54 41 20  26 31 31 2c 60 77 66 2c  |ll.DATA &11,`wf,|
00001cf0  60 77 62 2c 30 2c 2d 32  39 32 2c 33 30 36 2c 30  |`wb,0,-292,306,0|
00001d00  2c 26 33 30 32 44 2c 22  22 2c 31 35 30 2c 34 30  |,&302D,"",150,40|
00001d10  30 2c 34 35 36 2c 36 39  32 2c 36 34 2c 50 61 74  |0,456,692,64,Pat|
00001d20  74 65 72 6e 0a 44 41 54  41 20 32 2c 2d 33 36 2c  |tern.DATA 2,-36,|
00001d30  20 33 38 2c 2d 34 2c 26  33 30 32 39 2c 37 2c 26  | 38,-4,&3029,7,&|
00001d40  38 30 2c 22 22 0a 44 41  54 41 34 30 2c 2d 33 36  |80,"".DATA40,-36|
00001d50  2c 20 37 36 2c 2d 34 2c  26 33 30 32 39 2c 37 2c  |, 76,-4,&3029,7,|
00001d60  26 38 30 2c 22 22 0a 44  41 54 41 37 38 2c 2d 33  |&80,"".DATA78,-3|
00001d70  36 2c 31 31 34 2c 2d 34  2c 26 33 30 32 39 2c 37  |6,114,-4,&3029,7|
00001d80  2c 26 38 30 2c 22 22 0a  44 41 54 41 20 31 31 36  |,&80,"".DATA 116|
00001d90  2c 2d 33 36 2c 31 35 32  2c 2d 34 2c 26 33 30 32  |,-36,152,-4,&302|
00001da0  39 2c 37 2c 26 38 30 2c  22 22 0a 44 41 54 41 20  |9,7,&80,"".DATA |
00001db0  31 35 34 2c 2d 33 36 2c  31 39 30 2c 2d 34 2c 26  |154,-36,190,-4,&|
00001dc0  33 30 32 39 2c 37 2c 26  38 30 2c 22 22 0a 44 41  |3029,7,&80,"".DA|
00001dd0  54 41 20 31 39 32 2c 2d  33 36 2c 32 32 38 2c 2d  |TA 192,-36,228,-|
00001de0  34 2c 26 33 30 32 39 2c  37 2c 26 38 30 2c 22 22  |4,&3029,7,&80,""|
00001df0  0a 44 41 54 41 20 32 33  30 2c 2d 33 36 2c 32 36  |.DATA 230,-36,26|
00001e00  36 2c 2d 34 2c 26 33 30  32 39 2c 37 2c 26 38 30  |6,-4,&3029,7,&80|
00001e10  2c 22 22 0a 44 41 54 41  20 32 36 38 2c 2d 33 36  |,"".DATA 268,-36|
00001e20  2c 33 30 34 2c 2d 34 2c  26 33 30 32 39 2c 37 2c  |,304,-4,&3029,7,|
00001e30  26 38 30 2c 22 22 0a 44  41 54 41 20 32 2c 2d 20  |&80,"".DATA 2,- |
00001e40  37 32 2c 20 33 38 2c 2d  20 34 30 2c 26 33 30 32  |72, 38,- 40,&302|
00001e50  39 2c 37 2c 26 38 30 2c  22 22 0a 44 41 54 41 34  |9,7,&80,"".DATA4|
00001e60  30 2c 2d 20 37 32 2c 20  37 36 2c 2d 20 34 30 2c  |0,- 72, 76,- 40,|
00001e70  26 33 30 32 39 2c 37 2c  26 38 30 2c 22 22 0a 44  |&3029,7,&80,"".D|
00001e80  41 54 41 37 38 2c 2d 20  37 32 2c 31 31 34 2c 2d  |ATA78,- 72,114,-|
00001e90  20 34 30 2c 26 33 30 32  39 2c 37 2c 26 38 30 2c  | 40,&3029,7,&80,|
00001ea0  22 22 0a 44 41 54 41 20  31 31 36 2c 2d 20 37 32  |"".DATA 116,- 72|
00001eb0  2c 31 35 32 2c 2d 20 34  30 2c 26 33 30 32 39 2c  |,152,- 40,&3029,|
00001ec0  37 2c 26 38 30 2c 22 22  0a 44 41 54 41 20 31 35  |7,&80,"".DATA 15|
00001ed0  34 2c 2d 20 37 32 2c 31  39 30 2c 2d 20 34 30 2c  |4,- 72,190,- 40,|
00001ee0  26 33 30 32 39 2c 37 2c  26 38 30 2c 22 22 0a 44  |&3029,7,&80,"".D|
00001ef0  41 54 41 20 31 39 32 2c  2d 20 37 32 2c 32 32 38  |ATA 192,- 72,228|
00001f00  2c 2d 20 34 30 2c 26 33  30 32 39 2c 37 2c 26 38  |,- 40,&3029,7,&8|
00001f10  30 2c 22 22 0a 44 41 54  41 20 32 33 30 2c 2d 20  |0,"".DATA 230,- |
00001f20  37 32 2c 32 36 36 2c 2d  20 34 30 2c 26 33 30 32  |72,266,- 40,&302|
00001f30  39 2c 37 2c 26 38 30 2c  22 22 0a 44 41 54 41 20  |9,7,&80,"".DATA |
00001f40  32 36 38 2c 2d 20 37 32  2c 33 30 34 2c 2d 20 34  |268,- 72,304,- 4|
00001f50  30 2c 26 33 30 32 39 2c  37 2c 26 38 30 2c 22 22  |0,&3029,7,&80,""|
00001f60  0a 44 41 54 41 20 32 2c  2d 31 30 38 2c 20 33 38  |.DATA 2,-108, 38|
00001f70  2c 2d 20 37 36 2c 26 33  30 32 39 2c 37 2c 26 38  |,- 76,&3029,7,&8|
00001f80  30 2c 22 22 0a 44 41 54  41 34 30 2c 2d 31 30 38  |0,"".DATA40,-108|
00001f90  2c 20 37 36 2c 2d 20 37  36 2c 26 33 30 32 39 2c  |, 76,- 76,&3029,|
00001fa0  37 2c 26 38 30 2c 22 22  0a 44 41 54 41 37 38 2c  |7,&80,"".DATA78,|
00001fb0  2d 31 30 38 2c 31 31 34  2c 2d 20 37 36 2c 26 33  |-108,114,- 76,&3|
00001fc0  30 32 39 2c 37 2c 26 38  30 2c 22 22 0a 44 41 54  |029,7,&80,"".DAT|
00001fd0  41 20 31 31 36 2c 2d 31  30 38 2c 31 35 32 2c 2d  |A 116,-108,152,-|
00001fe0  20 37 36 2c 26 33 30 32  39 2c 37 2c 26 38 30 2c  | 76,&3029,7,&80,|
00001ff0  22 22 0a 44 41 54 41 20  31 35 34 2c 2d 31 30 38  |"".DATA 154,-108|
00002000  2c 31 39 30 2c 2d 20 37  36 2c 26 33 30 32 39 2c  |,190,- 76,&3029,|
00002010  37 2c 26 38 30 2c 22 22  0a 44 41 54 41 20 31 39  |7,&80,"".DATA 19|
00002020  32 2c 2d 31 30 38 2c 32  32 38 2c 2d 20 37 36 2c  |2,-108,228,- 76,|
00002030  26 33 30 32 39 2c 37 2c  26 38 30 2c 22 22 0a 44  |&3029,7,&80,"".D|
00002040  41 54 41 20 32 33 30 2c  2d 31 30 38 2c 32 36 36  |ATA 230,-108,266|
00002050  2c 2d 20 37 36 2c 26 33  30 32 39 2c 37 2c 26 38  |,- 76,&3029,7,&8|
00002060  30 2c 22 22 0a 44 41 54  41 20 32 36 38 2c 2d 31  |0,"".DATA 268,-1|
00002070  30 38 2c 33 30 34 2c 2d  20 37 36 2c 26 33 30 32  |08,304,- 76,&302|
00002080  39 2c 37 2c 26 38 30 2c  22 22 0a 44 41 54 41 20  |9,7,&80,"".DATA |
00002090  32 2c 2d 31 34 34 2c 20  33 38 2c 2d 31 31 32 2c  |2,-144, 38,-112,|
000020a0  26 33 30 32 39 2c 37 2c  26 38 30 2c 22 22 0a 44  |&3029,7,&80,"".D|
000020b0  41 54 41 34 30 2c 2d 31  34 34 2c 20 37 36 2c 2d  |ATA40,-144, 76,-|
000020c0  31 31 32 2c 26 33 30 32  39 2c 37 2c 26 38 30 2c  |112,&3029,7,&80,|
000020d0  22 22 0a 44 41 54 41 37  38 2c 2d 31 34 34 2c 31  |"".DATA78,-144,1|
000020e0  31 34 2c 2d 31 31 32 2c  26 33 30 32 39 2c 37 2c  |14,-112,&3029,7,|
000020f0  26 38 30 2c 22 22 0a 44  41 54 41 20 31 31 36 2c  |&80,"".DATA 116,|
00002100  2d 31 34 34 2c 31 35 32  2c 2d 31 31 32 2c 26 33  |-144,152,-112,&3|
00002110  30 32 39 2c 37 2c 26 38  30 2c 22 22 0a 44 41 54  |029,7,&80,"".DAT|
00002120  41 20 31 35 34 2c 2d 31  34 34 2c 31 39 30 2c 2d  |A 154,-144,190,-|
00002130  31 31 32 2c 26 33 30 32  39 2c 37 2c 26 38 30 2c  |112,&3029,7,&80,|
00002140  22 22 0a 44 41 54 41 20  31 39 32 2c 2d 31 34 34  |"".DATA 192,-144|
00002150  2c 32 32 38 2c 2d 31 31  32 2c 26 33 30 32 39 2c  |,228,-112,&3029,|
00002160  37 2c 26 38 30 2c 22 22  0a 44 41 54 41 20 32 33  |7,&80,"".DATA 23|
00002170  30 2c 2d 31 34 34 2c 32  36 36 2c 2d 31 31 32 2c  |0,-144,266,-112,|
00002180  26 33 30 32 39 2c 37 2c  26 38 30 2c 22 22 0a 44  |&3029,7,&80,"".D|
00002190  41 54 41 20 32 36 38 2c  2d 31 34 34 2c 33 30 34  |ATA 268,-144,304|
000021a0  2c 2d 31 31 32 2c 26 33  30 32 39 2c 37 2c 26 38  |,-112,&3029,7,&8|
000021b0  30 2c 22 22 0a 44 41 54  41 20 32 2c 2d 31 38 30  |0,"".DATA 2,-180|
000021c0  2c 20 33 38 2c 2d 31 34  38 2c 26 33 30 32 39 2c  |, 38,-148,&3029,|
000021d0  37 2c 26 38 30 2c 22 22  0a 44 41 54 41 34 30 2c  |7,&80,"".DATA40,|
000021e0  2d 31 38 30 2c 20 37 36  2c 2d 31 34 38 2c 26 33  |-180, 76,-148,&3|
000021f0  30 32 39 2c 37 2c 26 38  30 2c 22 22 0a 44 41 54  |029,7,&80,"".DAT|
00002200  41 37 38 2c 2d 31 38 30  2c 31 31 34 2c 2d 31 34  |A78,-180,114,-14|
00002210  38 2c 26 33 30 32 39 2c  37 2c 26 38 30 2c 22 22  |8,&3029,7,&80,""|
00002220  0a 44 41 54 41 20 31 31  36 2c 2d 31 38 30 2c 31  |.DATA 116,-180,1|
00002230  35 32 2c 2d 31 34 38 2c  26 33 30 32 39 2c 37 2c  |52,-148,&3029,7,|
00002240  26 38 30 2c 22 22 0a 44  41 54 41 20 31 35 34 2c  |&80,"".DATA 154,|
00002250  2d 31 38 30 2c 31 39 30  2c 2d 31 34 38 2c 26 33  |-180,190,-148,&3|
00002260  30 32 39 2c 37 2c 26 38  30 2c 22 22 0a 44 41 54  |029,7,&80,"".DAT|
00002270  41 20 31 39 32 2c 2d 31  38 30 2c 32 32 38 2c 2d  |A 192,-180,228,-|
00002280  31 34 38 2c 26 33 30 32  39 2c 37 2c 26 38 30 2c  |148,&3029,7,&80,|
00002290  22 22 0a 44 41 54 41 20  32 33 30 2c 2d 31 38 30  |"".DATA 230,-180|
000022a0  2c 32 36 36 2c 2d 31 34  38 2c 26 33 30 32 39 2c  |,266,-148,&3029,|
000022b0  37 2c 26 38 30 2c 22 22  0a 44 41 54 41 20 32 36  |7,&80,"".DATA 26|
000022c0  38 2c 2d 31 38 30 2c 33  30 34 2c 2d 31 34 38 2c  |8,-180,304,-148,|
000022d0  26 33 30 32 39 2c 37 2c  26 38 30 2c 22 22 0a 44  |&3029,7,&80,"".D|
000022e0  41 54 41 20 32 2c 2d 32  31 36 2c 20 33 38 2c 2d  |ATA 2,-216, 38,-|
000022f0  31 38 34 2c 26 33 30 32  39 2c 37 2c 26 38 30 2c  |184,&3029,7,&80,|
00002300  22 22 0a 44 41 54 41 34  30 2c 2d 32 31 36 2c 20  |"".DATA40,-216, |
00002310  37 36 2c 2d 31 38 34 2c  26 33 30 32 39 2c 37 2c  |76,-184,&3029,7,|
00002320  26 38 30 2c 22 22 0a 44  41 54 41 37 38 2c 2d 32  |&80,"".DATA78,-2|
00002330  31 36 2c 31 31 34 2c 2d  31 38 34 2c 26 33 30 32  |16,114,-184,&302|
00002340  39 2c 37 2c 26 38 30 2c  22 22 0a 44 41 54 41 20  |9,7,&80,"".DATA |
00002350  31 31 36 2c 2d 32 31 36  2c 31 35 32 2c 2d 31 38  |116,-216,152,-18|
00002360  34 2c 26 33 30 32 39 2c  37 2c 26 38 30 2c 22 22  |4,&3029,7,&80,""|
00002370  0a 44 41 54 41 20 31 35  34 2c 2d 32 31 36 2c 31  |.DATA 154,-216,1|
00002380  39 30 2c 2d 31 38 34 2c  26 33 30 32 39 2c 37 2c  |90,-184,&3029,7,|
00002390  26 38 30 2c 22 22 0a 44  41 54 41 20 31 39 32 2c  |&80,"".DATA 192,|
000023a0  2d 32 31 36 2c 32 32 38  2c 2d 31 38 34 2c 26 33  |-216,228,-184,&3|
000023b0  30 32 39 2c 37 2c 26 38  30 2c 22 22 0a 44 41 54  |029,7,&80,"".DAT|
000023c0  41 20 32 33 30 2c 2d 32  31 36 2c 32 36 36 2c 2d  |A 230,-216,266,-|
000023d0  31 38 34 2c 26 33 30 32  39 2c 37 2c 26 38 30 2c  |184,&3029,7,&80,|
000023e0  22 22 0a 44 41 54 41 20  32 36 38 2c 2d 32 31 36  |"".DATA 268,-216|
000023f0  2c 33 30 34 2c 2d 31 38  34 2c 26 33 30 32 39 2c  |,304,-184,&3029,|
00002400  37 2c 26 38 30 2c 22 22  0a 44 41 54 41 20 32 2c  |7,&80,"".DATA 2,|
00002410  2d 32 35 32 2c 20 33 38  2c 2d 32 32 30 2c 26 33  |-252, 38,-220,&3|
00002420  30 32 39 2c 37 2c 26 38  30 2c 22 22 0a 44 41 54  |029,7,&80,"".DAT|
00002430  41 34 30 2c 2d 32 35 32  2c 20 37 36 2c 2d 32 32  |A40,-252, 76,-22|
00002440  30 2c 26 33 30 32 39 2c  37 2c 26 38 30 2c 22 22  |0,&3029,7,&80,""|
00002450  0a 44 41 54 41 37 38 2c  2d 32 35 32 2c 31 31 34  |.DATA78,-252,114|
00002460  2c 2d 32 32 30 2c 26 33  30 32 39 2c 37 2c 26 38  |,-220,&3029,7,&8|
00002470  30 2c 22 22 0a 44 41 54  41 20 31 31 36 2c 2d 32  |0,"".DATA 116,-2|
00002480  35 32 2c 31 35 32 2c 2d  32 32 30 2c 26 33 30 32  |52,152,-220,&302|
00002490  39 2c 37 2c 26 38 30 2c  22 22 0a 44 41 54 41 20  |9,7,&80,"".DATA |
000024a0  31 35 34 2c 2d 32 35 32  2c 31 39 30 2c 2d 32 32  |154,-252,190,-22|
000024b0  30 2c 26 33 30 32 39 2c  37 2c 26 38 30 2c 22 22  |0,&3029,7,&80,""|
000024c0  0a 44 41 54 41 20 31 39  32 2c 2d 32 35 32 2c 32  |.DATA 192,-252,2|
000024d0  32 38 2c 2d 32 32 30 2c  26 33 30 32 39 2c 37 2c  |28,-220,&3029,7,|
000024e0  26 38 30 2c 22 22 0a 44  41 54 41 20 32 33 30 2c  |&80,"".DATA 230,|
000024f0  2d 32 35 32 2c 32 36 36  2c 2d 32 32 30 2c 26 33  |-252,266,-220,&3|
00002500  30 32 39 2c 37 2c 26 38  30 2c 22 22 0a 44 41 54  |029,7,&80,"".DAT|
00002510  41 20 32 36 38 2c 2d 32  35 32 2c 33 30 34 2c 2d  |A 268,-252,304,-|
00002520  32 32 30 2c 26 33 30 32  39 2c 37 2c 26 38 30 2c  |220,&3029,7,&80,|
00002530  22 22 0a 44 41 54 41 20  32 2c 2d 32 38 38 2c 20  |"".DATA 2,-288, |
00002540  33 38 2c 2d 32 35 36 2c  26 33 30 32 39 2c 37 2c  |38,-256,&3029,7,|
00002550  26 38 30 2c 22 22 0a 44  41 54 41 34 30 2c 2d 32  |&80,"".DATA40,-2|
00002560  38 38 2c 20 37 36 2c 2d  32 35 36 2c 26 33 30 32  |88, 76,-256,&302|
00002570  39 2c 37 2c 26 38 30 2c  22 22 0a 44 41 54 41 37  |9,7,&80,"".DATA7|
00002580  38 2c 2d 32 38 38 2c 31  31 34 2c 2d 32 35 36 2c  |8,-288,114,-256,|
00002590  26 33 30 32 39 2c 37 2c  26 38 30 2c 22 22 0a 44  |&3029,7,&80,"".D|
000025a0  41 54 41 20 31 31 36 2c  2d 32 38 38 2c 31 35 32  |ATA 116,-288,152|
000025b0  2c 2d 32 35 36 2c 26 33  30 32 39 2c 37 2c 26 38  |,-256,&3029,7,&8|
000025c0  30 2c 22 22 0a 44 41 54  41 20 31 35 34 2c 2d 32  |0,"".DATA 154,-2|
000025d0  38 38 2c 31 39 30 2c 2d  32 35 36 2c 26 33 30 32  |88,190,-256,&302|
000025e0  39 2c 37 2c 26 38 30 2c  22 22 0a 44 41 54 41 20  |9,7,&80,"".DATA |
000025f0  31 39 32 2c 2d 32 38 38  2c 32 32 38 2c 2d 32 35  |192,-288,228,-25|
00002600  36 2c 26 33 30 32 39 2c  37 2c 26 38 30 2c 22 22  |6,&3029,7,&80,""|
00002610  0a 44 41 54 41 20 32 33  30 2c 2d 32 38 38 2c 32  |.DATA 230,-288,2|
00002620  36 36 2c 2d 32 35 36 2c  26 33 30 32 39 2c 37 2c  |66,-256,&3029,7,|
00002630  26 38 30 2c 22 22 0a 44  41 54 41 20 32 36 38 2c  |&80,"".DATA 268,|
00002640  2d 32 38 38 2c 33 30 34  2c 2d 32 35 36 2c 26 33  |-288,304,-256,&3|
00002650  30 32 39 2c 37 2c 26 38  30 2c 22 22 0a 44 41 54  |029,7,&80,"".DAT|
00002660  41 20 6e 75 6c 6c 0a 44  41 54 41 20 26 31 31 2c  |A null.DATA &11,|
00002670  60 77 66 2c 60 77 62 2c  30 2c 2d 31 39 32 2c 31  |`wf,`wb,0,-192,1|
00002680  39 32 2c 30 2c 26 33 30  32 44 2c 22 22 2c 36 30  |92,0,&302D,"",60|
00002690  30 2c 34 30 30 2c 37 39  32 2c 35 39 32 2c 31 32  |0,400,792,592,12|
000026a0  2c 42 72 75 73 68 65 73  0a 44 41 54 41 30 2c 2d  |,Brushes.DATA0,-|
000026b0  20 36 34 2c 20 34 38 2c  20 30 2c 26 33 30 32 44  | 64, 48, 0,&302D|
000026c0  2c 60 69 66 2c 26 38 38  2c 22 90 22 0a 44 41 54  |,`if,&88,".".DAT|
000026d0  41 20 34 38 2c 2d 20 36  34 2c 20 39 36 2c 20 30  |A 48,- 64, 96, 0|
000026e0  2c 26 33 30 32 44 2c 60  69 66 2c 60 69 62 2c 22  |,&302D,`if,`ib,"|
000026f0  f4 22 0a 44 41 54 41 20  39 36 2c 2d 20 36 34 2c  |.".DATA 96,- 64,|
00002700  20 31 34 34 2c 20 30 2c  26 33 30 32 44 2c 60 69  | 144, 0,&302D,`i|
00002710  66 2c 60 69 62 2c 22 f5  22 0a 44 41 54 41 20 31  |f,`ib,".".DATA 1|
00002720  34 34 2c 2d 20 36 34 2c  31 39 32 2c 20 30 2c 26  |44,- 64,192, 0,&|
00002730  33 30 32 44 2c 60 69 66  2c 60 69 62 2c 22 f6 22  |302D,`if,`ib,"."|
00002740  0a 44 41 54 41 30 2c 2d  31 32 38 2c 20 34 38 2c  |.DATA0,-128, 48,|
00002750  2d 20 36 34 2c 26 33 30  32 44 2c 60 69 66 2c 60  |- 64,&302D,`if,`|
00002760  69 62 2c 22 f7 22 0a 44  41 54 41 20 34 38 2c 2d  |ib,".".DATA 48,-|
00002770  31 32 38 2c 20 39 36 2c  2d 20 36 34 2c 26 33 30  |128, 96,- 64,&30|
00002780  32 44 2c 60 69 66 2c 60  69 62 2c 22 f8 22 0a 44  |2D,`if,`ib,".".D|
00002790  41 54 41 20 39 36 2c 2d  31 32 38 2c 20 31 34 34  |ATA 96,-128, 144|
000027a0  2c 2d 20 36 34 2c 26 33  30 32 44 2c 60 69 66 2c  |,- 64,&302D,`if,|
000027b0  60 69 62 2c 22 f9 22 0a  44 41 54 41 20 31 34 34  |`ib,".".DATA 144|
000027c0  2c 2d 31 32 38 2c 31 39  32 2c 2d 20 36 34 2c 26  |,-128,192,- 64,&|
000027d0  33 30 32 44 2c 60 69 66  2c 60 69 62 2c 22 fa 22  |302D,`if,`ib,"."|
000027e0  0a 44 41 54 41 30 2c 2d  31 39 32 2c 20 34 38 2c  |.DATA0,-192, 48,|
000027f0  2d 31 32 38 2c 26 33 30  32 44 2c 60 69 66 2c 60  |-128,&302D,`if,`|
00002800  69 62 2c 22 fb 22 0a 44  41 54 41 20 34 38 2c 2d  |ib,".".DATA 48,-|
00002810  31 39 32 2c 20 39 36 2c  2d 31 32 38 2c 26 33 30  |192, 96,-128,&30|
00002820  32 44 2c 60 69 66 2c 60  69 62 2c 22 20 22 0a 44  |2D,`if,`ib," ".D|
00002830  41 54 41 20 39 36 2c 2d  31 39 32 2c 20 31 34 34  |ATA 96,-192, 144|
00002840  2c 2d 31 32 38 2c 26 33  30 32 44 2c 60 69 66 2c  |,-128,&302D,`if,|
00002850  60 69 62 2c 22 fd 22 0a  44 41 54 41 20 31 34 34  |`ib,".".DATA 144|
00002860  2c 2d 31 39 32 2c 31 39  32 2c 2d 31 32 38 2c 26  |,-192,192,-128,&|
00002870  33 30 32 44 2c 60 69 66  2c 60 69 62 2c 22 2d 22  |302D,`if,`ib,"-"|
00002880  0a 44 41 54 41 20 6e 75  6c 6c 0a 44 41 54 41 20  |.DATA null.DATA |
00002890  26 31 31 2c 60 77 66 2c  60 77 62 2c 30 2c 2d 31  |&11,`wf,`wb,0,-1|
000028a0  30 30 2c 32 35 30 2c 30  2c 26 46 30 32 44 2c 22  |00,250,0,&F02D,"|
000028b0  22 2c 39 30 30 2c 33 35  30 2c 31 31 35 30 2c 34  |",900,350,1150,4|
000028c0  35 30 2c 30 2c 22 44 49  53 4b 20 53 41 56 45 22  |50,0,"DISK SAVE"|
000028d0  0a 44 41 54 41 20 6e 75  6c 6c 0a 44 41 54 41 20  |.DATA null.DATA |
000028e0  26 34 31 2c 60 77 66 2c  60 77 62 2c 30 2c 2d 37  |&41,`wf,`wb,0,-7|
000028f0  30 30 2c 31 32 38 30 2c  30 2c 26 33 30 32 44 2c  |00,1280,0,&302D,|
00002900  22 22 2c 31 30 30 2c 35  30 2c 31 30 30 30 2c 33  |"",100,50,1000,3|
00002910  30 30 2c 30 2c 22 45 52  52 4f 52 22 0a 44 41 54  |00,0,"ERROR".DAT|
00002920  41 20 22 22 0a 3a 0a 60  6d 61 78 5f 77 69 6e 64  |A "".:.`max_wind|
00002930  6f 77 20 3d 20 77 69 6e  64 25 0a 45 4e 44 50 52  |ow = wind%.ENDPR|
00002940  4f 43 0a 44 45 46 20 46  4e 63 72 65 61 74 65 57  |OC.DEF FNcreateW|
00002950  28 63 78 30 25 2c 63 79  30 25 2c 63 78 31 25 2c  |(cx0%,cy0%,cx1%,|
00002960  63 79 31 25 2c 73 63 78  25 2c 73 63 79 25 2c 66  |cy1%,scx%,scy%,f|
00002970  6c 61 67 73 25 2c 66 63  25 2c 62 63 25 2c 73 78  |lags%,fc%,bc%,sx|
00002980  30 25 2c 73 79 30 25 2c  73 78 31 25 2c 73 79 31  |0%,sy0%,sx1%,sy1|
00002990  25 2c 69 63 6f 6e 66 25  2c 69 63 6f 6e 24 2c 74  |%,iconf%,icon$,t|
000029a0  69 74 6c 65 24 2c 6e 69  63 6f 6e 73 25 29 0a 21  |itle$,nicons%).!|
000029b0  77 69 6d 70 3d 63 78 30  25 3a 77 69 6d 70 21 34  |wimp=cx0%:wimp!4|
000029c0  3d 63 79 30 25 3a 77 69  6d 70 21 38 3d 63 78 31  |=cy0%:wimp!8=cx1|
000029d0  25 3a 77 69 6d 70 21 31  32 3d 63 79 31 25 3a 77  |%:wimp!12=cy1%:w|
000029e0  69 6d 70 21 31 36 3d 73  63 78 25 3a 77 69 6d 70  |imp!16=scx%:wimp|
000029f0  21 32 30 3d 73 63 79 25  0a 77 69 6d 70 21 32 34  |!20=scy%.wimp!24|
00002a00  3d 2d 31 3a 77 69 6d 70  21 32 38 3d 66 6c 61 67  |=-1:wimp!28=flag|
00002a10  73 25 0a 77 69 6d 70 3f  33 32 3d 60 74 66 3a 77  |s%.wimp?32=`tf:w|
00002a20  69 6d 70 3f 33 33 3d 60  74 62 3a 77 69 6d 70 3f  |imp?33=`tb:wimp?|
00002a30  33 34 3d 66 63 25 3a 77  69 6d 70 3f 33 35 3d 62  |34=fc%:wimp?35=b|
00002a40  63 25 0a 77 69 6d 70 3f  33 36 3d 60 73 66 3a 77  |c%.wimp?36=`sf:w|
00002a50  69 6d 70 3f 33 37 3d 60  73 62 3a 77 69 6d 70 3f  |imp?37=`sb:wimp?|
00002a60  33 38 3d 60 77 62 3a 77  69 6d 70 3f 33 39 3d 30  |38=`wb:wimp?39=0|
00002a70  0a 77 69 6d 70 21 34 30  3d 73 78 30 25 3a 77 69  |.wimp!40=sx0%:wi|
00002a80  6d 70 21 34 34 3d 73 79  30 25 3a 77 69 6d 70 21  |mp!44=sy0%:wimp!|
00002a90  34 38 3d 73 78 31 25 3a  77 69 6d 70 21 35 32 3d  |48=sx1%:wimp!52=|
00002aa0  73 79 31 25 0a 77 69 6d  70 21 35 36 3d 69 63 6f  |sy1%.wimp!56=ico|
00002ab0  6e 66 25 3a 77 69 6d 70  21 36 30 3d 30 3a 77 69  |nf%:wimp!60=0:wi|
00002ac0  6d 70 21 36 34 3d 30 3a  77 69 6d 70 21 36 38 3d  |mp!64=0:wimp!68=|
00002ad0  30 3a 52 45 4d 20 44 41  4e 47 45 52 20 24 28 77  |0:REM DANGER $(w|
00002ae0  69 6d 70 2b 36 30 29 3d  4c 45 46 54 24 28 69 63  |imp+60)=LEFT$(ic|
00002af0  6f 6e 24 2c 31 31 29 0a  24 28 77 69 6d 70 2b 37  |on$,11).$(wimp+7|
00002b00  32 29 3d 4c 45 46 54 24  28 74 69 74 6c 65 24 2c  |2)=LEFT$(title$,|
00002b10  31 31 29 0a 77 69 6d 70  21 38 34 3d 6e 69 63 6f  |11).wimp!84=nico|
00002b20  6e 73 25 0a 4c 4f 43 41  4c 49 25 2c 78 30 25 2c  |ns%.LOCALI%,x0%,|
00002b30  79 30 25 2c 78 31 25 2c  79 31 25 2c 66 25 2c 64  |y0%,x1%,y1%,f%,d|
00002b40  61 74 61 24 3a 49 25 3d  77 69 6d 70 2b 38 38 0a  |ata$:I%=wimp+88.|
00002b50  57 48 49 4c 45 20 6e 69  63 6f 6e 73 25 3e 30 0a  |WHILE nicons%>0.|
00002b60  52 45 41 44 20 78 30 25  2c 79 30 25 2c 78 31 25  |READ x0%,y0%,x1%|
00002b70  2c 79 31 25 2c 66 25 2c  66 63 25 2c 62 63 25 2c  |,y1%,f%,fc%,bc%,|
00002b80  64 61 74 61 24 0a 49 25  21 30 3d 78 30 25 3a 49  |data$.I%!0=x0%:I|
00002b90  25 21 34 3d 79 30 25 3a  49 25 21 38 3d 78 31 25  |%!4=y0%:I%!8=x1%|
00002ba0  3a 49 25 21 31 32 3d 79  31 25 3a 49 25 21 31 36  |:I%!12=y1%:I%!16|
00002bb0  3d 66 25 3a 24 28 49 25  2b 32 30 29 3d 64 61 74  |=f%:$(I%+20)=dat|
00002bc0  61 24 0a 49 25 3f 31 39  3d 66 63 25 2b 28 62 63  |a$.I%?19=fc%+(bc|
00002bd0  25 41 4e 44 31 35 29 2a  31 36 0a 49 25 3d 49 25  |%AND15)*16.I%=I%|
00002be0  2b 33 32 3a 6e 69 63 6f  6e 73 25 3d 6e 69 63 6f  |+32:nicons%=nico|
00002bf0  6e 73 25 2d 31 0a 45 4e  44 57 48 49 4c 45 0a 53  |ns%-1.ENDWHILE.S|
00002c00  59 53 20 63 72 65 61 74  65 5f 77 69 6e 64 6f 77  |YS create_window|
00002c10  2c 30 2c 77 69 6d 70 20  54 4f 20 68 61 6e 64 6c  |,0,wimp TO handl|
00002c20  65 25 0a 3d 68 61 6e 64  6c 65 25 0a 44 45 46 20  |e%.=handle%.DEF |
00002c30  50 52 4f 43 6f 70 65 6e  5f 77 69 6e 64 6f 77 28  |PROCopen_window(|
00002c40  68 61 6e 64 6c 65 25 2c  78 30 25 2c 79 30 25 2c  |handle%,x0%,y0%,|
00002c50  78 31 25 2c 79 31 25 2c  73 63 78 25 2c 73 63 79  |x1%,y1%,scx%,scy|
00002c60  25 2c 62 68 61 6e 64 6c  65 25 29 0a 49 46 68 61  |%,bhandle%).IFha|
00002c70  6e 64 6c 65 25 3d 2d 31  20 4f 52 20 62 68 61 6e  |ndle%=-1 OR bhan|
00002c80  64 6c 65 25 3c 2d 31 20  54 48 45 4e 45 4e 44 50  |dle%<-1 THENENDP|
00002c90  52 4f 43 0a 77 69 6d 70  21 30 3d 68 61 6e 64 6c  |ROC.wimp!0=handl|
00002ca0  65 25 3a 77 69 6d 70 21  32 38 3d 62 68 61 6e 64  |e%:wimp!28=bhand|
00002cb0  6c 65 25 0a 77 69 6d 70  21 34 3d 78 30 25 3a 77  |le%.wimp!4=x0%:w|
00002cc0  69 6d 70 21 38 3d 79 30  25 3a 77 69 6d 70 21 31  |imp!8=y0%:wimp!1|
00002cd0  32 3d 78 31 25 3a 77 69  6d 70 21 31 36 3d 79 31  |2=x1%:wimp!16=y1|
00002ce0  25 0a 77 69 6d 70 21 32  30 3d 73 63 78 25 3a 77  |%.wimp!20=scx%:w|
00002cf0  69 6d 70 21 32 34 3d 73  63 79 25 0a 53 59 53 20  |imp!24=scy%.SYS |
00002d00  6f 70 65 6e 5f 77 69 6e  64 6f 77 2c 30 2c 77 69  |open_window,0,wi|
00002d10  6d 70 0a 49 46 20 68 61  6e 64 6c 65 25 20 3d 20  |mp.IF handle% = |
00002d20  77 69 6e 64 6f 77 73 28  31 29 20 54 48 45 4e 0a  |windows(1) THEN.|
00002d30  50 52 4f 43 65 63 66 28  30 29 0a 50 52 4f 43 65  |PROCecf(0).PROCe|
00002d40  63 66 28 31 29 0a 50 52  4f 43 65 63 66 28 32 29  |cf(1).PROCecf(2)|
00002d50  0a 50 52 4f 43 65 63 66  28 33 29 0a 68 61 6e 64  |.PROCecf(3).hand|
00002d60  6c 65 25 20 3d 20 30 0a  50 52 4f 43 6f 70 65 6e  |le% = 0.PROCopen|
00002d70  5f 77 69 6e 64 6f 77 28  77 69 6e 64 6f 77 73 28  |_window(windows(|
00002d80  36 29 2c 34 2c 34 34 32  2c 31 36 30 2c 39 33 36  |6),4,442,160,936|
00002d90  2c 30 2c 30 2c 2d 31 29  0a 50 52 4f 43 6f 70 65  |,0,0,-1).PROCope|
00002da0  6e 5f 77 69 6e 64 6f 77  28 77 69 6e 64 6f 77 73  |n_window(windows|
00002db0  28 35 29 2c 31 36 34 2c  32 33 32 2c 31 32 37 36  |(5),164,232,1276|
00002dc0  2c 39 37 36 2c 30 2c 30  2c 2d 31 29 0a 50 52 4f  |,976,0,0,-1).PRO|
00002dd0  43 75 70 64 5f 65 63 66  0a 56 44 55 32 34 2c 31  |Cupd_ecf.VDU24,1|
00002de0  36 32 3b 32 33 32 3b 31  32 37 34 3b 39 37 32 3b  |62;232;1274;972;|
00002df0  0a 47 43 4f 4c 31 33 35  0a 43 4c 47 0a 53 59 53  |.GCOL135.CLG.SYS|
00002e00  20 26 32 45 2c 32 35 36  2b 31 36 2c 73 70 74 5f  | &2E,256+16,spt_|
00002e10  61 72 65 61 2c 22 48 44  53 22 2c 30 2c 31 36 32  |area,"HDS",0,162|
00002e20  2c 32 33 32 2c 31 32 37  34 2c 39 37 32 0a 56 44  |,232,1274,972.VD|
00002e30  55 20 32 36 0a 53 59 53  20 73 63 72 65 65 6e 5f  |U 26.SYS screen_|
00002e40  72 65 64 72 61 77 2c 2d  31 2c 30 2c 30 2c 31 32  |redraw,-1,0,0,12|
00002e50  37 39 2c 31 30 32 33 0a  45 4e 44 49 46 0a 45 4e  |79,1023.ENDIF.EN|
00002e60  44 50 52 4f 43 0a 44 45  46 20 46 4e 70 6f 6c 6c  |DPROC.DEF FNpoll|
00002e70  28 6d 61 73 6b 29 0a 21  77 69 6d 70 20 3d 20 6d  |(mask).!wimp = m|
00002e80  61 73 6b 0a 53 59 53 20  70 6f 6c 6c 5f 77 69 6d  |ask.SYS poll_wim|
00002e90  70 2c 30 2c 77 69 6d 70  20 54 4f 20 68 61 6e 64  |p,0,wimp TO hand|
00002ea0  6c 65 25 0a 3d 68 61 6e  64 6c 65 25 0a 0a 44 45  |le%.=handle%..DE|
00002eb0  46 20 50 52 4f 43 72 65  64 72 61 77 5f 77 69 6e  |F PROCredraw_win|
00002ec0  64 6f 77 28 68 61 6e 64  6c 65 25 29 0a 21 77 69  |dow(handle%).!wi|
00002ed0  6d 70 20 3d 20 68 61 6e  64 6c 65 25 0a 53 59 53  |mp = handle%.SYS|
00002ee0  20 72 65 64 72 61 77 5f  77 69 6e 64 6f 77 2c 30  | redraw_window,0|
00002ef0  2c 77 69 6d 70 20 54 4f  20 6d 6f 72 65 25 0a 49  |,wimp TO more%.I|
00002f00  46 20 68 61 6e 64 6c 65  25 3d 77 69 6e 64 6f 77  |F handle%=window|
00002f10  73 28 31 31 29 20 54 48  45 4e 0a 20 20 57 48 49  |s(11) THEN.  WHI|
00002f20  4c 45 20 6d 6f 72 65 25  0a 20 20 20 20 4d 4f 56  |LE more%.    MOV|
00002f30  45 77 69 6d 70 21 34 2b  31 36 2c 77 69 6d 70 21  |Ewimp!4+16,wimp!|
00002f40  31 36 2d 34 30 3a 20 50  52 49 4e 54 20 52 45 50  |16-40: PRINT REP|
00002f50  4f 52 54 24 0a 20 20 20  20 53 59 53 20 67 65 74  |ORT$.    SYS get|
00002f60  5f 72 65 63 74 61 6e 67  6c 65 2c 30 2c 77 69 6d  |_rectangle,0,wim|
00002f70  70 20 54 4f 20 6d 6f 72  65 25 0a 20 20 45 4e 44  |p TO more%.  END|
00002f80  57 48 49 4c 45 0a 45 4c  53 45 20 3a 20 52 45 4d  |WHILE.ELSE : REM|
00002f90  20 50 4d 46 20 42 4f 44  47 45 20 2d 20 6d 75 73  | PMF BODGE - mus|
00002fa0  74 20 63 6f 6d 70 6c 65  74 65 20 74 68 65 20 70  |t complete the p|
00002fb0  72 6f 74 6f 63 6f 6c 20  21 0a 20 20 57 48 49 4c  |rotocol !.  WHIL|
00002fc0  45 20 6d 6f 72 65 25 0a  20 20 20 20 53 59 53 20  |E more%.    SYS |
00002fd0  67 65 74 5f 72 65 63 74  61 6e 67 6c 65 2c 30 2c  |get_rectangle,0,|
00002fe0  77 69 6d 70 20 54 4f 20  6d 6f 72 65 25 0a 20 20  |wimp TO more%.  |
00002ff0  45 4e 44 57 48 49 4c 45  0a 45 4e 44 49 46 0a 45  |ENDWHILE.ENDIF.E|
00003000  4e 44 50 52 4f 43 0a 0a  44 45 46 20 50 52 4f 43  |NDPROC..DEF PROC|
00003010  63 6c 6f 73 65 5f 77 69  6e 64 6f 77 28 68 61 6e  |close_window(han|
00003020  64 6c 65 25 29 0a 4c 4f  43 41 4c 20 61 25 0a 49  |dle%).LOCAL a%.I|
00003030  46 20 68 61 6e 64 6c 65  25 3d 77 69 6e 64 6f 77  |F handle%=window|
00003040  73 28 31 31 29 20 4d 4f  55 53 45 20 52 45 43 54  |s(11) MOUSE RECT|
00003050  41 4e 47 4c 45 30 2c 30  2c 31 32 37 39 2c 31 30  |ANGLE0,0,1279,10|
00003060  32 33 0a 21 77 69 6d 70  20 3d 20 68 61 6e 64 6c  |23.!wimp = handl|
00003070  65 25 0a 53 59 53 20 63  6c 6f 73 65 5f 77 69 6e  |e%.SYS close_win|
00003080  64 6f 77 2c 30 2c 77 69  6d 70 0a 49 46 20 68 61  |dow,0,wimp.IF ha|
00003090  6e 64 6c 65 25 20 3d 20  77 69 6e 64 6f 77 73 28  |ndle% = windows(|
000030a0  31 29 20 54 48 45 4e 0a  46 4f 52 20 61 25 20 3d  |1) THEN.FOR a% =|
000030b0  20 31 20 54 4f 20 60 6d  61 78 5f 77 69 6e 64 6f  | 1 TO `max_windo|
000030c0  77 0a 21 77 69 6d 70 20  3d 20 77 69 6e 64 6f 77  |w.!wimp = window|
000030d0  73 28 61 25 29 0a 53 59  53 20 63 6c 6f 73 65 5f  |s(a%).SYS close_|
000030e0  77 69 6e 64 6f 77 2c 30  2c 77 69 6d 70 0a 4e 45  |window,0,wimp.NE|
000030f0  58 54 20 61 25 0a 4f 53  43 4c 49 28 22 44 65 73  |XT a%.OSCLI("Des|
00003100  6b 54 6f 70 22 29 0a 45  4e 44 0a 45 4e 44 49 46  |kTop").END.ENDIF|
00003110  0a 49 46 20 68 61 6e 64  6c 65 25 20 3d 20 77 69  |.IF handle% = wi|
00003120  6e 64 6f 77 73 28 38 29  20 54 48 45 4e 0a 50 52  |ndows(8) THEN.PR|
00003130  4f 43 65 63 66 28 60 70  74 72 6e 29 0a 50 52 4f  |OCecf(`ptrn).PRO|
00003140  43 75 70 64 5f 65 63 66  0a 45 4e 44 49 46 0a 45  |Cupd_ecf.ENDIF.E|
00003150  4e 44 50 52 4f 43 0a 44  45 46 20 50 52 4f 43 67  |NDPROC.DEF PROCg|
00003160  65 74 5f 77 69 6e 64 6f  77 5f 73 74 61 74 65 28  |et_window_state(|
00003170  68 61 6e 64 6c 65 25 29  0a 21 77 69 6d 70 3d 68  |handle%).!wimp=h|
00003180  61 6e 64 6c 65 25 0a 53  59 53 20 67 65 74 5f 77  |andle%.SYS get_w|
00003190  69 6e 64 6f 77 5f 73 74  61 74 65 2c 30 2c 77 69  |indow_state,0,wi|
000031a0  6d 70 0a 45 4e 44 50 52  4f 43 0a 44 45 46 20 50  |mp.ENDPROC.DEF P|
000031b0  52 4f 43 67 65 74 5f 70  6f 69 6e 74 65 72 5f 69  |ROCget_pointer_i|
000031c0  6e 66 6f 0a 21 77 69 6d  70 3d 60 78 25 0a 77 69  |nfo.!wimp=`x%.wi|
000031d0  6d 70 21 34 20 3d 20 60  79 25 0a 77 69 6d 70 21  |mp!4 = `y%.wimp!|
000031e0  38 20 3d 20 60 62 25 0a  77 69 6d 70 21 31 32 20  |8 = `b%.wimp!12 |
000031f0  3d 20 60 68 61 6e 64 6c  65 25 0a 77 69 6d 70 21  |= `handle%.wimp!|
00003200  31 36 20 3d 20 60 69 63  6f 6e 25 0a 45 4e 44 50  |16 = `icon%.ENDP|
00003210  52 4f 43 0a 44 45 46 20  50 52 4f 43 64 65 6c 65  |ROC.DEF PROCdele|
00003220  74 65 5f 69 63 6f 6e 28  68 61 6e 64 6c 65 25 2c  |te_icon(handle%,|
00003230  6e 25 29 0a 21 77 69 6d  70 20 3d 20 68 61 6e 64  |n%).!wimp = hand|
00003240  6c 65 25 0a 77 69 6d 70  21 34 20 3d 20 6e 25 0a  |le%.wimp!4 = n%.|
00003250  53 59 53 20 64 65 6c 65  74 65 5f 69 63 6f 6e 2c  |SYS delete_icon,|
00003260  30 2c 77 69 6d 70 0a 45  4e 44 50 52 4f 43 0a 44  |0,wimp.ENDPROC.D|
00003270  45 46 20 50 52 4f 43 73  65 74 5f 69 63 6f 6e 5f  |EF PROCset_icon_|
00003280  73 74 61 74 65 28 68 61  6e 64 6c 65 25 2c 69 68  |state(handle%,ih|
00003290  25 2c 66 25 2c 69 66 25  2c 69 62 25 2c 6d 25 29  |%,f%,if%,ib%,m%)|
000032a0  0a 21 77 69 6d 70 20 3d  20 68 61 6e 64 6c 65 25  |.!wimp = handle%|
000032b0  0a 77 69 6d 70 21 34 20  3d 20 69 68 25 0a 77 69  |.wimp!4 = ih%.wi|
000032c0  6d 70 21 38 20 3d 20 66  25 0a 77 69 6d 70 3f 31  |mp!8 = f%.wimp?1|
000032d0  31 20 3d 20 69 66 25 2b  28 69 62 25 20 41 4e 44  |1 = if%+(ib% AND|
000032e0  20 31 35 29 2a 31 36 0a  77 69 6d 70 21 31 32 20  | 15)*16.wimp!12 |
000032f0  3d 20 6d 25 0a 53 59 53  20 73 65 74 5f 69 63 6f  |= m%.SYS set_ico|
00003300  6e 5f 73 74 61 74 65 2c  30 2c 77 69 6d 70 0a 45  |n_state,0,wimp.E|
00003310  4e 44 50 52 4f 43 0a 44  45 46 20 50 52 4f 43 67  |NDPROC.DEF PROCg|
00003320  65 74 5f 69 63 6f 6e 5f  69 6e 66 6f 28 68 61 6e  |et_icon_info(han|
00003330  64 6c 65 25 2c 69 63 6f  6e 25 29 0a 21 77 69 6d  |dle%,icon%).!wim|
00003340  70 3d 68 61 6e 64 6c 65  25 0a 77 69 6d 70 21 34  |p=handle%.wimp!4|
00003350  3d 69 63 6f 6e 25 0a 53  59 53 20 67 65 74 5f 69  |=icon%.SYS get_i|
00003360  63 6f 6e 5f 69 6e 66 6f  2c 30 2c 77 69 6d 70 0a  |con_info,0,wimp.|
00003370  45 4e 44 50 52 4f 43 0a  44 45 46 20 50 52 4f 43  |ENDPROC.DEF PROC|
00003380  6d 6f 75 73 65 28 78 25  2c 79 25 2c 62 25 2c 68  |mouse(x%,y%,b%,h|
00003390  61 6e 64 6c 65 25 2c 69  63 6f 6e 25 2c 6f 62 25  |andle%,icon%,ob%|
000033a0  29 0a 60 62 25 20 3d 20  62 25 20 3a 20 60 78 25  |).`b% = b% : `x%|
000033b0  20 3d 20 78 25 20 3a 20  60 79 25 20 3d 20 79 25  | = x% : `y% = y%|
000033c0  20 3a 20 60 68 61 6e 64  6c 65 25 20 3d 20 68 61  | : `handle% = ha|
000033d0  6e 64 6c 65 25 20 3a 20  60 69 63 6f 6e 25 20 3d  |ndle% : `icon% =|
000033e0  20 69 63 6f 6e 25 0a 49  46 20 68 61 6e 64 6c 65  | icon%.IF handle|
000033f0  25 20 3d 20 2d 31 20 54  48 45 4e 20 45 4e 44 50  |% = -1 THEN ENDP|
00003400  52 4f 43 0a 50 52 4f 43  67 65 74 5f 77 69 6e 64  |ROC.PROCget_wind|
00003410  6f 77 5f 73 74 61 74 65  28 68 61 6e 64 6c 65 25  |ow_state(handle%|
00003420  29 0a 49 46 20 28 62 25  20 41 4e 44 20 31 29 20  |).IF (b% AND 1) |
00003430  54 48 45 4e 0a 43 41 53  45 20 68 61 6e 64 6c 65  |THEN.CASE handle|
00003440  25 20 4f 46 0a 4f 54 48  45 52 57 49 53 45 20 3a  |% OF.OTHERWISE :|
00003450  20 50 52 4f 43 64 72 61  67 5f 62 6f 78 28 68 61  | PROCdrag_box(ha|
00003460  6e 64 6c 65 25 2c 31 29  0a 45 4e 44 43 41 53 45  |ndle%,1).ENDCASE|
00003470  0a 45 4e 44 49 46 0a 3a  0a 49 46 20 28 62 25 20  |.ENDIF.:.IF (b% |
00003480  41 4e 44 20 32 29 20 54  48 45 4e 0a 43 41 53 45  |AND 2) THEN.CASE|
00003490  20 68 61 6e 64 6c 65 25  20 4f 46 0a 57 48 45 4e  | handle% OF.WHEN|
000034a0  20 77 69 6e 64 6f 77 73  28 30 29 20 3a 20 50 52  | windows(0) : PR|
000034b0  4f 43 63 6c 6f 73 65 5f  77 69 6e 64 6f 77 28 77  |OCclose_window(w|
000034c0  69 6e 64 6f 77 73 28 31  29 29 0a 57 48 45 4e 20  |indows(1)).WHEN |
000034d0  77 69 6e 64 6f 77 73 28  31 29 20 3a 20 50 52 4f  |windows(1) : PRO|
000034e0  43 6d 69 67 68 74 5f 63  6c 6f 73 65 28 69 63 6f  |Cmight_close(ico|
000034f0  6e 25 29 0a 45 4e 44 43  41 53 45 0a 45 4e 44 49  |n%).ENDCASE.ENDI|
00003500  46 0a 3a 0a 49 46 20 28  62 25 20 41 4e 44 20 34  |F.:.IF (b% AND 4|
00003510  29 20 54 48 45 4e 0a 49  46 20 68 61 6e 64 6c 65  |) THEN.IF handle|
00003520  25 3c 3e 77 69 6e 64 6f  77 73 28 30 29 20 54 48  |%<>windows(0) TH|
00003530  45 4e 20 50 52 4f 43 73  63 72 6e 5f 63 6f 70 79  |EN PROCscrn_copy|
00003540  0a 43 41 53 45 20 68 61  6e 64 6c 65 25 20 4f 46  |.CASE handle% OF|
00003550  0a 57 48 45 4e 20 77 69  6e 64 6f 77 73 28 30 29  |.WHEN windows(0)|
00003560  20 3a 20 50 52 4f 43 74  65 73 74 5f 6f 70 65 6e  | : PROCtest_open|
00003570  28 77 69 6e 64 6f 77 73  28 31 29 29 0a 57 48 45  |(windows(1)).WHE|
00003580  4e 20 77 69 6e 64 6f 77  73 28 31 29 20 3a 20 50  |N windows(1) : P|
00003590  52 4f 43 69 63 6f 6e 5f  6d 65 6e 75 73 0a 57 48  |ROCicon_menus.WH|
000035a0  45 4e 20 77 69 6e 64 6f  77 73 28 32 29 20 3a 20  |EN windows(2) : |
000035b0  50 52 4f 43 6d 6f 64 65  5f 66 6c 61 67 73 28 69  |PROCmode_flags(i|
000035c0  63 6f 6e 25 29 0a 57 48  45 4e 20 77 69 6e 64 6f  |con%).WHEN windo|
000035d0  77 73 28 34 29 20 3a 20  50 52 4f 43 6c 6f 61 64  |ws(4) : PROCload|
000035e0  28 69 63 6f 6e 25 29 0a  57 48 45 4e 20 77 69 6e  |(icon%).WHEN win|
000035f0  64 6f 77 73 28 36 29 20  3a 20 50 52 4f 43 73 65  |dows(6) : PROCse|
00003600  6c 65 63 74 5f 63 6f 6c  6f 75 72 28 69 63 6f 6e  |lect_colour(icon|
00003610  25 29 0a 57 48 45 4e 20  77 69 6e 64 6f 77 73 28  |%).WHEN windows(|
00003620  37 29 20 3a 20 50 52 4f  43 70 61 6c 65 74 74 65  |7) : PROCpalette|
00003630  0a 57 48 45 4e 20 77 69  6e 64 6f 77 73 28 38 29  |.WHEN windows(8)|
00003640  20 3a 20 50 52 4f 43 70  61 74 74 5f 65 64 69 74  | : PROCpatt_edit|
00003650  28 69 63 6f 6e 25 29 0a  57 48 45 4e 20 77 69 6e  |(icon%).WHEN win|
00003660  64 6f 77 73 28 39 29 20  3a 20 50 52 4f 43 73 65  |dows(9) : PROCse|
00003670  6c 65 63 74 5f 62 72 75  73 68 28 69 63 6f 6e 25  |lect_brush(icon%|
00003680  29 0a 45 4e 44 43 41 53  45 0a 45 4e 44 49 46 0a  |).ENDCASE.ENDIF.|
00003690  45 4e 44 50 52 4f 43 0a  44 45 46 20 50 52 4f 43  |ENDPROC.DEF PROC|
000036a0  74 65 73 74 5f 6f 70 65  6e 28 68 61 6e 64 6c 65  |test_open(handle|
000036b0  25 29 0a 4c 4f 43 41 4c  20 62 25 2c 68 70 2c 63  |%).LOCAL b%,hp,c|
000036c0  25 0a 49 46 20 68 61 6e  64 6c 65 25 20 3d 20 77  |%.IF handle% = w|
000036d0  69 6e 64 6f 77 73 28 33  29 20 41 4e 44 20 60 66  |indows(3) AND `f|
000036e0  75 6e 63 25 20 3e 3d 20  32 20 54 48 45 4e 0a 46  |unc% >= 2 THEN.F|
000036f0  4f 52 20 62 25 20 3d 20  32 37 20 54 4f 20 30 20  |OR b% = 27 TO 0 |
00003700  53 54 45 50 20 2d 31 0a  50 52 4f 43 64 65 6c 65  |STEP -1.PROCdele|
00003710  74 65 5f 69 63 6f 6e 28  77 69 6e 64 6f 77 73 28  |te_icon(windows(|
00003720  33 29 2c 62 25 29 0a 4e  45 58 54 20 62 25 0a 68  |3),b%).NEXT b%.h|
00003730  70 20 3d 20 68 65 6c 70  28 60 63 75 72 5f 6d 65  |p = help(`cur_me|
00003740  6e 75 2c 60 66 75 6e 63  25 29 0a 46 4f 52 20 62  |nu,`func%).FOR b|
00003750  25 20 3d 20 30 20 54 4f  20 32 37 0a 53 59 53 20  |% = 0 TO 27.SYS |
00003760  63 72 65 61 74 65 5f 69  63 6f 6e 2c 30 2c 68 70  |create_icon,0,hp|
00003770  20 54 4f 20 63 25 0a 68  70 20 3d 20 68 70 20 2b  | TO c%.hp = hp +|
00003780  20 33 36 0a 4e 45 58 54  20 62 25 0a 45 4e 44 49  | 36.NEXT b%.ENDI|
00003790  46 0a 50 52 4f 43 67 65  74 5f 77 69 6e 64 6f 77  |F.PROCget_window|
000037a0  5f 73 74 61 74 65 28 68  61 6e 64 6c 65 25 29 0a  |_state(handle%).|
000037b0  49 46 20 77 69 6d 70 21  33 32 20 41 4e 44 20 26  |IF wimp!32 AND &|
000037c0  30 30 30 33 30 30 30 20  3c 3e 20 30 20 54 48 45  |0003000 <> 0 THE|
000037d0  4e 0a 50 52 4f 43 6f 70  65 6e 5f 77 69 6e 64 6f  |N.PROCopen_windo|
000037e0  77 28 21 77 69 6d 70 2c  77 69 6d 70 21 34 2c 77  |w(!wimp,wimp!4,w|
000037f0  69 6d 70 21 38 2c 77 69  6d 70 21 31 32 2c 77 69  |imp!8,wimp!12,wi|
00003800  6d 70 21 31 36 2c 77 69  6d 70 21 32 30 2c 77 69  |mp!16,wimp!20,wi|
00003810  6d 70 21 32 34 2c 77 69  6d 70 21 32 38 29 0a 45  |mp!24,wimp!28).E|
00003820  4e 44 49 46 0a 45 4e 44  50 52 4f 43 0a 44 45 46  |NDIF.ENDPROC.DEF|
00003830  20 50 52 4f 43 6d 69 67  68 74 5f 63 6c 6f 73 65  | PROCmight_close|
00003840  28 69 63 6f 6e 25 29 0a  49 46 20 69 63 6f 6e 25  |(icon%).IF icon%|
00003850  20 3d 20 31 20 54 48 45  4e 0a 50 52 4f 43 63 6c  | = 1 THEN.PROCcl|
00003860  6f 73 65 5f 77 69 6e 64  6f 77 28 77 69 6e 64 6f  |ose_window(windo|
00003870  77 73 28 32 29 29 0a 45  4e 44 49 46 0a 43 41 53  |ws(2)).ENDIF.CAS|
00003880  45 20 60 63 75 72 5f 6d  65 6e 75 20 4f 46 0a 57  |E `cur_menu OF.W|
00003890  48 45 4e 20 30 20 3a 20  49 46 20 69 63 6f 6e 25  |HEN 0 : IF icon%|
000038a0  20 3d 20 60 73 75 62 5f  6d 65 6e 28 30 29 2d 31  | = `sub_men(0)-1|
000038b0  20 50 52 4f 43 63 6c 6f  73 65 5f 77 69 6e 64 6f  | PROCclose_windo|
000038c0  77 28 77 69 6e 64 6f 77  73 28 33 29 29 3a 45 4c  |w(windows(3)):EL|
000038d0  53 45 20 49 46 20 69 63  6f 6e 25 20 3d 20 60 73  |SE IF icon% = `s|
000038e0  75 62 5f 6d 65 6e 28 30  29 20 50 52 4f 43 63 6c  |ub_men(0) PROCcl|
000038f0  6f 73 65 5f 77 69 6e 64  6f 77 28 77 69 6e 64 6f  |ose_window(windo|
00003900  77 73 28 34 29 29 0a 57  48 45 4e 20 31 20 3a 20  |ws(4)).WHEN 1 : |
00003910  49 46 20 69 63 6f 6e 25  20 3d 20 60 73 75 62 5f  |IF icon% = `sub_|
00003920  6d 65 6e 28 31 29 20 50  52 4f 43 63 6c 6f 73 65  |men(1) PROCclose|
00003930  5f 77 69 6e 64 6f 77 28  77 69 6e 64 6f 77 73 28  |_window(windows(|
00003940  33 29 29 0a 57 48 45 4e  20 32 20 3a 20 49 46 20  |3)).WHEN 2 : IF |
00003950  69 63 6f 6e 25 20 3d 20  60 73 75 62 5f 6d 65 6e  |icon% = `sub_men|
00003960  28 32 29 20 50 52 4f 43  63 6c 6f 73 65 5f 77 69  |(2) PROCclose_wi|
00003970  6e 64 6f 77 28 77 69 6e  64 6f 77 73 28 33 29 29  |ndow(windows(3))|
00003980  0a 57 48 45 4e 20 33 20  3a 20 49 46 20 69 63 6f  |.WHEN 3 : IF ico|
00003990  6e 25 20 3d 20 60 73 75  62 5f 6d 65 6e 28 33 29  |n% = `sub_men(3)|
000039a0  20 50 52 4f 43 63 6c 6f  73 65 5f 77 69 6e 64 6f  | PROCclose_windo|
000039b0  77 28 77 69 6e 64 6f 77  73 28 33 29 29 0a 57 48  |w(windows(3)).WH|
000039c0  45 4e 20 34 20 3a 20 49  46 20 69 63 6f 6e 25 20  |EN 4 : IF icon% |
000039d0  3d 20 60 73 75 62 5f 6d  65 6e 28 34 29 20 50 52  |= `sub_men(4) PR|
000039e0  4f 43 63 6c 6f 73 65 5f  77 69 6e 64 6f 77 28 77  |OCclose_window(w|
000039f0  69 6e 64 6f 77 73 28 33  29 29 0a 57 48 45 4e 20  |indows(3)).WHEN |
00003a00  35 20 3a 20 49 46 20 69  63 6f 6e 25 20 3d 20 60  |5 : IF icon% = `|
00003a10  73 75 62 5f 6d 65 6e 28  35 29 20 50 52 4f 43 63  |sub_men(5) PROCc|
00003a20  6c 6f 73 65 5f 77 69 6e  64 6f 77 28 77 69 6e 64  |lose_window(wind|
00003a30  6f 77 73 28 33 29 29 0a  45 4e 44 43 41 53 45 0a  |ows(3)).ENDCASE.|
00003a40  45 4e 44 50 52 4f 43 0a  44 45 46 20 50 52 4f 43  |ENDPROC.DEF PROC|
00003a50  64 72 61 67 5f 62 6f 78  28 68 61 6e 64 6c 65 25  |drag_box(handle%|
00003a60  2c 74 79 70 65 25 29 0a  21 77 69 6d 70 20 3d 20  |,type%).!wimp = |
00003a70  68 61 6e 64 6c 65 25 0a  77 69 6d 70 21 34 3d 20  |handle%.wimp!4= |
00003a80  74 79 70 65 25 0a 53 59  53 20 64 72 61 67 5f 62  |type%.SYS drag_b|
00003a90  6f 78 2c 30 2c 77 69 6d  70 0a 45 4e 44 50 52 4f  |ox,0,wimp.ENDPRO|
00003aa0  43 0a 44 45 46 20 50 52  4f 43 6b 65 79 5f 62 6f  |C.DEF PROCkey_bo|
00003ab0  75 6e 63 65 0a 4c 4f 43  41 4c 20 78 25 2c 79 25  |unce.LOCAL x%,y%|
00003ac0  2c 62 25 0a 52 45 50 45  41 54 0a 4d 4f 55 53 45  |,b%.REPEAT.MOUSE|
00003ad0  20 78 25 2c 79 25 2c 62  25 0a 55 4e 54 49 4c 20  | x%,y%,b%.UNTIL |
00003ae0  62 25 3c 3e 60 62 25 0a  45 4e 44 50 52 4f 43 0a  |b%<>`b%.ENDPROC.|
00003af0  44 45 46 20 50 52 4f 43  73 65 74 5f 63 61 72 6f  |DEF PROCset_caro|
00003b00  74 5f 70 6f 73 69 74 69  6f 6e 28 68 61 6e 64 6c  |t_position(handl|
00003b10  65 25 2c 69 63 6f 6e 25  2c 78 25 2c 79 25 2c 68  |e%,icon%,x%,y%,h|
00003b20  25 2c 69 25 29 0a 53 59  53 20 73 65 74 5f 63 61  |%,i%).SYS set_ca|
00003b30  72 6f 74 5f 70 6f 73 69  74 69 6f 6e 2c 68 61 6e  |rot_position,han|
00003b40  64 6c 65 25 2c 69 63 6f  6e 25 2c 78 25 2c 79 25  |dle%,icon%,x%,y%|
00003b50  2c 68 25 2c 69 25 0a 45  4e 44 50 52 4f 43 0a 44  |,h%,i%.ENDPROC.D|
00003b60  45 46 20 50 52 4f 43 64  65 66 5f 68 65 61 70 28  |EF PROCdef_heap(|
00003b70  68 61 6e 64 6c 65 25 29  0a 4c 4f 43 41 4c 20 6e  |handle%).LOCAL n|
00003b80  25 2c 67 25 2c 78 30 2c  79 30 2c 78 31 2c 79 31  |%,g%,x0,y0,x1,y1|
00003b90  2c 66 25 2c 66 6f 72 25  2c 62 63 6b 25 2c 74 69  |,f%,for%,bck%,ti|
00003ba0  74 24 2c 61 0a 61 20 3d  20 30 20 3a 20 68 70 20  |t$,a.a = 0 : hp |
00003bb0  3d 20 68 65 61 70 0a 52  45 50 45 41 54 0a 52 45  |= heap.REPEAT.RE|
00003bc0  41 44 20 6e 25 20 3a 20  60 73 75 62 5f 6d 65 6e  |AD n% : `sub_men|
00003bd0  28 61 29 20 3d 20 6e 25  2b 31 0a 49 46 20 6e 25  |(a) = n%+1.IF n%|
00003be0  20 3c 3e 20 30 20 54 48  45 4e 0a 68 65 61 70 28  | <> 0 THEN.heap(|
00003bf0  61 29 20 3d 20 68 70 0a  46 4f 52 20 67 25 20 3d  |a) = hp.FOR g% =|
00003c00  20 31 20 54 4f 20 6e 25  0a 52 45 41 44 20 78 30  | 1 TO n%.READ x0|
00003c10  2c 79 30 2c 78 31 2c 79  31 2c 66 25 2c 66 6f 72  |,y0,x1,y1,f%,for|
00003c20  25 2c 62 63 6b 25 2c 74  69 74 24 0a 21 68 70 20  |%,bck%,tit$.!hp |
00003c30  3d 20 68 61 6e 64 6c 65  25 0a 68 70 21 34 3d 20  |= handle%.hp!4= |
00003c40  78 30 20 3a 20 68 70 21  38 3d 20 79 30 0a 68 70  |x0 : hp!8= y0.hp|
00003c50  21 31 32 20 3d 20 78 31  20 3a 20 68 70 21 31 36  |!12 = x1 : hp!16|
00003c60  20 3d 20 79 31 0a 68 70  21 32 30 20 3d 20 66 25  | = y1.hp!20 = f%|
00003c70  0a 68 70 3f 32 32 20 3d  20 66 6f 72 25 20 3a 20  |.hp?22 = for% : |
00003c80  68 70 3f 32 33 20 3d 20  62 63 6b 25 0a 24 28 68  |hp?23 = bck%.$(h|
00003c90  70 2b 32 34 29 20 3d 20  74 69 74 24 0a 68 70 20  |p+24) = tit$.hp |
00003ca0  3d 20 68 70 20 2b 20 33  36 0a 4e 45 58 54 20 67  |= hp + 36.NEXT g|
00003cb0  25 0a 45 4e 44 49 46 0a  61 20 3d 20 61 20 2b 20  |%.ENDIF.a = a + |
00003cc0  31 0a 55 4e 54 49 4c 20  6e 25 3d 30 0a 3a 0a 60  |1.UNTIL n%=0.:.`|
00003cd0  66 75 6e 63 20 3d 20 68  65 61 70 28 30 29 0a 60  |func = heap(0).`|
00003ce0  64 72 61 77 20 3d 20 68  65 61 70 28 31 29 0a 60  |draw = heap(1).`|
00003cf0  73 68 61 70 65 3d 20 68  65 61 70 28 32 29 0a 60  |shape= heap(2).`|
00003d00  63 75 72 76 65 3d 20 68  65 61 70 28 33 29 0a 60  |curve= heap(3).`|
00003d10  74 65 78 74 20 3d 20 68  65 61 70 28 34 29 0a 60  |text = heap(4).`|
00003d20  61 72 65 61 20 3d 20 68  65 61 70 28 35 29 0a 3a  |area = heap(5).:|
00003d30  0a 45 4e 44 50 52 4f 43  0a 44 41 54 41 20 39 0a  |.ENDPROC.DATA 9.|
00003d40  44 41 54 41 20 30 2c 2d  38 38 38 2c 31 36 30 2c  |DATA 0,-888,160,|
00003d50  2d 37 34 38 2c 26 33 30  33 44 2c 60 69 66 2c 26  |-748,&303D,`if,&|
00003d60  38 38 2c 66 75 6e 63 0a  44 41 54 41 20 31 36 30  |88,func.DATA 160|
00003d70  2c 2d 38 38 38 2c 33 30  30 2c 2d 37 34 38 2c 26  |,-888,300,-748,&|
00003d80  33 30 33 44 2c 60 69 66  2c 60 69 62 2c 64 72 61  |303D,`if,`ib,dra|
00003d90  77 0a 44 41 54 41 20 33  30 30 2c 2d 38 38 38 2c  |w.DATA 300,-888,|
00003da0  34 34 30 2c 2d 37 34 38  2c 26 33 30 33 44 2c 60  |440,-748,&303D,`|
00003db0  69 66 2c 60 69 62 2c 73  68 61 70 65 73 0a 44 41  |if,`ib,shapes.DA|
00003dc0  54 41 20 34 34 30 2c 2d  38 38 38 2c 35 38 30 2c  |TA 440,-888,580,|
00003dd0  2d 37 34 38 2c 26 33 30  33 44 2c 60 69 66 2c 60  |-748,&303D,`if,`|
00003de0  69 62 2c 63 75 72 76 65  0a 44 41 54 41 20 35 38  |ib,curve.DATA 58|
00003df0  30 2c 2d 38 38 38 2c 37  32 30 2c 2d 37 34 38 2c  |0,-888,720,-748,|
00003e00  26 33 30 33 44 2c 60 69  66 2c 60 69 62 2c 74 65  |&303D,`if,`ib,te|
00003e10  78 74 0a 44 41 54 41 20  37 32 30 2c 2d 38 38 38  |xt.DATA 720,-888|
00003e20  2c 38 36 30 2c 2d 37 34  38 2c 26 33 30 33 44 2c  |,860,-748,&303D,|
00003e30  60 69 66 2c 60 69 62 2c  61 72 65 61 0a 44 41 54  |`if,`ib,area.DAT|
00003e40  41 20 38 36 30 2c 2d 38  38 38 2c 31 30 30 30 2c  |A 860,-888,1000,|
00003e50  2d 37 34 38 2c 26 33 30  33 44 2c 60 69 66 2c 60  |-748,&303D,`if,`|
00003e60  69 62 2c 22 22 0a 44 41  54 41 20 31 30 30 30 2c  |ib,"".DATA 1000,|
00003e70  2d 38 38 38 2c 31 31 34  30 2c 2d 37 34 38 2c 26  |-888,1140,-748,&|
00003e80  33 30 33 44 2c 60 69 66  2c 60 69 62 2c 6c 6f 61  |303D,`if,`ib,loa|
00003e90  64 0a 44 41 54 41 20 31  31 34 30 2c 2d 38 38 38  |d.DATA 1140,-888|
00003ea0  2c 31 32 38 30 2c 2d 37  34 38 2c 26 33 30 33 44  |,1280,-748,&303D|
00003eb0  2c 60 69 66 2c 60 69 62  2c 73 61 76 65 0a 44 41  |,`if,`ib,save.DA|
00003ec0  54 41 20 37 0a 44 41 54  41 20 30 2c 2d 38 38 38  |TA 7.DATA 0,-888|
00003ed0  2c 31 36 30 2c 2d 37 34  38 2c 26 33 30 33 44 2c  |,160,-748,&303D,|
00003ee0  60 69 66 2c 26 38 38 2c  64 72 61 77 0a 44 41 54  |`if,&88,draw.DAT|
00003ef0  41 20 31 36 30 2c 2d 38  38 38 2c 33 32 30 2c 2d  |A 160,-888,320,-|
00003f00  37 34 38 2c 26 33 30 33  44 2c 60 69 66 2c 60 69  |748,&303D,`if,`i|
00003f10  62 2c 6c 69 6e 65 0a 44  41 54 41 20 33 32 30 2c  |b,line.DATA 320,|
00003f20  2d 38 38 38 2c 34 38 30  2c 2d 37 34 38 2c 26 33  |-888,480,-748,&3|
00003f30  30 33 44 2c 60 69 66 2c  60 69 62 2c 6a 6f 69 6e  |03D,`if,`ib,join|
00003f40  65 64 0a 44 41 54 41 20  34 38 30 2c 2d 38 38 38  |ed.DATA 480,-888|
00003f50  2c 36 34 30 2c 2d 37 34  38 2c 26 33 30 33 44 2c  |,640,-748,&303D,|
00003f60  60 69 66 2c 60 69 62 2c  72 61 64 69 69 0a 44 41  |`if,`ib,radii.DA|
00003f70  54 41 20 36 34 30 2c 2d  38 38 38 2c 38 30 30 2c  |TA 640,-888,800,|
00003f80  2d 37 34 38 2c 26 33 30  33 44 2c 60 69 66 2c 60  |-748,&303D,`if,`|
00003f90  69 62 2c 62 72 75 73 68  0a 44 41 54 41 20 38 30  |ib,brush.DATA 80|
00003fa0  30 2c 2d 38 38 38 2c 31  30 30 30 2c 2d 37 34 38  |0,-888,1000,-748|
00003fb0  2c 26 33 30 33 44 2c 60  69 66 2c 60 69 62 2c 73  |,&303D,`if,`ib,s|
00003fc0  65 6c 65 63 74 0a 44 41  54 41 20 31 30 30 30 2c  |elect.DATA 1000,|
00003fd0  2d 38 38 38 2c 31 32 38  30 2c 2d 37 34 38 2c 26  |-888,1280,-748,&|
00003fe0  33 30 33 44 2c 60 69 66  2c 60 69 62 2c 22 22 0a  |303D,`if,`ib,"".|
00003ff0  44 41 54 41 20 36 0a 44  41 54 41 20 30 2c 2d 38  |DATA 6.DATA 0,-8|
00004000  38 38 2c 31 36 30 2c 2d  37 34 38 2c 26 33 30 33  |88,160,-748,&303|
00004010  44 2c 60 69 66 2c 26 38  38 2c 73 68 61 70 65 73  |D,`if,&88,shapes|
00004020  0a 44 41 54 41 20 31 36  30 2c 2d 38 38 38 2c 33  |.DATA 160,-888,3|
00004030  32 30 2c 2d 37 34 38 2c  26 33 30 33 44 2c 60 69  |20,-748,&303D,`i|
00004040  66 2c 60 69 62 2c 72 65  63 74 61 6e 67 6c 65 0a  |f,`ib,rectangle.|
00004050  44 41 54 41 20 33 32 30  2c 2d 38 38 38 2c 34 38  |DATA 320,-888,48|
00004060  30 2c 2d 37 34 38 2c 26  33 30 33 44 2c 60 69 66  |0,-748,&303D,`if|
00004070  2c 60 69 62 2c 73 71 75  61 72 65 0a 44 41 54 41  |,`ib,square.DATA|
00004080  20 34 38 30 2c 2d 38 38  38 2c 36 34 30 2c 2d 37  | 480,-888,640,-7|
00004090  34 38 2c 26 33 30 33 44  2c 60 69 66 2c 60 69 62  |48,&303D,`if,`ib|
000040a0  2c 70 61 72 61 6c 6c 65  6c 6f 0a 44 41 54 41 20  |,parallelo.DATA |
000040b0  36 34 30 2c 2d 38 38 38  2c 38 30 30 2c 2d 37 34  |640,-888,800,-74|
000040c0  38 2c 26 33 30 33 44 2c  60 69 66 2c 60 69 62 2c  |8,&303D,`if,`ib,|
000040d0  74 72 69 61 6e 67 6c 65  0a 44 41 54 41 20 38 30  |triangle.DATA 80|
000040e0  30 2c 2d 38 38 38 2c 31  32 38 30 2c 2d 37 34 38  |0,-888,1280,-748|
000040f0  2c 26 33 30 33 44 2c 60  69 66 2c 60 69 62 2c 22  |,&303D,`if,`ib,"|
00004100  22 0a 44 41 54 41 20 37  0a 44 41 54 41 20 30 2c  |".DATA 7.DATA 0,|
00004110  2d 38 38 38 2c 31 36 30  2c 2d 37 34 38 2c 26 33  |-888,160,-748,&3|
00004120  30 33 44 2c 60 69 66 2c  26 38 38 2c 63 75 72 76  |03D,`if,&88,curv|
00004130  65 0a 44 41 54 41 20 31  36 30 2c 2d 38 38 38 2c  |e.DATA 160,-888,|
00004140  33 32 30 2c 2d 37 34 38  2c 26 33 30 33 44 2c 60  |320,-748,&303D,`|
00004150  69 66 2c 60 69 62 2c 63  69 72 63 6c 65 0a 44 41  |if,`ib,circle.DA|
00004160  54 41 20 33 32 30 2c 2d  38 38 38 2c 34 38 30 2c  |TA 320,-888,480,|
00004170  2d 37 34 38 2c 26 33 30  33 44 2c 60 69 66 2c 60  |-748,&303D,`if,`|
00004180  69 62 2c 65 6c 6c 69 70  73 65 0a 44 41 54 41 20  |ib,ellipse.DATA |
00004190  34 38 30 2c 2d 38 38 38  2c 36 34 30 2c 2d 37 34  |480,-888,640,-74|
000041a0  38 2c 26 33 30 33 44 2c  60 69 66 2c 60 69 62 2c  |8,&303D,`if,`ib,|
000041b0  73 65 67 6d 65 6e 74 0a  44 41 54 41 20 36 34 30  |segment.DATA 640|
000041c0  2c 2d 38 38 38 2c 38 30  30 2c 2d 37 34 38 2c 26  |,-888,800,-748,&|
000041d0  33 30 33 44 2c 60 69 66  2c 60 69 62 2c 61 72 63  |303D,`if,`ib,arc|
000041e0  0a 44 41 54 41 20 38 30  30 2c 2d 38 38 38 2c 31  |.DATA 800,-888,1|
000041f0  30 30 30 2c 2d 37 34 38  2c 26 33 30 33 44 2c 60  |000,-748,&303D,`|
00004200  69 66 2c 60 69 62 2c 73  65 63 74 6f 72 0a 44 41  |if,`ib,sector.DA|
00004210  54 41 20 31 30 30 30 2c  2d 38 38 38 2c 31 32 38  |TA 1000,-888,128|
00004220  30 2c 2d 37 34 38 2c 26  33 30 33 44 2c 60 69 66  |0,-748,&303D,`if|
00004230  2c 60 69 62 2c 22 22 0a  44 41 54 41 20 33 0a 44  |,`ib,"".DATA 3.D|
00004240  41 54 41 20 30 2c 2d 38  38 38 2c 31 36 30 2c 2d  |ATA 0,-888,160,-|
00004250  37 34 38 2c 26 33 30 33  44 2c 60 69 66 2c 26 38  |748,&303D,`if,&8|
00004260  38 2c 74 65 78 74 0a 44  41 54 41 20 31 36 30 2c  |8,text.DATA 160,|
00004270  2d 38 38 38 2c 33 32 30  2c 2d 37 34 38 2c 26 33  |-888,320,-748,&3|
00004280  30 33 44 2c 60 69 66 2c  60 69 62 2c 74 65 78 74  |03D,`if,`ib,text|
00004290  40 63 75 72 0a 44 41 54  41 20 33 32 30 2c 2d 38  |@cur.DATA 320,-8|
000042a0  38 38 2c 31 32 38 30 2c  2d 37 34 38 2c 26 33 30  |88,1280,-748,&30|
000042b0  33 44 2c 60 69 66 2c 60  69 62 2c 22 22 0a 44 41  |3D,`if,`ib,"".DA|
000042c0  54 41 20 37 0a 44 41 54  41 20 30 2c 2d 38 38 38  |TA 7.DATA 0,-888|
000042d0  2c 31 36 30 2c 2d 37 34  38 2c 26 33 30 33 44 2c  |,160,-748,&303D,|
000042e0  60 69 66 2c 26 38 38 2c  61 72 65 61 0a 44 41 54  |`if,&88,area.DAT|
000042f0  41 20 31 36 30 2c 2d 38  38 38 2c 33 32 30 2c 2d  |A 160,-888,320,-|
00004300  37 34 38 2c 26 33 30 33  44 2c 60 69 66 2c 60 69  |748,&303D,`if,`i|
00004310  62 2c 63 6f 70 79 0a 44  41 54 41 20 33 32 30 2c  |b,copy.DATA 320,|
00004320  2d 38 38 38 2c 34 38 30  2c 2d 37 34 38 2c 26 33  |-888,480,-748,&3|
00004330  30 33 44 2c 60 69 66 2c  60 69 62 2c 6d 6f 76 65  |03D,`if,`ib,move|
00004340  0a 44 41 54 41 20 34 38  30 2c 2d 38 38 38 2c 36  |.DATA 480,-888,6|
00004350  34 30 2c 2d 37 34 38 2c  26 33 30 33 44 2c 60 69  |40,-748,&303D,`i|
00004360  66 2c 60 69 62 2c 63 6c  65 61 72 0a 44 41 54 41  |f,`ib,clear.DATA|
00004370  20 36 34 30 2c 2d 38 38  38 2c 38 30 30 2c 2d 37  | 640,-888,800,-7|
00004380  34 38 2c 26 33 30 33 44  2c 60 69 66 2c 60 69 62  |48,&303D,`if,`ib|
00004390  2c 70 61 74 74 65 72 6e  0a 44 41 54 41 20 38 30  |,pattern.DATA 80|
000043a0  30 2c 2d 38 38 38 2c 31  30 30 30 2c 2d 37 34 38  |0,-888,1000,-748|
000043b0  2c 26 33 30 33 44 2c 60  69 66 2c 60 69 62 2c 66  |,&303D,`if,`ib,f|
000043c0  69 6c 6c 0a 44 41 54 41  20 31 30 30 30 2c 2d 38  |ill.DATA 1000,-8|
000043d0  38 38 2c 31 32 38 30 2c  2d 37 34 38 2c 26 33 30  |88,1280,-748,&30|
000043e0  33 44 2c 60 69 66 2c 60  69 62 2c 22 22 0a 44 41  |3D,`if,`ib,"".DA|
000043f0  54 41 20 30 0a 44 45 46  20 50 52 4f 43 69 63 6f  |TA 0.DEF PROCico|
00004400  6e 5f 6d 65 6e 75 73 0a  50 52 4f 43 67 65 74 5f  |n_menus.PROCget_|
00004410  70 6f 69 6e 74 65 72 5f  69 6e 66 6f 0a 49 46 20  |pointer_info.IF |
00004420  77 69 6d 70 21 31 32 20  3d 20 2d 31 20 4f 52 20  |wimp!12 = -1 OR |
00004430  77 69 6d 70 21 31 32 20  3c 3e 20 77 69 6e 64 6f  |wimp!12 <> windo|
00004440  77 73 28 31 29 20 54 48  45 4e 0a 45 4e 44 50 52  |ws(1) THEN.ENDPR|
00004450  4f 43 0a 45 4e 44 49 46  0a 49 46 20 77 69 6d 70  |OC.ENDIF.IF wimp|
00004460  21 31 36 20 3c 20 32 20  54 48 45 4e 0a 49 46 20  |!16 < 2 THEN.IF |
00004470  77 69 6d 70 21 31 36 20  3d 20 31 20 50 52 4f 43  |wimp!16 = 1 PROC|
00004480  74 65 73 74 5f 6f 70 65  6e 28 77 69 6e 64 6f 77  |test_open(window|
00004490  73 28 32 29 29 0a 49 46  20 77 69 6d 70 21 31 36  |s(2)).IF wimp!16|
000044a0  20 3d 20 30 20 50 52 4f  43 74 65 73 74 5f 6f 70  | = 0 PROCtest_op|
000044b0  65 6e 28 77 69 6e 64 6f  77 73 28 37 29 29 3a 50  |en(windows(7)):P|
000044c0  52 4f 43 70 61 6c 65 74  74 65 0a 45 4e 44 50 52  |ROCpalette.ENDPR|
000044d0  4f 43 0a 45 4e 44 49 46  0a 49 46 20 60 63 75 72  |OC.ENDIF.IF `cur|
000044e0  5f 6d 65 6e 75 20 3d 20  30 20 54 48 45 4e 0a 43  |_menu = 0 THEN.C|
000044f0  41 53 45 20 77 69 6d 70  21 31 36 20 4f 46 0a 57  |ASE wimp!16 OF.W|
00004500  48 45 4e 20 33 20 3a 20  50 52 4f 43 64 72 61 77  |HEN 3 : PROCdraw|
00004510  5f 6d 65 6e 75 3a 20 60  66 75 6e 63 25 20 3d 20  |_menu: `func% = |
00004520  33 3a 50 52 4f 43 75 70  64 61 74 65 5f 68 65 6c  |3:PROCupdate_hel|
00004530  70 0a 57 48 45 4e 20 34  20 3a 20 50 52 4f 43 73  |p.WHEN 4 : PROCs|
00004540  68 61 70 65 5f 6d 65 6e  75 20 3a 20 60 66 75 6e  |hape_menu : `fun|
00004550  63 25 20 3d 20 33 3a 50  52 4f 43 75 70 64 61 74  |c% = 3:PROCupdat|
00004560  65 5f 68 65 6c 70 0a 57  48 45 4e 20 35 20 3a 20  |e_help.WHEN 5 : |
00004570  50 52 4f 43 63 75 72 76  65 5f 6d 65 6e 75 20 3a  |PROCcurve_menu :|
00004580  20 60 66 75 6e 63 25 20  3d 20 33 3a 50 52 4f 43  | `func% = 3:PROC|
00004590  75 70 64 61 74 65 5f 68  65 6c 70 0a 57 48 45 4e  |update_help.WHEN|
000045a0  20 36 20 3a 20 50 52 4f  43 74 65 78 74 5f 6d 65  | 6 : PROCtext_me|
000045b0  6e 75 3a 20 60 66 75 6e  63 25 20 3d 20 33 3a 50  |nu: `func% = 3:P|
000045c0  52 4f 43 75 70 64 61 74  65 5f 68 65 6c 70 0a 57  |ROCupdate_help.W|
000045d0  48 45 4e 20 37 20 3a 20  50 52 4f 43 61 72 65 61  |HEN 7 : PROCarea|
000045e0  5f 6d 65 6e 75 3a 20 60  66 75 6e 63 25 20 3d 20  |_menu: `func% = |
000045f0  33 3a 50 52 4f 43 75 70  64 61 74 65 5f 68 65 6c  |3:PROCupdate_hel|
00004600  70 0a 57 48 45 4e 20 38  20 3a 20 52 45 4d 20 50  |p.WHEN 8 : REM P|
00004610  52 4f 43 74 65 73 74 5f  6f 70 65 6e 28 77 69 6e  |ROCtest_open(win|
00004620  64 6f 77 73 28 33 29 29  20 52 43 4d 0a 57 48 45  |dows(3)) RCM.WHE|
00004630  4e 20 39 20 3a 20 50 52  4f 43 67 65 74 5f 64 69  |N 9 : PROCget_di|
00004640  72 0a 57 48 45 4e 20 31  30 3a 20 49 46 20 46 4e  |r.WHEN 10: IF FN|
00004650  6f 6e 5f 74 6f 70 20 54  48 45 4e 0a 50 52 4f 43  |on_top THEN.PROC|
00004660  74 65 73 74 5f 6f 70 65  6e 28 77 69 6e 64 6f 77  |test_open(window|
00004670  73 28 31 30 29 29 0a 50  52 4f 43 73 65 74 5f 63  |s(10)).PROCset_c|
00004680  61 72 6f 74 5f 70 6f 73  69 74 69 6f 6e 28 77 69  |arot_position(wi|
00004690  6e 64 6f 77 73 28 31 30  29 2c 30 2c 30 2c 30 2c  |ndows(10),0,0,0,|
000046a0  2d 31 2c 30 29 0a 45 4e  44 49 46 0a 45 4e 44 43  |-1,0).ENDIF.ENDC|
000046b0  41 53 45 0a 50 52 4f 43  73 68 6f 77 5f 69 63 6f  |ASE.PROCshow_ico|
000046c0  6e 73 28 60 66 75 6e 63  25 29 3a 45 4e 44 50 52  |ns(`func%):ENDPR|
000046d0  4f 43 0a 45 4e 44 49 46  0a 49 46 20 60 63 75 72  |OC.ENDIF.IF `cur|
000046e0  5f 6d 65 6e 75 20 3d 20  31 20 54 48 45 4e 0a 43  |_menu = 1 THEN.C|
000046f0  41 53 45 20 77 69 6d 70  21 31 36 20 4f 46 0a 57  |ASE wimp!16 OF.W|
00004700  48 45 4e 20 32 20 3a 20  50 52 4f 43 66 75 6e 63  |HEN 2 : PROCfunc|
00004710  5f 6d 65 6e 75 0a 57 48  45 4e 20 33 20 3a 20 60  |_menu.WHEN 3 : `|
00004720  66 75 6e 63 25 20 3d 20  33 3a 60 73 74 61 74 65  |func% = 3:`state|
00004730  25 3d 30 3a 50 52 4f 43  75 70 64 61 74 65 5f 68  |%=0:PROCupdate_h|
00004740  65 6c 70 0a 57 48 45 4e  20 34 20 3a 20 60 66 75  |elp.WHEN 4 : `fu|
00004750  6e 63 25 20 3d 20 34 3a  60 73 74 61 74 65 25 3d  |nc% = 4:`state%=|
00004760  30 3a 50 52 4f 43 75 70  64 61 74 65 5f 68 65 6c  |0:PROCupdate_hel|
00004770  70 0a 57 48 45 4e 20 35  20 3a 20 60 66 75 6e 63  |p.WHEN 5 : `func|
00004780  25 20 3d 20 35 3a 60 73  74 61 74 65 25 3d 30 3a  |% = 5:`state%=0:|
00004790  50 52 4f 43 75 70 64 61  74 65 5f 68 65 6c 70 0a  |PROCupdate_help.|
000047a0  57 48 45 4e 20 36 20 3a  20 60 66 75 6e 63 25 20  |WHEN 6 : `func% |
000047b0  3d 20 36 3a 60 73 74 61  74 65 25 3d 30 3a 50 52  |= 6:`state%=0:PR|
000047c0  4f 43 75 70 64 61 74 65  5f 68 65 6c 70 0a 57 48  |OCupdate_help.WH|
000047d0  45 4e 20 37 20 3a 20 60  66 75 6e 63 25 20 3d 20  |EN 7 : `func% = |
000047e0  37 3a 60 73 74 61 74 65  25 3d 30 3a 50 52 4f 43  |7:`state%=0:PROC|
000047f0  75 70 64 61 74 65 5f 68  65 6c 70 0a 50 52 4f 43  |update_help.PROC|
00004800  74 65 73 74 5f 6f 70 65  6e 28 77 69 6e 64 6f 77  |test_open(window|
00004810  73 28 39 29 29 0a 57 48  45 4e 20 60 73 75 62 5f  |s(9)).WHEN `sub_|
00004820  6d 65 6e 28 31 29 20 3a  20 52 45 4d 20 50 52 4f  |men(1) : REM PRO|
00004830  43 74 65 73 74 5f 6f 70  65 6e 28 77 69 6e 64 6f  |Ctest_open(windo|
00004840  77 73 28 33 29 29 20 52  43 4d 0a 45 4e 44 43 41  |ws(3)) RCM.ENDCA|
00004850  53 45 0a 50 52 4f 43 73  68 6f 77 5f 69 63 6f 6e  |SE.PROCshow_icon|
00004860  73 28 60 66 75 6e 63 25  29 0a 45 4e 44 49 46 0a  |s(`func%).ENDIF.|
00004870  49 46 20 60 63 75 72 5f  6d 65 6e 75 20 3d 20 32  |IF `cur_menu = 2|
00004880  20 54 48 45 4e 0a 43 41  53 45 20 77 69 6d 70 21  | THEN.CASE wimp!|
00004890  31 36 20 4f 46 0a 57 48  45 4e 20 32 20 3a 20 50  |16 OF.WHEN 2 : P|
000048a0  52 4f 43 66 75 6e 63 5f  6d 65 6e 75 0a 57 48 45  |ROCfunc_menu.WHE|
000048b0  4e 20 33 20 3a 20 60 66  75 6e 63 25 20 3d 20 33  |N 3 : `func% = 3|
000048c0  3a 60 73 74 61 74 65 25  3d 30 3a 50 52 4f 43 75  |:`state%=0:PROCu|
000048d0  70 64 61 74 65 5f 68 65  6c 70 0a 57 48 45 4e 20  |pdate_help.WHEN |
000048e0  34 20 3a 20 60 66 75 6e  63 25 20 3d 20 34 3a 60  |4 : `func% = 4:`|
000048f0  73 74 61 74 65 25 3d 30  3a 50 52 4f 43 75 70 64  |state%=0:PROCupd|
00004900  61 74 65 5f 68 65 6c 70  0a 57 48 45 4e 20 35 20  |ate_help.WHEN 5 |
00004910  3a 20 60 66 75 6e 63 25  20 3d 20 35 3a 60 73 74  |: `func% = 5:`st|
00004920  61 74 65 25 3d 30 3a 50  52 4f 43 75 70 64 61 74  |ate%=0:PROCupdat|
00004930  65 5f 68 65 6c 70 0a 57  48 45 4e 20 36 20 3a 20  |e_help.WHEN 6 : |
00004940  60 66 75 6e 63 25 20 3d  20 36 3a 60 73 74 61 74  |`func% = 6:`stat|
00004950  65 25 3d 30 3a 50 52 4f  43 75 70 64 61 74 65 5f  |e%=0:PROCupdate_|
00004960  68 65 6c 70 0a 57 48 45  4e 20 60 73 75 62 5f 6d  |help.WHEN `sub_m|
00004970  65 6e 28 32 29 20 3a 20  52 45 4d 20 50 52 4f 43  |en(2) : REM PROC|
00004980  74 65 73 74 5f 6f 70 65  6e 28 77 69 6e 64 6f 77  |test_open(window|
00004990  73 28 33 29 29 20 52 43  4d 0a 45 4e 44 43 41 53  |s(3)) RCM.ENDCAS|
000049a0  45 0a 50 52 4f 43 73 68  6f 77 5f 69 63 6f 6e 73  |E.PROCshow_icons|
000049b0  28 60 66 75 6e 63 25 29  0a 45 4e 44 49 46 0a 49  |(`func%).ENDIF.I|
000049c0  46 20 60 63 75 72 5f 6d  65 6e 75 20 3d 20 33 20  |F `cur_menu = 3 |
000049d0  54 48 45 4e 0a 43 41 53  45 20 77 69 6d 70 21 31  |THEN.CASE wimp!1|
000049e0  36 20 4f 46 0a 57 48 45  4e 20 32 20 3a 20 50 52  |6 OF.WHEN 2 : PR|
000049f0  4f 43 66 75 6e 63 5f 6d  65 6e 75 0a 57 48 45 4e  |OCfunc_menu.WHEN|
00004a00  20 33 20 3a 20 60 66 75  6e 63 25 20 3d 20 33 3a  | 3 : `func% = 3:|
00004a10  60 73 74 61 74 65 25 3d  30 3a 50 52 4f 43 75 70  |`state%=0:PROCup|
00004a20  64 61 74 65 5f 68 65 6c  70 0a 57 48 45 4e 20 34  |date_help.WHEN 4|
00004a30  20 3a 20 60 66 75 6e 63  25 20 3d 20 34 3a 60 73  | : `func% = 4:`s|
00004a40  74 61 74 65 25 3d 30 3a  50 52 4f 43 75 70 64 61  |tate%=0:PROCupda|
00004a50  74 65 5f 68 65 6c 70 0a  57 48 45 4e 20 35 20 3a  |te_help.WHEN 5 :|
00004a60  20 60 66 75 6e 63 25 20  3d 20 35 3a 60 73 74 61  | `func% = 5:`sta|
00004a70  74 65 25 3d 30 3a 50 52  4f 43 75 70 64 61 74 65  |te%=0:PROCupdate|
00004a80  5f 68 65 6c 70 0a 57 48  45 4e 20 36 20 3a 20 60  |_help.WHEN 6 : `|
00004a90  66 75 6e 63 25 20 3d 20  36 3a 60 73 74 61 74 65  |func% = 6:`state|
00004aa0  25 3d 30 3a 50 52 4f 43  75 70 64 61 74 65 5f 68  |%=0:PROCupdate_h|
00004ab0  65 6c 70 0a 57 48 45 4e  20 37 20 3a 20 60 66 75  |elp.WHEN 7 : `fu|
00004ac0  6e 63 25 20 3d 20 37 3a  60 73 74 61 74 65 25 3d  |nc% = 7:`state%=|
00004ad0  30 3a 50 52 4f 43 75 70  64 61 74 65 5f 68 65 6c  |0:PROCupdate_hel|
00004ae0  70 0a 57 48 45 4e 20 60  73 75 62 5f 6d 65 6e 28  |p.WHEN `sub_men(|
00004af0  33 29 20 3a 20 52 45 4d  20 50 52 4f 43 74 65 73  |3) : REM PROCtes|
00004b00  74 5f 6f 70 65 6e 28 77  69 6e 64 6f 77 73 28 33  |t_open(windows(3|
00004b10  29 29 20 52 43 4d 0a 45  4e 44 43 41 53 45 0a 50  |)) RCM.ENDCASE.P|
00004b20  52 4f 43 73 68 6f 77 5f  69 63 6f 6e 73 28 60 66  |ROCshow_icons(`f|
00004b30  75 6e 63 25 29 0a 45 4e  44 49 46 0a 49 46 20 60  |unc%).ENDIF.IF `|
00004b40  63 75 72 5f 6d 65 6e 75  20 3d 20 34 20 54 48 45  |cur_menu = 4 THE|
00004b50  4e 0a 43 41 53 45 20 77  69 6d 70 21 31 36 20 4f  |N.CASE wimp!16 O|
00004b60  46 0a 57 48 45 4e 20 32  20 3a 20 50 52 4f 43 66  |F.WHEN 2 : PROCf|
00004b70  75 6e 63 5f 6d 65 6e 75  0a 57 48 45 4e 20 33 20  |unc_menu.WHEN 3 |
00004b80  3a 20 60 66 75 6e 63 25  20 3d 20 33 3a 60 73 74  |: `func% = 3:`st|
00004b90  61 74 65 25 3d 30 3a 50  52 4f 43 75 70 64 61 74  |ate%=0:PROCupdat|
00004ba0  65 5f 68 65 6c 70 0a 57  48 45 4e 20 60 73 75 62  |e_help.WHEN `sub|
00004bb0  5f 6d 65 6e 28 34 29 20  3a 52 45 4d 20 50 52 4f  |_men(4) :REM PRO|
00004bc0  43 74 65 73 74 5f 6f 70  65 6e 28 77 69 6e 64 6f  |Ctest_open(windo|
00004bd0  77 73 28 33 29 29 20 52  43 4d 0a 45 4e 44 43 41  |ws(3)) RCM.ENDCA|
00004be0  53 45 0a 50 52 4f 43 73  68 6f 77 5f 69 63 6f 6e  |SE.PROCshow_icon|
00004bf0  73 28 60 66 75 6e 63 25  29 0a 45 4e 44 49 46 0a  |s(`func%).ENDIF.|
00004c00  49 46 20 60 63 75 72 5f  6d 65 6e 75 20 3d 20 35  |IF `cur_menu = 5|
00004c10  20 54 48 45 4e 0a 43 41  53 45 20 77 69 6d 70 21  | THEN.CASE wimp!|
00004c20  31 36 20 4f 46 0a 57 48  45 4e 20 32 20 3a 20 50  |16 OF.WHEN 2 : P|
00004c30  52 4f 43 66 75 6e 63 5f  6d 65 6e 75 0a 57 48 45  |ROCfunc_menu.WHE|
00004c40  4e 20 33 20 3a 20 60 66  75 6e 63 25 20 3d 20 33  |N 3 : `func% = 3|
00004c50  3a 60 73 74 61 74 65 25  3d 30 3a 50 52 4f 43 75  |:`state%=0:PROCu|
00004c60  70 64 61 74 65 5f 68 65  6c 70 0a 57 48 45 4e 20  |pdate_help.WHEN |
00004c70  34 20 3a 20 60 66 75 6e  63 25 20 3d 20 34 3a 60  |4 : `func% = 4:`|
00004c80  73 74 61 74 65 25 3d 30  3a 50 52 4f 43 75 70 64  |state%=0:PROCupd|
00004c90  61 74 65 5f 68 65 6c 70  0a 57 48 45 4e 20 35 20  |ate_help.WHEN 5 |
00004ca0  3a 20 60 66 75 6e 63 25  20 3d 20 35 3a 60 73 74  |: `func% = 5:`st|
00004cb0  61 74 65 25 3d 30 3a 50  52 4f 43 75 70 64 61 74  |ate%=0:PROCupdat|
00004cc0  65 5f 68 65 6c 70 0a 57  48 45 4e 20 36 20 3a 20  |e_help.WHEN 6 : |
00004cd0  60 66 75 6e 63 25 20 3d  20 36 3a 60 73 74 61 74  |`func% = 6:`stat|
00004ce0  65 25 3d 30 3a 50 52 4f  43 75 70 64 61 74 65 5f  |e%=0:PROCupdate_|
00004cf0  68 65 6c 70 0a 50 52 4f  43 74 65 73 74 5f 6f 70  |help.PROCtest_op|
00004d00  65 6e 28 77 69 6e 64 6f  77 73 28 38 29 29 3a 50  |en(windows(8)):P|
00004d10  52 4f 43 73 68 6f 77 5f  70 61 74 74 0a 57 48 45  |ROCshow_patt.WHE|
00004d20  4e 20 37 20 3a 20 60 66  75 6e 63 25 20 3d 20 37  |N 7 : `func% = 7|
00004d30  0a 57 48 45 4e 20 60 73  75 62 5f 6d 65 6e 28 35  |.WHEN `sub_men(5|
00004d40  29 20 3a 20 52 45 4d 20  50 52 4f 43 74 65 73 74  |) : REM PROCtest|
00004d50  5f 6f 70 65 6e 28 77 69  6e 64 6f 77 73 28 33 29  |_open(windows(3)|
00004d60  29 20 52 43 4d 0a 45 4e  44 43 41 53 45 0a 50 52  |) RCM.ENDCASE.PR|
00004d70  4f 43 73 68 6f 77 5f 69  63 6f 6e 73 28 60 66 75  |OCshow_icons(`fu|
00004d80  6e 63 25 29 0a 45 4e 44  49 46 0a 46 4f 52 20 61  |nc%).ENDIF.FOR a|
00004d90  25 20 3d 20 32 20 54 4f  20 60 73 75 62 5f 6d 65  |% = 2 TO `sub_me|
00004da0  6e 28 60 63 75 72 5f 6d  65 6e 75 29 2b 31 0a 50  |n(`cur_menu)+1.P|
00004db0  52 4f 43 73 65 74 5f 69  63 6f 6e 5f 73 74 61 74  |ROCset_icon_stat|
00004dc0  65 28 77 69 6e 64 6f 77  73 28 31 29 2c 61 25 2c  |e(windows(1),a%,|
00004dd0  30 2c 30 2c 30 2c 30 29  0a 4e 45 58 54 20 61 25  |0,0,0,0).NEXT a%|
00004de0  0a 45 4e 44 50 52 4f 43  0a 44 45 46 20 50 52 4f  |.ENDPROC.DEF PRO|
00004df0  43 66 75 6e 63 5f 6d 65  6e 75 0a 4c 4f 43 41 4c  |Cfunc_menu.LOCAL|
00004e00  20 6e 25 2c 61 25 0a 61  25 20 3d 20 61 25 20 2b  | n%,a%.a% = a% +|
00004e10  20 31 0a 46 4f 52 20 6e  25 20 3d 20 60 73 75 62  | 1.FOR n% = `sub|
00004e20  5f 6d 65 6e 28 60 63 75  72 5f 6d 65 6e 75 29 2b  |_men(`cur_menu)+|
00004e30  31 20 54 4f 20 32 20 53  54 45 50 2d 31 0a 50 52  |1 TO 2 STEP-1.PR|
00004e40  4f 43 64 65 6c 65 74 65  5f 69 63 6f 6e 28 77 69  |OCdelete_icon(wi|
00004e50  6e 64 6f 77 73 28 31 29  2c 6e 25 29 0a 4e 45 58  |ndows(1),n%).NEX|
00004e60  54 20 6e 25 0a 53 59 53  20 63 72 65 61 74 65 5f  |T n%.SYS create_|
00004e70  69 63 6f 6e 2c 30 2c 60  66 75 6e 63 0a 53 59 53  |icon,0,`func.SYS|
00004e80  20 63 72 65 61 74 65 5f  69 63 6f 6e 2c 30 2c 60  | create_icon,0,`|
00004e90  66 75 6e 63 2b 33 36 0a  53 59 53 20 63 72 65 61  |func+36.SYS crea|
00004ea0  74 65 5f 69 63 6f 6e 2c  30 2c 60 66 75 6e 63 2b  |te_icon,0,`func+|
00004eb0  37 32 0a 53 59 53 20 63  72 65 61 74 65 5f 69 63  |72.SYS create_ic|
00004ec0  6f 6e 2c 30 2c 60 66 75  6e 63 2b 31 30 38 0a 53  |on,0,`func+108.S|
00004ed0  59 53 20 63 72 65 61 74  65 5f 69 63 6f 6e 2c 30  |YS create_icon,0|
00004ee0  2c 60 66 75 6e 63 2b 31  34 34 0a 53 59 53 20 63  |,`func+144.SYS c|
00004ef0  72 65 61 74 65 5f 69 63  6f 6e 2c 30 2c 60 66 75  |reate_icon,0,`fu|
00004f00  6e 63 2b 31 38 30 0a 53  59 53 20 63 72 65 61 74  |nc+180.SYS creat|
00004f10  65 5f 69 63 6f 6e 2c 30  2c 60 66 75 6e 63 2b 32  |e_icon,0,`func+2|
00004f20  31 36 0a 53 59 53 20 63  72 65 61 74 65 5f 69 63  |16.SYS create_ic|
00004f30  6f 6e 2c 30 2c 60 66 75  6e 63 2b 32 35 32 0a 53  |on,0,`func+252.S|
00004f40  59 53 20 63 72 65 61 74  65 5f 69 63 6f 6e 2c 30  |YS create_icon,0|
00004f50  2c 60 66 75 6e 63 2b 32  38 38 0a 60 63 75 72 5f  |,`func+288.`cur_|
00004f60  6d 65 6e 75 20 3d 20 30  3a 60 66 75 6e 63 25 20  |menu = 0:`func% |
00004f70  3d 20 32 0a 45 4e 44 50  52 4f 43 0a 44 45 46 20  |= 2.ENDPROC.DEF |
00004f80  50 52 4f 43 64 72 61 77  5f 6d 65 6e 75 0a 4c 4f  |PROCdraw_menu.LO|
00004f90  43 41 4c 20 6e 25 0a 46  4f 52 20 6e 25 20 3d 20  |CAL n%.FOR n% = |
00004fa0  60 73 75 62 5f 6d 65 6e  28 30 29 2b 31 20 54 4f  |`sub_men(0)+1 TO|
00004fb0  20 32 20 53 54 45 50 2d  31 0a 50 52 4f 43 64 65  | 2 STEP-1.PROCde|
00004fc0  6c 65 74 65 5f 69 63 6f  6e 28 77 69 6e 64 6f 77  |lete_icon(window|
00004fd0  73 28 31 29 2c 6e 25 29  0a 4e 45 58 54 20 6e 25  |s(1),n%).NEXT n%|
00004fe0  0a 53 59 53 20 63 72 65  61 74 65 5f 69 63 6f 6e  |.SYS create_icon|
00004ff0  2c 30 2c 60 64 72 61 77  0a 53 59 53 20 63 72 65  |,0,`draw.SYS cre|
00005000  61 74 65 5f 69 63 6f 6e  2c 30 2c 60 64 72 61 77  |ate_icon,0,`draw|
00005010  2b 33 36 0a 53 59 53 20  63 72 65 61 74 65 5f 69  |+36.SYS create_i|
00005020  63 6f 6e 2c 30 2c 60 64  72 61 77 2b 37 32 0a 53  |con,0,`draw+72.S|
00005030  59 53 20 63 72 65 61 74  65 5f 69 63 6f 6e 2c 30  |YS create_icon,0|
00005040  2c 60 64 72 61 77 2b 31  30 38 0a 53 59 53 20 63  |,`draw+108.SYS c|
00005050  72 65 61 74 65 5f 69 63  6f 6e 2c 30 2c 60 64 72  |reate_icon,0,`dr|
00005060  61 77 2b 31 34 34 0a 53  59 53 20 63 72 65 61 74  |aw+144.SYS creat|
00005070  65 5f 69 63 6f 6e 2c 30  2c 60 64 72 61 77 2b 31  |e_icon,0,`draw+1|
00005080  38 30 0a 53 59 53 20 63  72 65 61 74 65 5f 69 63  |80.SYS create_ic|
00005090  6f 6e 2c 30 2c 60 64 72  61 77 2b 32 31 36 0a 60  |on,0,`draw+216.`|
000050a0  63 75 72 5f 6d 65 6e 75  20 3d 20 31 20 3a 20 60  |cur_menu = 1 : `|
000050b0  73 74 61 74 65 25 20 3d  20 30 0a 45 4e 44 50 52  |state% = 0.ENDPR|
000050c0  4f 43 0a 44 45 46 20 50  52 4f 43 73 68 61 70 65  |OC.DEF PROCshape|
000050d0  5f 6d 65 6e 75 0a 4c 4f  43 41 4c 20 6e 25 0a 46  |_menu.LOCAL n%.F|
000050e0  4f 52 20 6e 25 20 3d 20  60 73 75 62 5f 6d 65 6e  |OR n% = `sub_men|
000050f0  28 30 29 2b 31 20 54 4f  20 32 20 53 54 45 50 2d  |(0)+1 TO 2 STEP-|
00005100  31 0a 50 52 4f 43 64 65  6c 65 74 65 5f 69 63 6f  |1.PROCdelete_ico|
00005110  6e 28 77 69 6e 64 6f 77  73 28 31 29 2c 6e 25 29  |n(windows(1),n%)|
00005120  0a 4e 45 58 54 20 6e 25  0a 53 59 53 20 63 72 65  |.NEXT n%.SYS cre|
00005130  61 74 65 5f 69 63 6f 6e  2c 30 2c 60 73 68 61 70  |ate_icon,0,`shap|
00005140  65 0a 53 59 53 20 63 72  65 61 74 65 5f 69 63 6f  |e.SYS create_ico|
00005150  6e 2c 30 2c 60 73 68 61  70 65 2b 33 36 0a 53 59  |n,0,`shape+36.SY|
00005160  53 20 63 72 65 61 74 65  5f 69 63 6f 6e 2c 30 2c  |S create_icon,0,|
00005170  60 73 68 61 70 65 2b 37  32 0a 53 59 53 20 63 72  |`shape+72.SYS cr|
00005180  65 61 74 65 5f 69 63 6f  6e 2c 30 2c 60 73 68 61  |eate_icon,0,`sha|
00005190  70 65 2b 31 30 38 0a 53  59 53 20 63 72 65 61 74  |pe+108.SYS creat|
000051a0  65 5f 69 63 6f 6e 2c 30  2c 60 73 68 61 70 65 2b  |e_icon,0,`shape+|
000051b0  31 34 34 0a 53 59 53 20  63 72 65 61 74 65 5f 69  |144.SYS create_i|
000051c0  63 6f 6e 2c 30 2c 60 73  68 61 70 65 2b 31 38 30  |con,0,`shape+180|
000051d0  0a 60 63 75 72 5f 6d 65  6e 75 20 3d 20 32 20 3a  |.`cur_menu = 2 :|
000051e0  20 60 73 74 61 74 65 25  20 3d 20 30 0a 45 4e 44  | `state% = 0.END|
000051f0  50 52 4f 43 0a 44 45 46  20 50 52 4f 43 63 75 72  |PROC.DEF PROCcur|
00005200  76 65 5f 6d 65 6e 75 0a  4c 4f 43 41 4c 20 6e 25  |ve_menu.LOCAL n%|
00005210  0a 46 4f 52 20 6e 25 3d  20 60 73 75 62 5f 6d 65  |.FOR n%= `sub_me|
00005220  6e 28 30 29 2b 31 20 54  4f 20 32 20 53 54 45 50  |n(0)+1 TO 2 STEP|
00005230  2d 31 0a 50 52 4f 43 64  65 6c 65 74 65 5f 69 63  |-1.PROCdelete_ic|
00005240  6f 6e 28 77 69 6e 64 6f  77 73 28 31 29 2c 6e 25  |on(windows(1),n%|
00005250  29 0a 4e 45 58 54 20 6e  25 0a 53 59 53 20 63 72  |).NEXT n%.SYS cr|
00005260  65 61 74 65 5f 69 63 6f  6e 2c 30 2c 60 63 75 72  |eate_icon,0,`cur|
00005270  76 65 0a 53 59 53 20 63  72 65 61 74 65 5f 69 63  |ve.SYS create_ic|
00005280  6f 6e 2c 30 2c 60 63 75  72 76 65 2b 33 36 0a 53  |on,0,`curve+36.S|
00005290  59 53 20 63 72 65 61 74  65 5f 69 63 6f 6e 2c 30  |YS create_icon,0|
000052a0  2c 60 63 75 72 76 65 2b  37 32 0a 53 59 53 20 63  |,`curve+72.SYS c|
000052b0  72 65 61 74 65 5f 69 63  6f 6e 2c 30 2c 60 63 75  |reate_icon,0,`cu|
000052c0  72 76 65 2b 31 30 38 0a  53 59 53 20 63 72 65 61  |rve+108.SYS crea|
000052d0  74 65 5f 69 63 6f 6e 2c  30 2c 60 63 75 72 76 65  |te_icon,0,`curve|
000052e0  2b 31 34 34 0a 53 59 53  20 63 72 65 61 74 65 5f  |+144.SYS create_|
000052f0  69 63 6f 6e 2c 30 2c 60  63 75 72 76 65 2b 31 38  |icon,0,`curve+18|
00005300  30 0a 53 59 53 20 63 72  65 61 74 65 5f 69 63 6f  |0.SYS create_ico|
00005310  6e 2c 30 2c 60 63 75 72  76 65 2b 32 31 36 0a 60  |n,0,`curve+216.`|
00005320  63 75 72 5f 6d 65 6e 75  20 3d 20 33 20 3a 20 60  |cur_menu = 3 : `|
00005330  73 74 61 74 65 25 20 3d  20 30 0a 45 4e 44 50 52  |state% = 0.ENDPR|
00005340  4f 43 0a 44 45 46 20 50  52 4f 43 74 65 78 74 5f  |OC.DEF PROCtext_|
00005350  6d 65 6e 75 0a 4c 4f 43  41 4c 20 6e 25 0a 46 4f  |menu.LOCAL n%.FO|
00005360  52 20 6e 25 3d 20 60 73  75 62 5f 6d 65 6e 28 30  |R n%= `sub_men(0|
00005370  29 2b 31 20 54 4f 20 32  20 53 54 45 50 2d 31 0a  |)+1 TO 2 STEP-1.|
00005380  50 52 4f 43 64 65 6c 65  74 65 5f 69 63 6f 6e 28  |PROCdelete_icon(|
00005390  77 69 6e 64 6f 77 73 28  31 29 2c 6e 25 29 0a 4e  |windows(1),n%).N|
000053a0  45 58 54 20 6e 25 0a 53  59 53 20 63 72 65 61 74  |EXT n%.SYS creat|
000053b0  65 5f 69 63 6f 6e 2c 30  2c 60 74 65 78 74 0a 53  |e_icon,0,`text.S|
000053c0  59 53 20 63 72 65 61 74  65 5f 69 63 6f 6e 2c 30  |YS create_icon,0|
000053d0  2c 60 74 65 78 74 2b 33  36 0a 53 59 53 20 63 72  |,`text+36.SYS cr|
000053e0  65 61 74 65 5f 69 63 6f  6e 2c 30 2c 60 74 65 78  |eate_icon,0,`tex|
000053f0  74 2b 37 32 0a 60 63 75  72 5f 6d 65 6e 75 20 3d  |t+72.`cur_menu =|
00005400  20 34 20 3a 20 60 73 74  61 74 65 25 20 3d 20 30  | 4 : `state% = 0|
00005410  0a 45 4e 44 50 52 4f 43  0a 44 45 46 20 50 52 4f  |.ENDPROC.DEF PRO|
00005420  43 61 72 65 61 5f 6d 65  6e 75 0a 4c 4f 43 41 4c  |Carea_menu.LOCAL|
00005430  20 6e 25 0a 46 4f 52 20  6e 25 3d 20 60 73 75 62  | n%.FOR n%= `sub|
00005440  5f 6d 65 6e 28 30 29 2b  31 20 54 4f 20 32 20 53  |_men(0)+1 TO 2 S|
00005450  54 45 50 2d 31 0a 50 52  4f 43 64 65 6c 65 74 65  |TEP-1.PROCdelete|
00005460  5f 69 63 6f 6e 28 77 69  6e 64 6f 77 73 28 31 29  |_icon(windows(1)|
00005470  2c 6e 25 29 0a 4e 45 58  54 20 6e 25 0a 53 59 53  |,n%).NEXT n%.SYS|
00005480  20 63 72 65 61 74 65 5f  69 63 6f 6e 2c 30 2c 60  | create_icon,0,`|
00005490  61 72 65 61 0a 53 59 53  20 63 72 65 61 74 65 5f  |area.SYS create_|
000054a0  69 63 6f 6e 2c 30 2c 60  61 72 65 61 2b 33 36 0a  |icon,0,`area+36.|
000054b0  53 59 53 20 63 72 65 61  74 65 5f 69 63 6f 6e 2c  |SYS create_icon,|
000054c0  30 2c 60 61 72 65 61 2b  37 32 0a 53 59 53 20 63  |0,`area+72.SYS c|
000054d0  72 65 61 74 65 5f 69 63  6f 6e 2c 30 2c 60 61 72  |reate_icon,0,`ar|
000054e0  65 61 2b 31 30 38 0a 53  59 53 20 63 72 65 61 74  |ea+108.SYS creat|
000054f0  65 5f 69 63 6f 6e 2c 30  2c 60 61 72 65 61 2b 31  |e_icon,0,`area+1|
00005500  34 34 0a 53 59 53 20 63  72 65 61 74 65 5f 69 63  |44.SYS create_ic|
00005510  6f 6e 2c 30 2c 60 61 72  65 61 2b 31 38 30 0a 53  |on,0,`area+180.S|
00005520  59 53 20 63 72 65 61 74  65 5f 69 63 6f 6e 2c 30  |YS create_icon,0|
00005530  2c 60 61 72 65 61 2b 32  31 36 0a 60 63 75 72 5f  |,`area+216.`cur_|
00005540  6d 65 6e 75 20 3d 20 35  20 3a 20 60 73 74 61 74  |menu = 5 : `stat|
00005550  65 25 20 3d 20 30 0a 45  4e 44 50 52 4f 43 0a 44  |e% = 0.ENDPROC.D|
00005560  45 46 20 50 52 4f 43 6d  6f 64 65 5f 66 6c 61 67  |EF PROCmode_flag|
00005570  73 28 69 63 6f 6e 25 29  0a 50 52 4f 43 67 65 74  |s(icon%).PROCget|
00005580  5f 70 6f 69 6e 74 65 72  5f 69 6e 66 6f 0a 43 41  |_pointer_info.CA|
00005590  53 45 20 69 63 6f 6e 25  20 4f 46 0a 57 48 45 4e  |SE icon% OF.WHEN|
000055a0  20 30 20 3a 20 60 6d 5f  6f 70 65 6e 20 3d 20 60  | 0 : `m_open = `|
000055b0  6d 5f 66 69 6c 6c 20 3a  20 60 6d 5f 66 69 6c 6c  |m_fill : `m_fill|
000055c0  20 3d 20 4e 4f 54 20 60  6d 5f 66 69 6c 6c 0a 57  | = NOT `m_fill.W|
000055d0  48 45 4e 20 31 20 3a 20  60 6d 5f 66 69 6c 6c 20  |HEN 1 : `m_fill |
000055e0  3d 20 60 6d 5f 6f 70 65  6e 20 3a 20 60 6d 5f 6f  |= `m_open : `m_o|
000055f0  70 65 6e 20 3d 20 4e 4f  54 20 60 6d 5f 6f 70 65  |pen = NOT `m_ope|
00005600  6e 0a 57 48 45 4e 20 32  20 3a 20 60 6d 5f 64 6f  |n.WHEN 2 : `m_do|
00005610  74 73 20 3d 20 4e 4f 54  20 60 6d 5f 64 6f 74 73  |ts = NOT `m_dots|
00005620  0a 57 48 45 4e 20 33 20  3a 20 60 6d 5f 78 6f 72  |.WHEN 3 : `m_xor|
00005630  3d 20 4e 4f 54 20 60 6d  5f 78 6f 72 0a 49 46 60  |= NOT `m_xor.IF`|
00005640  6d 5f 78 6f 72 20 60 6d  5f 6f 72 3d 46 41 4c 53  |m_xor `m_or=FALS|
00005650  45 3a 60 6d 5f 61 6e 64  3d 46 41 4c 53 45 3a 60  |E:`m_and=FALSE:`|
00005660  6d 5f 69 6e 76 3d 46 41  4c 53 45 3a 60 73 74 79  |m_inv=FALSE:`sty|
00005670  6c 65 25 3d 33 0a 57 48  45 4e 20 34 20 3a 20 60  |le%=3.WHEN 4 : `|
00005680  6d 5f 6f 72 20 3d 20 4e  4f 54 20 60 6d 5f 6f 72  |m_or = NOT `m_or|
00005690  0a 49 46 60 6d 5f 6f 72  20 60 6d 5f 78 6f 72 3d  |.IF`m_or `m_xor=|
000056a0  46 41 4c 53 45 3a 60 6d  5f 61 6e 64 3d 46 41 4c  |FALSE:`m_and=FAL|
000056b0  53 45 3a 60 6d 5f 69 6e  76 3d 46 41 4c 53 45 3a  |SE:`m_inv=FALSE:|
000056c0  60 73 74 79 6c 65 25 3d  31 0a 57 48 45 4e 20 35  |`style%=1.WHEN 5|
000056d0  20 3a 20 60 6d 5f 61 6e  64 3d 20 4e 4f 54 20 60  | : `m_and= NOT `|
000056e0  6d 5f 61 6e 64 0a 49 46  60 6d 5f 61 6e 64 20 60  |m_and.IF`m_and `|
000056f0  6d 5f 78 6f 72 3d 46 41  4c 53 45 3a 60 6d 5f 6f  |m_xor=FALSE:`m_o|
00005700  72 3d 46 41 4c 53 45 3a  60 6d 5f 69 6e 76 3d 46  |r=FALSE:`m_inv=F|
00005710  41 4c 53 45 3a 60 73 74  79 6c 65 25 3d 32 0a 57  |ALSE:`style%=2.W|
00005720  48 45 4e 20 36 20 3a 20  60 6d 5f 69 6e 76 3d 20  |HEN 6 : `m_inv= |
00005730  4e 4f 54 20 60 6d 5f 69  6e 76 0a 49 46 60 6d 5f  |NOT `m_inv.IF`m_|
00005740  69 6e 76 20 60 6d 5f 78  6f 72 3d 46 41 4c 53 45  |inv `m_xor=FALSE|
00005750  3a 60 6d 5f 6f 72 3d 46  41 4c 53 45 3a 60 6d 5f  |:`m_or=FALSE:`m_|
00005760  61 6e 64 3d 46 41 4c 53  45 3a 60 73 74 79 6c 65  |and=FALSE:`style|
00005770  25 3d 34 0a 45 4e 44 43  41 53 45 0a 49 46 20 60  |%=4.ENDCASE.IF `|
00005780  6d 5f 78 6f 72 3d 46 41  4c 53 45 20 41 4e 44 20  |m_xor=FALSE AND |
00005790  60 6d 5f 6f 72 3d 46 41  4c 53 45 20 41 4e 44 20  |`m_or=FALSE AND |
000057a0  60 6d 5f 61 6e 64 3d 46  41 4c 53 45 20 41 4e 44  |`m_and=FALSE AND|
000057b0  20 60 6d 5f 69 6e 76 3d  46 41 4c 53 45 20 60 73  | `m_inv=FALSE `s|
000057c0  74 79 6c 65 25 3d 30 0a  50 52 4f 43 73 65 74 5f  |tyle%=0.PROCset_|
000057d0  69 63 6f 6e 5f 73 74 61  74 65 28 77 69 6e 64 6f  |icon_state(windo|
000057e0  77 73 28 32 29 2c 30 2c  26 33 30 33 44 2c 60 69  |ws(2),0,&303D,`i|
000057f0  66 2c 46 4e 69 63 6f 6c  28 60 6d 5f 66 69 6c 6c  |f,FNicol(`m_fill|
00005800  29 2c 2d 31 29 0a 50 52  4f 43 73 65 74 5f 69 63  |),-1).PROCset_ic|
00005810  6f 6e 5f 73 74 61 74 65  28 77 69 6e 64 6f 77 73  |on_state(windows|
00005820  28 32 29 2c 31 2c 26 33  30 33 44 2c 60 69 66 2c  |(2),1,&303D,`if,|
00005830  46 4e 69 63 6f 6c 28 60  6d 5f 6f 70 65 6e 29 2c  |FNicol(`m_open),|
00005840  2d 31 29 0a 50 52 4f 43  73 65 74 5f 69 63 6f 6e  |-1).PROCset_icon|
00005850  5f 73 74 61 74 65 28 77  69 6e 64 6f 77 73 28 32  |_state(windows(2|
00005860  29 2c 32 2c 26 33 30 33  44 2c 60 69 66 2c 46 4e  |),2,&303D,`if,FN|
00005870  69 63 6f 6c 28 60 6d 5f  64 6f 74 73 29 2c 2d 31  |icol(`m_dots),-1|
00005880  29 0a 50 52 4f 43 73 65  74 5f 69 63 6f 6e 5f 73  |).PROCset_icon_s|
00005890  74 61 74 65 28 77 69 6e  64 6f 77 73 28 32 29 2c  |tate(windows(2),|
000058a0  33 2c 26 33 30 33 44 2c  60 69 66 2c 46 4e 69 63  |3,&303D,`if,FNic|
000058b0  6f 6c 28 60 6d 5f 78 6f  72 29 2c 2d 31 29 0a 50  |ol(`m_xor),-1).P|
000058c0  52 4f 43 73 65 74 5f 69  63 6f 6e 5f 73 74 61 74  |ROCset_icon_stat|
000058d0  65 28 77 69 6e 64 6f 77  73 28 32 29 2c 34 2c 26  |e(windows(2),4,&|
000058e0  33 30 33 44 2c 60 69 66  2c 46 4e 69 63 6f 6c 28  |303D,`if,FNicol(|
000058f0  60 6d 5f 6f 72 29 2c 2d  31 29 0a 50 52 4f 43 73  |`m_or),-1).PROCs|
00005900  65 74 5f 69 63 6f 6e 5f  73 74 61 74 65 28 77 69  |et_icon_state(wi|
00005910  6e 64 6f 77 73 28 32 29  2c 35 2c 26 33 30 33 44  |ndows(2),5,&303D|
00005920  2c 60 69 66 2c 46 4e 69  63 6f 6c 28 60 6d 5f 61  |,`if,FNicol(`m_a|
00005930  6e 64 29 2c 2d 31 29 0a  50 52 4f 43 73 65 74 5f  |nd),-1).PROCset_|
00005940  69 63 6f 6e 5f 73 74 61  74 65 28 77 69 6e 64 6f  |icon_state(windo|
00005950  77 73 28 32 29 2c 36 2c  26 33 30 33 44 2c 60 69  |ws(2),6,&303D,`i|
00005960  66 2c 46 4e 69 63 6f 6c  28 60 6d 5f 69 6e 76 29  |f,FNicol(`m_inv)|
00005970  2c 2d 31 29 0a 45 4e 44  50 52 4f 43 0a 44 45 46  |,-1).ENDPROC.DEF|
00005980  20 46 4e 69 63 6f 6c 28  66 25 29 0a 49 46 20 66  | FNicol(f%).IF f|
00005990  25 20 54 48 45 4e 0a 3d  20 26 38 38 0a 45 4c 53  |% THEN.= &88.ELS|
000059a0  45 0a 3d 20 26 38 39 0a  45 4e 44 49 46 0a 44 45  |E.= &89.ENDIF.DE|
000059b0  46 20 50 52 4f 43 63 6c  65 61 72 5f 6d 65 6e 75  |F PROCclear_menu|
000059c0  28 6c 61 73 74 25 29 0a  46 4f 52 20 61 25 20 3d  |(last%).FOR a% =|
000059d0  20 33 20 54 4f 20 6c 61  73 74 25 0a 50 52 4f 43  | 3 TO last%.PROC|
000059e0  73 65 74 5f 69 63 6f 6e  5f 73 74 61 74 65 28 77  |set_icon_state(w|
000059f0  69 6e 64 6f 77 73 28 31  29 2c 61 25 2c 26 33 30  |indows(1),a%,&30|
00005a00  33 44 2c 60 69 66 2c 60  69 62 2c 2d 31 29 0a 4e  |3D,`if,`ib,-1).N|
00005a10  45 58 54 20 61 25 0a 45  4e 44 50 52 4f 43 0a 44  |EXT a%.ENDPROC.D|
00005a20  45 46 20 50 52 4f 43 73  65 74 5f 6d 65 6e 75 28  |EF PROCset_menu(|
00005a30  69 63 6f 6e 25 29 0a 50  52 4f 43 73 65 74 5f 69  |icon%).PROCset_i|
00005a40  63 6f 6e 5f 73 74 61 74  65 28 77 69 6e 64 6f 77  |con_state(window|
00005a50  73 28 31 29 2c 69 63 6f  6e 25 2c 26 33 30 33 44  |s(1),icon%,&303D|
00005a60  2c 60 69 66 2c 26 38 38  2c 2d 31 29 0a 45 4e 44  |,`if,&88,-1).END|
00005a70  50 52 4f 43 0a 44 45 46  20 50 52 4f 43 73 68 6f  |PROC.DEF PROCsho|
00005a80  77 5f 69 63 6f 6e 73 28  69 63 6f 6e 25 29 0a 4c  |w_icons(icon%).L|
00005a90  4f 43 41 4c 20 61 25 0a  46 4f 52 20 61 25 20 3d  |OCAL a%.FOR a% =|
00005aa0  20 32 20 54 4f 20 60 73  75 62 5f 6d 65 6e 28 60  | 2 TO `sub_men(`|
00005ab0  63 75 72 5f 6d 65 6e 75  29 0a 50 52 4f 43 73 65  |cur_menu).PROCse|
00005ac0  74 5f 69 63 6f 6e 5f 73  74 61 74 65 28 77 69 6e  |t_icon_state(win|
00005ad0  64 6f 77 73 28 31 29 2c  61 25 2c 26 33 30 33 44  |dows(1),a%,&303D|
00005ae0  2c 60 69 66 2c 60 69 62  2c 2d 31 29 0a 4e 45 58  |,`if,`ib,-1).NEX|
00005af0  54 20 61 25 0a 50 52 4f  43 73 65 74 5f 69 63 6f  |T a%.PROCset_ico|
00005b00  6e 5f 73 74 61 74 65 28  77 69 6e 64 6f 77 73 28  |n_state(windows(|
00005b10  31 29 2c 69 63 6f 6e 25  2c 26 33 30 33 44 2c 60  |1),icon%,&303D,`|
00005b20  69 66 2c 26 38 38 2c 2d  31 29 0a 45 4e 44 50 52  |if,&88,-1).ENDPR|
00005b30  4f 43 0a 44 45 46 20 46  4e 64 72 61 77 5f 61 72  |OC.DEF FNdraw_ar|
00005b40  65 61 0a 21 74 5f 77 69  6d 70 3d 20 77 69 6e 64  |ea.!t_wimp= wind|
00005b50  6f 77 73 28 35 29 0a 53  59 53 20 67 65 74 5f 77  |ows(5).SYS get_w|
00005b60  69 6e 64 6f 77 5f 73 74  61 74 65 2c 30 2c 74 5f  |indow_state,0,t_|
00005b70  77 69 6d 70 0a 60 64 72  5f 61 72 65 61 20 3d 20  |wimp.`dr_area = |
00005b80  74 5f 77 69 6d 70 21 32  38 0a 49 46 20 60 68 61  |t_wimp!28.IF `ha|
00005b90  6e 64 6c 65 25 20 3c 3e  20 77 69 6e 64 6f 77 73  |ndle% <> windows|
00005ba0  28 35 29 20 54 48 45 4e  20 3d 20 46 41 4c 53 45  |(5) THEN = FALSE|
00005bb0  0a 49 46 20 74 5f 77 69  6d 70 21 32 38 20 3c 3e  |.IF t_wimp!28 <>|
00005bc0  20 2d 31 20 54 48 45 4e  3d 20 46 41 4c 53 45 0a  | -1 THEN= FALSE.|
00005bd0  49 46 20 60 78 25 20 3c  20 31 36 36 20 54 48 45  |IF `x% < 166 THE|
00005be0  4e 3d 20 46 41 4c 53 45  0a 49 46 20 60 79 25 20  |N= FALSE.IF `y% |
00005bf0  3c 20 32 33 32 20 54 48  45 4e 3d 20 46 41 4c 53  |< 232 THEN= FALS|
00005c00  45 0a 3d 20 54 52 55 45  0a 44 45 46 20 50 52 4f  |E.= TRUE.DEF PRO|
00005c10  43 64 6f 5f 6c 69 6e 65  0a 43 41 53 45 20 60 73  |Cdo_line.CASE `s|
00005c20  74 61 74 65 25 20 4f 46  0a 57 48 45 4e 20 31 20  |tate% OF.WHEN 1 |
00005c30  3a 20 50 52 4f 43 72 75  62 62 5f 6c 69 6e 65 0a  |: PROCrubb_line.|
00005c40  49 46 20 28 60 62 25 20  41 4e 44 20 31 29 3d 31  |IF (`b% AND 1)=1|
00005c50  20 54 48 45 4e 0a 50 52  4f 43 72 75 62 62 5f 6c  | THEN.PROCrubb_l|
00005c60  69 6e 65 0a 60 64 6f 5f  78 30 25 20 3d 20 60 78  |ine.`do_x0% = `x|
00005c70  25 0a 60 64 6f 5f 79 30  25 20 3d 20 60 79 25 0a  |%.`do_y0% = `y%.|
00005c80  45 4c 53 45 0a 49 46 20  28 60 62 25 20 41 4e 44  |ELSE.IF (`b% AND|
00005c90  20 34 29 3d 34 20 54 48  45 4e 0a 50 52 4f 43 72  | 4)=4 THEN.PROCr|
00005ca0  75 62 62 5f 6c 69 6e 65  0a 50 4c 4f 54 20 34 2c  |ubb_line.PLOT 4,|
00005cb0  60 64 6f 5f 78 30 25 2c  60 64 6f 5f 79 30 25 0a  |`do_x0%,`do_y0%.|
00005cc0  50 4c 4f 54 20 35 2c 60  78 25 2c 60 79 25 0a 60  |PLOT 5,`x%,`y%.`|
00005cd0  73 74 61 74 65 25 20 3d  20 30 3a 50 52 4f 43 6b  |state% = 0:PROCk|
00005ce0  65 79 5f 62 6f 75 6e 63  65 0a 45 4c 53 45 0a 50  |ey_bounce.ELSE.P|
00005cf0  52 4f 43 72 75 62 62 5f  6c 69 6e 65 0a 45 4e 44  |ROCrubb_line.END|
00005d00  49 46 0a 45 4e 44 49 46  0a 57 48 45 4e 20 30 20  |IF.ENDIF.WHEN 0 |
00005d10  3a 20 49 46 20 28 60 62  25 20 41 4e 44 20 34 29  |: IF (`b% AND 4)|
00005d20  3d 34 20 54 48 45 4e 0a  60 64 6f 5f 78 30 25 20  |=4 THEN.`do_x0% |
00005d30  3d 20 60 78 25 0a 60 64  6f 5f 79 30 25 20 3d 20  |= `x%.`do_y0% = |
00005d40  60 79 25 0a 60 73 74 61  74 65 25 20 3d 20 31 3a  |`y%.`state% = 1:|
00005d50  50 52 4f 43 6b 65 79 5f  62 6f 75 6e 63 65 0a 45  |PROCkey_bounce.E|
00005d60  4e 44 49 46 0a 45 4e 44  43 41 53 45 0a 45 4e 44  |NDIF.ENDCASE.END|
00005d70  50 52 4f 43 0a 44 45 46  20 50 52 4f 43 64 6f 5f  |PROC.DEF PROCdo_|
00005d80  6a 6f 69 6e 65 64 0a 43  41 53 45 20 60 73 74 61  |joined.CASE `sta|
00005d90  74 65 25 20 4f 46 0a 57  48 45 4e 20 31 20 3a 20  |te% OF.WHEN 1 : |
00005da0  50 52 4f 43 72 75 62 62  5f 6c 69 6e 65 0a 49 46  |PROCrubb_line.IF|
00005db0  20 28 60 62 25 20 41 4e  44 20 31 29 3d 31 20 54  | (`b% AND 1)=1 T|
00005dc0  48 45 4e 0a 50 52 4f 43  72 75 62 62 5f 6c 69 6e  |HEN.PROCrubb_lin|
00005dd0  65 0a 60 64 6f 5f 78 30  25 20 3d 20 60 78 25 0a  |e.`do_x0% = `x%.|
00005de0  60 64 6f 5f 79 30 25 20  3d 20 60 79 25 0a 45 4c  |`do_y0% = `y%.EL|
00005df0  53 45 0a 49 46 20 28 60  62 25 20 41 4e 44 20 34  |SE.IF (`b% AND 4|
00005e00  29 3d 34 20 54 48 45 4e  0a 50 52 4f 43 72 75 62  |)=4 THEN.PROCrub|
00005e10  62 5f 6c 69 6e 65 0a 50  4c 4f 54 20 34 2c 60 64  |b_line.PLOT 4,`d|
00005e20  6f 5f 78 30 25 2c 60 64  6f 5f 79 30 25 0a 50 4c  |o_x0%,`do_y0%.PL|
00005e30  4f 54 20 35 2c 60 78 25  2c 60 79 25 0a 60 64 6f  |OT 5,`x%,`y%.`do|
00005e40  5f 78 30 25 3d 60 78 25  0a 60 64 6f 5f 79 30 25  |_x0%=`x%.`do_y0%|
00005e50  3d 60 79 25 0a 45 4c 53  45 0a 50 52 4f 43 72 75  |=`y%.ELSE.PROCru|
00005e60  62 62 5f 6c 69 6e 65 0a  45 4e 44 49 46 0a 45 4e  |bb_line.ENDIF.EN|
00005e70  44 49 46 0a 57 48 45 4e  20 30 20 3a 20 49 46 20  |DIF.WHEN 0 : IF |
00005e80  28 60 62 25 20 41 4e 44  20 34 29 3d 34 20 54 48  |(`b% AND 4)=4 TH|
00005e90  45 4e 0a 60 64 6f 5f 78  30 25 20 3d 20 60 78 25  |EN.`do_x0% = `x%|
00005ea0  0a 60 64 6f 5f 79 30 25  20 3d 20 60 79 25 0a 60  |.`do_y0% = `y%.`|
00005eb0  73 74 61 74 65 25 20 3d  20 31 3a 50 52 4f 43 6b  |state% = 1:PROCk|
00005ec0  65 79 5f 62 6f 75 6e 63  65 0a 45 4e 44 49 46 0a  |ey_bounce.ENDIF.|
00005ed0  45 4e 44 43 41 53 45 0a  45 4e 44 50 52 4f 43 0a  |ENDCASE.ENDPROC.|
00005ee0  44 45 46 20 50 52 4f 43  64 6f 5f 70 6f 69 6e 74  |DEF PROCdo_point|
00005ef0  0a 49 46 20 28 60 62 25  20 41 4e 44 20 34 29 3d  |.IF (`b% AND 4)=|
00005f00  34 20 54 48 45 4e 0a 50  4c 4f 54 20 34 2c 60 78  |4 THEN.PLOT 4,`x|
00005f10  25 2d 38 2c 60 79 25 2b  31 36 0a 43 4f 4c 4f 55  |%-8,`y%+16.COLOU|
00005f20  52 20 31 33 35 3a 47 43  4f 4c 31 33 35 0a 56 44  |R 135:GCOL135.VD|
00005f30  55 35 2c 60 62 72 73 68  25 0a 45 4e 44 49 46 0a  |U5,`brsh%.ENDIF.|
00005f40  45 4e 44 50 52 4f 43 0a  44 45 46 20 50 52 4f 43  |ENDPROC.DEF PROC|
00005f50  64 6f 5f 72 61 64 69 69  0a 43 41 53 45 20 60 73  |do_radii.CASE `s|
00005f60  74 61 74 65 25 20 4f 46  0a 57 48 45 4e 20 31 20  |tate% OF.WHEN 1 |
00005f70  3a 20 50 52 4f 43 72 75  62 62 5f 6c 69 6e 65 0a  |: PROCrubb_line.|
00005f80  49 46 20 28 60 62 25 20  41 4e 44 20 31 29 3d 31  |IF (`b% AND 1)=1|
00005f90  20 54 48 45 4e 0a 50 52  4f 43 72 75 62 62 5f 6c  | THEN.PROCrubb_l|
00005fa0  69 6e 65 0a 60 64 6f 5f  78 30 25 20 3d 20 60 78  |ine.`do_x0% = `x|
00005fb0  25 0a 60 64 6f 5f 79 30  25 20 3d 20 60 79 25 0a  |%.`do_y0% = `y%.|
00005fc0  45 4c 53 45 0a 49 46 20  28 60 62 25 20 41 4e 44  |ELSE.IF (`b% AND|
00005fd0  20 34 29 3d 34 20 54 48  45 4e 0a 50 52 4f 43 72  | 4)=4 THEN.PROCr|
00005fe0  75 62 62 5f 6c 69 6e 65  0a 50 4c 4f 54 20 34 2c  |ubb_line.PLOT 4,|
00005ff0  60 64 6f 5f 78 30 25 2c  60 64 6f 5f 79 30 25 0a  |`do_x0%,`do_y0%.|
00006000  50 4c 4f 54 20 35 2c 60  78 25 2c 60 79 25 0a 45  |PLOT 5,`x%,`y%.E|
00006010  4c 53 45 0a 50 52 4f 43  72 75 62 62 5f 6c 69 6e  |LSE.PROCrubb_lin|
00006020  65 0a 45 4e 44 49 46 0a  45 4e 44 49 46 0a 57 48  |e.ENDIF.ENDIF.WH|
00006030  45 4e 20 30 20 3a 20 49  46 20 28 60 62 25 20 41  |EN 0 : IF (`b% A|
00006040  4e 44 20 34 29 3d 34 20  54 48 45 4e 0a 60 64 6f  |ND 4)=4 THEN.`do|
00006050  5f 78 30 25 20 3d 20 60  78 25 0a 60 64 6f 5f 79  |_x0% = `x%.`do_y|
00006060  30 25 20 3d 20 60 79 25  0a 60 73 74 61 74 65 25  |0% = `y%.`state%|
00006070  20 3d 20 31 3a 50 52 4f  43 6b 65 79 5f 62 6f 75  | = 1:PROCkey_bou|
00006080  6e 63 65 0a 45 4e 44 49  46 0a 45 4e 44 43 41 53  |nce.ENDIF.ENDCAS|
00006090  45 0a 45 4e 44 50 52 4f  43 0a 44 45 46 20 50 52  |E.ENDPROC.DEF PR|
000060a0  4f 43 64 6f 5f 72 65 63  74 0a 43 41 53 45 20 60  |OCdo_rect.CASE `|
000060b0  73 74 61 74 65 25 20 4f  46 0a 57 48 45 4e 20 31  |state% OF.WHEN 1|
000060c0  20 3a 20 50 52 4f 43 72  75 62 62 5f 72 65 63 74  | : PROCrubb_rect|
000060d0  0a 49 46 20 28 60 62 25  20 41 4e 44 20 31 29 3d  |.IF (`b% AND 1)=|
000060e0  31 20 54 48 45 4e 0a 50  52 4f 43 72 75 62 62 5f  |1 THEN.PROCrubb_|
000060f0  72 65 63 74 0a 60 64 6f  5f 78 30 25 20 3d 20 60  |rect.`do_x0% = `|
00006100  78 25 0a 60 64 6f 5f 79  30 25 20 3d 20 60 79 25  |x%.`do_y0% = `y%|
00006110  0a 45 4c 53 45 0a 49 46  20 28 60 62 25 20 41 4e  |.ELSE.IF (`b% AN|
00006120  44 20 34 29 3d 34 20 54  48 45 4e 0a 50 52 4f 43  |D 4)=4 THEN.PROC|
00006130  72 75 62 62 5f 72 65 63  74 0a 50 52 4f 43 64 72  |rubb_rect.PROCdr|
00006140  61 77 5f 72 65 63 74 0a  60 73 74 61 74 65 25 20  |aw_rect.`state% |
00006150  3d 20 30 3a 50 52 4f 43  6b 65 79 5f 62 6f 75 6e  |= 0:PROCkey_boun|
00006160  63 65 0a 45 4c 53 45 0a  50 52 4f 43 72 75 62 62  |ce.ELSE.PROCrubb|
00006170  5f 72 65 63 74 0a 45 4e  44 49 46 0a 45 4e 44 49  |_rect.ENDIF.ENDI|
00006180  46 0a 57 48 45 4e 20 30  20 3a 20 49 46 20 28 60  |F.WHEN 0 : IF (`|
00006190  62 25 20 41 4e 44 20 34  29 3d 34 20 54 48 45 4e  |b% AND 4)=4 THEN|
000061a0  0a 60 64 6f 5f 78 30 25  20 3d 20 60 78 25 0a 60  |.`do_x0% = `x%.`|
000061b0  64 6f 5f 79 30 25 20 3d  20 60 79 25 0a 60 73 74  |do_y0% = `y%.`st|
000061c0  61 74 65 25 20 3d 20 31  3a 50 52 4f 43 6b 65 79  |ate% = 1:PROCkey|
000061d0  5f 62 6f 75 6e 63 65 0a  45 4e 44 49 46 0a 45 4e  |_bounce.ENDIF.EN|
000061e0  44 43 41 53 45 0a 45 4e  44 50 52 4f 43 0a 44 45  |DCASE.ENDPROC.DE|
000061f0  46 20 50 52 4f 43 64 6f  5f 73 71 75 61 72 65 0a  |F PROCdo_square.|
00006200  43 41 53 45 20 60 73 74  61 74 65 25 20 4f 46 0a  |CASE `state% OF.|
00006210  57 48 45 4e 20 31 20 3a  20 50 52 4f 43 72 75 62  |WHEN 1 : PROCrub|
00006220  62 5f 73 71 72 65 0a 49  46 20 28 60 62 25 20 41  |b_sqre.IF (`b% A|
00006230  4e 44 20 31 29 3d 31 20  54 48 45 4e 0a 50 52 4f  |ND 1)=1 THEN.PRO|
00006240  43 72 75 62 62 5f 72 65  63 74 0a 60 64 6f 5f 78  |Crubb_rect.`do_x|
00006250  30 25 20 3d 20 60 78 25  0a 60 64 6f 5f 79 30 25  |0% = `x%.`do_y0%|
00006260  20 3d 20 60 79 25 0a 45  4c 53 45 0a 49 46 20 28  | = `y%.ELSE.IF (|
00006270  60 62 25 20 41 4e 44 20  34 29 3d 34 20 54 48 45  |`b% AND 4)=4 THE|
00006280  4e 0a 50 52 4f 43 72 75  62 62 5f 73 71 72 65 0a  |N.PROCrubb_sqre.|
00006290  50 52 4f 43 64 72 61 77  5f 73 71 72 65 0a 60 73  |PROCdraw_sqre.`s|
000062a0  74 61 74 65 25 20 3d 20  30 3a 50 52 4f 43 6b 65  |tate% = 0:PROCke|
000062b0  79 5f 62 6f 75 6e 63 65  0a 45 4c 53 45 0a 50 52  |y_bounce.ELSE.PR|
000062c0  4f 43 72 75 62 62 5f 73  71 72 65 0a 45 4e 44 49  |OCrubb_sqre.ENDI|
000062d0  46 0a 45 4e 44 49 46 0a  57 48 45 4e 20 30 20 3a  |F.ENDIF.WHEN 0 :|
000062e0  20 49 46 20 28 60 62 25  20 41 4e 44 20 34 29 3d  | IF (`b% AND 4)=|
000062f0  34 20 54 48 45 4e 0a 60  64 6f 5f 78 30 25 20 3d  |4 THEN.`do_x0% =|
00006300  20 60 78 25 0a 60 64 6f  5f 79 30 25 20 3d 20 60  | `x%.`do_y0% = `|
00006310  79 25 0a 60 73 74 61 74  65 25 20 3d 20 31 3a 50  |y%.`state% = 1:P|
00006320  52 4f 43 6b 65 79 5f 62  6f 75 6e 63 65 0a 45 4e  |ROCkey_bounce.EN|
00006330  44 49 46 0a 45 4e 44 43  41 53 45 0a 45 4e 44 50  |DIF.ENDCASE.ENDP|
00006340  52 4f 43 0a 44 45 46 20  50 52 4f 43 64 6f 5f 70  |ROC.DEF PROCdo_p|
00006350  61 72 61 0a 43 41 53 45  20 60 73 74 61 74 65 25  |ara.CASE `state%|
00006360  20 4f 46 0a 57 48 45 4e  20 30 20 3a 20 49 46 20  | OF.WHEN 0 : IF |
00006370  28 60 62 25 20 41 4e 44  20 34 29 3d 34 20 54 48  |(`b% AND 4)=4 TH|
00006380  45 4e 0a 60 64 6f 5f 78  30 25 20 3d 20 60 78 25  |EN.`do_x0% = `x%|
00006390  0a 60 64 6f 5f 79 30 25  20 3d 20 60 79 25 0a 60  |.`do_y0% = `y%.`|
000063a0  73 74 61 74 65 25 20 3d  20 31 3a 50 52 4f 43 6b  |state% = 1:PROCk|
000063b0  65 79 5f 62 6f 75 6e 63  65 0a 45 4e 44 49 46 0a  |ey_bounce.ENDIF.|
000063c0  57 48 45 4e 20 31 20 3a  20 50 52 4f 43 72 75 62  |WHEN 1 : PROCrub|
000063d0  62 5f 6c 69 6e 65 0a 49  46 20 28 60 62 25 20 41  |b_line.IF (`b% A|
000063e0  4e 44 20 31 29 3d 31 20  54 48 45 4e 0a 50 52 4f  |ND 1)=1 THEN.PRO|
000063f0  43 72 75 62 62 5f 6c 69  6e 65 0a 60 64 6f 5f 78  |Crubb_line.`do_x|
00006400  30 25 20 3d 20 60 78 25  0a 60 64 6f 5f 79 30 25  |0% = `x%.`do_y0%|
00006410  20 3d 20 60 79 25 0a 45  4c 53 45 0a 49 46 20 28  | = `y%.ELSE.IF (|
00006420  60 62 25 20 41 4e 44 20  34 29 3d 34 20 54 48 45  |`b% AND 4)=4 THE|
00006430  4e 0a 50 52 4f 43 72 75  62 62 5f 6c 69 6e 65 0a  |N.PROCrubb_line.|
00006440  60 64 6f 5f 78 31 25 20  3d 20 60 78 25 0a 60 64  |`do_x1% = `x%.`d|
00006450  6f 5f 79 31 25 20 3d 20  60 79 25 0a 60 73 74 61  |o_y1% = `y%.`sta|
00006460  74 65 25 20 3d 20 32 3a  50 52 4f 43 6b 65 79 5f  |te% = 2:PROCkey_|
00006470  62 6f 75 6e 63 65 0a 45  4c 53 45 0a 50 52 4f 43  |bounce.ELSE.PROC|
00006480  72 75 62 62 5f 6c 69 6e  65 0a 45 4e 44 49 46 0a  |rubb_line.ENDIF.|
00006490  45 4e 44 49 46 0a 57 48  45 4e 20 32 20 3a 20 50  |ENDIF.WHEN 2 : P|
000064a0  52 4f 43 72 75 62 62 5f  70 61 72 61 0a 49 46 20  |ROCrubb_para.IF |
000064b0  28 60 62 25 20 41 4e 44  20 31 29 3d 31 20 54 48  |(`b% AND 1)=1 TH|
000064c0  45 4e 0a 50 52 4f 43 72  75 62 62 5f 70 61 72 61  |EN.PROCrubb_para|
000064d0  0a 60 64 6f 5f 78 30 25  20 3d 20 60 78 25 0a 60  |.`do_x0% = `x%.`|
000064e0  64 6f 5f 79 30 25 20 3d  20 60 79 25 0a 45 4c 53  |do_y0% = `y%.ELS|
000064f0  45 0a 49 46 20 28 60 62  25 20 41 4e 44 20 34 29  |E.IF (`b% AND 4)|
00006500  3d 34 20 54 48 45 4e 0a  50 52 4f 43 72 75 62 62  |=4 THEN.PROCrubb|
00006510  5f 70 61 72 61 0a 50 52  4f 43 64 72 61 77 5f 70  |_para.PROCdraw_p|
00006520  61 72 61 0a 60 73 74 61  74 65 25 20 3d 20 30 3a  |ara.`state% = 0:|
00006530  50 52 4f 43 6b 65 79 5f  62 6f 75 6e 63 65 0a 45  |PROCkey_bounce.E|
00006540  4c 53 45 0a 50 52 4f 43  72 75 62 62 5f 70 61 72  |LSE.PROCrubb_par|
00006550  61 0a 45 4e 44 49 46 0a  45 4e 44 49 46 0a 45 4e  |a.ENDIF.ENDIF.EN|
00006560  44 43 41 53 45 0a 45 4e  44 50 52 4f 43 0a 44 45  |DCASE.ENDPROC.DE|
00006570  46 20 50 52 4f 43 64 6f  5f 74 72 69 61 0a 43 41  |F PROCdo_tria.CA|
00006580  53 45 20 60 73 74 61 74  65 25 20 4f 46 0a 57 48  |SE `state% OF.WH|
00006590  45 4e 20 30 20 3a 20 49  46 20 28 60 62 25 20 41  |EN 0 : IF (`b% A|
000065a0  4e 44 20 34 29 3d 34 20  54 48 45 4e 0a 60 64 6f  |ND 4)=4 THEN.`do|
000065b0  5f 78 30 25 20 3d 20 60  78 25 0a 60 64 6f 5f 79  |_x0% = `x%.`do_y|
000065c0  30 25 20 3d 20 60 79 25  0a 60 73 74 61 74 65 25  |0% = `y%.`state%|
000065d0  20 3d 20 31 3a 50 52 4f  43 6b 65 79 5f 62 6f 75  | = 1:PROCkey_bou|
000065e0  6e 63 65 0a 45 4e 44 49  46 0a 57 48 45 4e 20 31  |nce.ENDIF.WHEN 1|
000065f0  20 3a 20 50 52 4f 43 72  75 62 62 5f 6c 69 6e 65  | : PROCrubb_line|
00006600  0a 49 46 20 28 60 62 25  20 41 4e 44 20 31 29 3d  |.IF (`b% AND 1)=|
00006610  31 20 54 48 45 4e 0a 50  52 4f 43 72 75 62 62 5f  |1 THEN.PROCrubb_|
00006620  6c 69 6e 65 0a 60 64 6f  5f 78 30 25 20 3d 20 60  |line.`do_x0% = `|
00006630  78 25 0a 60 64 6f 5f 79  30 25 20 3d 20 60 79 25  |x%.`do_y0% = `y%|
00006640  0a 45 4c 53 45 0a 49 46  20 28 60 62 25 20 41 4e  |.ELSE.IF (`b% AN|
00006650  44 20 34 29 3d 34 20 54  48 45 4e 0a 50 52 4f 43  |D 4)=4 THEN.PROC|
00006660  72 75 62 62 5f 6c 69 6e  65 0a 60 64 6f 5f 78 31  |rubb_line.`do_x1|
00006670  25 20 3d 20 60 78 25 0a  60 64 6f 5f 79 31 25 20  |% = `x%.`do_y1% |
00006680  3d 20 60 79 25 0a 60 73  74 61 74 65 25 20 3d 20  |= `y%.`state% = |
00006690  32 3a 50 52 4f 43 6b 65  79 5f 62 6f 75 6e 63 65  |2:PROCkey_bounce|
000066a0  0a 45 4c 53 45 0a 50 52  4f 43 72 75 62 62 5f 6c  |.ELSE.PROCrubb_l|
000066b0  69 6e 65 0a 45 4e 44 49  46 0a 45 4e 44 49 46 0a  |ine.ENDIF.ENDIF.|
000066c0  57 48 45 4e 20 32 20 3a  20 50 52 4f 43 72 75 62  |WHEN 2 : PROCrub|
000066d0  62 5f 74 72 69 61 0a 49  46 20 28 60 62 25 20 41  |b_tria.IF (`b% A|
000066e0  4e 44 20 31 29 3d 31 20  54 48 45 4e 0a 50 52 4f  |ND 1)=1 THEN.PRO|
000066f0  43 72 75 62 62 5f 74 72  69 61 0a 60 64 6f 5f 78  |Crubb_tria.`do_x|
00006700  30 25 20 3d 20 60 78 25  0a 60 64 6f 5f 79 30 25  |0% = `x%.`do_y0%|
00006710  20 3d 20 60 79 25 0a 45  4c 53 45 0a 49 46 20 28  | = `y%.ELSE.IF (|
00006720  60 62 25 20 41 4e 44 20  34 29 3d 34 20 54 48 45  |`b% AND 4)=4 THE|
00006730  4e 0a 50 52 4f 43 72 75  62 62 5f 74 72 69 61 0a  |N.PROCrubb_tria.|
00006740  50 52 4f 43 64 72 61 77  5f 74 72 69 61 0a 60 73  |PROCdraw_tria.`s|
00006750  74 61 74 65 25 20 3d 20  30 3a 50 52 4f 43 6b 65  |tate% = 0:PROCke|
00006760  79 5f 62 6f 75 6e 63 65  0a 45 4c 53 45 0a 50 52  |y_bounce.ELSE.PR|
00006770  4f 43 72 75 62 62 5f 74  72 69 61 0a 45 4e 44 49  |OCrubb_tria.ENDI|
00006780  46 0a 45 4e 44 49 46 0a  45 4e 44 43 41 53 45 0a  |F.ENDIF.ENDCASE.|
00006790  45 4e 44 50 52 4f 43 0a  44 45 46 20 50 52 4f 43  |ENDPROC.DEF PROC|
000067a0  64 6f 5f 63 69 72 63 0a  43 41 53 45 20 60 73 74  |do_circ.CASE `st|
000067b0  61 74 65 25 20 4f 46 0a  57 48 45 4e 20 30 20 3a  |ate% OF.WHEN 0 :|
000067c0  20 49 46 20 28 60 62 25  20 41 4e 44 20 34 29 3d  | IF (`b% AND 4)=|
000067d0  34 20 54 48 45 4e 0a 60  64 6f 5f 78 30 25 20 3d  |4 THEN.`do_x0% =|
000067e0  20 60 78 25 0a 60 64 6f  5f 79 30 25 20 3d 20 60  | `x%.`do_y0% = `|
000067f0  79 25 0a 60 73 74 61 74  65 25 20 3d 20 31 3a 50  |y%.`state% = 1:P|
00006800  52 4f 43 6b 65 79 5f 62  6f 75 6e 63 65 0a 45 4e  |ROCkey_bounce.EN|
00006810  44 49 46 0a 57 48 45 4e  20 31 20 3a 20 50 52 4f  |DIF.WHEN 1 : PRO|
00006820  43 72 75 62 62 5f 63 69  72 63 0a 49 46 20 28 60  |Crubb_circ.IF (`|
00006830  62 25 20 41 4e 44 20 31  29 3d 31 20 54 48 45 4e  |b% AND 1)=1 THEN|
00006840  0a 50 52 4f 43 72 75 62  62 5f 63 69 72 63 0a 60  |.PROCrubb_circ.`|
00006850  64 6f 5f 78 30 25 20 3d  20 60 78 25 0a 60 64 6f  |do_x0% = `x%.`do|
00006860  5f 79 30 25 20 3d 20 60  79 25 0a 45 4c 53 45 0a  |_y0% = `y%.ELSE.|
00006870  49 46 20 28 60 62 25 20  41 4e 44 20 34 29 3d 34  |IF (`b% AND 4)=4|
00006880  20 54 48 45 4e 0a 50 52  4f 43 72 75 62 62 5f 63  | THEN.PROCrubb_c|
00006890  69 72 63 0a 50 52 4f 43  64 72 61 77 5f 63 69 72  |irc.PROCdraw_cir|
000068a0  63 0a 60 73 74 61 74 65  25 20 3d 20 30 3a 50 52  |c.`state% = 0:PR|
000068b0  4f 43 6b 65 79 5f 62 6f  75 6e 63 65 0a 45 4c 53  |OCkey_bounce.ELS|
000068c0  45 0a 50 52 4f 43 72 75  62 62 5f 63 69 72 63 0a  |E.PROCrubb_circ.|
000068d0  45 4e 44 49 46 0a 45 4e  44 49 46 0a 45 4e 44 43  |ENDIF.ENDIF.ENDC|
000068e0  41 53 45 0a 45 4e 44 50  52 4f 43 0a 44 45 46 20  |ASE.ENDPROC.DEF |
000068f0  50 52 4f 43 64 6f 5f 65  6c 69 70 0a 43 41 53 45  |PROCdo_elip.CASE|
00006900  20 60 73 74 61 74 65 25  20 4f 46 0a 57 48 45 4e  | `state% OF.WHEN|
00006910  20 30 20 3a 20 49 46 20  28 60 62 25 20 41 4e 44  | 0 : IF (`b% AND|
00006920  20 34 29 3d 34 20 54 48  45 4e 0a 60 64 6f 5f 78  | 4)=4 THEN.`do_x|
00006930  30 25 20 3d 20 60 78 25  0a 60 64 6f 5f 79 30 25  |0% = `x%.`do_y0%|
00006940  20 3d 20 60 79 25 0a 60  73 74 61 74 65 25 20 3d  | = `y%.`state% =|
00006950  20 31 3a 50 52 4f 43 6b  65 79 5f 62 6f 75 6e 63  | 1:PROCkey_bounc|
00006960  65 0a 45 4e 44 49 46 0a  57 48 45 4e 20 31 20 3a  |e.ENDIF.WHEN 1 :|
00006970  20 49 46 20 28 60 62 25  20 41 4e 44 20 31 29 3d  | IF (`b% AND 1)=|
00006980  31 20 54 48 45 4e 0a 60  64 6f 5f 78 30 25 20 3d  |1 THEN.`do_x0% =|
00006990  20 60 78 25 0a 60 64 6f  5f 79 30 25 20 3d 20 60  | `x%.`do_y0% = `|
000069a0  79 25 0a 45 4c 53 45 0a  50 52 4f 43 72 75 62 62  |y%.ELSE.PROCrubb|
000069b0  5f 6c 69 6e 65 0a 49 46  20 28 60 62 25 20 41 4e  |_line.IF (`b% AN|
000069c0  44 20 34 29 3d 34 20 54  48 45 4e 0a 50 52 4f 43  |D 4)=4 THEN.PROC|
000069d0  72 75 62 62 5f 6c 69 6e  65 0a 60 64 6f 5f 78 31  |rubb_line.`do_x1|
000069e0  25 20 3d 20 60 78 25 0a  60 64 6f 5f 79 31 25 20  |% = `x%.`do_y1% |
000069f0  3d 20 60 79 25 0a 60 73  74 61 74 65 25 20 3d 20  |= `y%.`state% = |
00006a00  32 3a 50 52 4f 43 6b 65  79 5f 62 6f 75 6e 63 65  |2:PROCkey_bounce|
00006a10  0a 45 4c 53 45 0a 50 52  4f 43 72 75 62 62 5f 6c  |.ELSE.PROCrubb_l|
00006a20  69 6e 65 0a 45 4e 44 49  46 0a 45 4e 44 49 46 0a  |ine.ENDIF.ENDIF.|
00006a30  57 48 45 4e 20 32 20 3a  20 50 52 4f 43 72 75 62  |WHEN 2 : PROCrub|
00006a40  62 5f 65 6c 69 70 0a 49  46 20 28 60 62 25 20 41  |b_elip.IF (`b% A|
00006a50  4e 44 20 31 29 3d 31 20  54 48 45 4e 0a 50 52 4f  |ND 1)=1 THEN.PRO|
00006a60  43 72 75 62 62 5f 65 6c  69 70 0a 60 64 6f 5f 78  |Crubb_elip.`do_x|
00006a70  30 25 20 3d 20 60 78 25  0a 60 64 6f 5f 79 30 25  |0% = `x%.`do_y0%|
00006a80  20 3d 20 60 79 25 0a 45  4c 53 45 0a 49 46 20 28  | = `y%.ELSE.IF (|
00006a90  60 62 25 20 41 4e 44 20  34 29 3d 34 20 54 48 45  |`b% AND 4)=4 THE|
00006aa0  4e 0a 50 52 4f 43 72 75  62 62 5f 65 6c 69 70 0a  |N.PROCrubb_elip.|
00006ab0  50 52 4f 43 64 72 61 77  5f 65 6c 69 70 0a 60 73  |PROCdraw_elip.`s|
00006ac0  74 61 74 65 25 20 3d 20  30 3a 50 52 4f 43 6b 65  |tate% = 0:PROCke|
00006ad0  79 5f 62 6f 75 6e 63 65  0a 45 4c 53 45 0a 50 52  |y_bounce.ELSE.PR|
00006ae0  4f 43 72 75 62 62 5f 65  6c 69 70 0a 45 4e 44 49  |OCrubb_elip.ENDI|
00006af0  46 0a 45 4e 44 49 46 0a  45 4e 44 43 41 53 45 0a  |F.ENDIF.ENDCASE.|
00006b00  45 4e 44 50 52 4f 43 0a  44 45 46 20 50 52 4f 43  |ENDPROC.DEF PROC|
00006b10  64 6f 5f 73 65 67 6d 0a  43 41 53 45 20 60 73 74  |do_segm.CASE `st|
00006b20  61 74 65 25 20 4f 46 0a  57 48 45 4e 20 30 20 3a  |ate% OF.WHEN 0 :|
00006b30  20 49 46 20 28 60 62 25  20 41 4e 44 20 34 29 3d  | IF (`b% AND 4)=|
00006b40  34 20 54 48 45 4e 0a 60  64 6f 5f 78 30 25 20 3d  |4 THEN.`do_x0% =|
00006b50  20 60 78 25 0a 60 64 6f  5f 79 30 25 20 3d 20 60  | `x%.`do_y0% = `|
00006b60  79 25 0a 60 73 74 61 74  65 25 20 3d 20 31 3a 50  |y%.`state% = 1:P|
00006b70  52 4f 43 6b 65 79 5f 62  6f 75 6e 63 65 0a 45 4e  |ROCkey_bounce.EN|
00006b80  44 49 46 0a 57 48 45 4e  20 31 20 3a 20 50 52 4f  |DIF.WHEN 1 : PRO|
00006b90  43 72 75 62 62 5f 6c 69  6e 65 0a 49 46 20 28 60  |Crubb_line.IF (`|
00006ba0  62 25 20 41 4e 44 20 31  29 3d 31 20 54 48 45 4e  |b% AND 1)=1 THEN|
00006bb0  0a 50 52 4f 43 72 75 62  62 5f 6c 69 6e 65 0a 60  |.PROCrubb_line.`|
00006bc0  64 6f 5f 78 30 25 20 3d  20 60 78 25 0a 60 64 6f  |do_x0% = `x%.`do|
00006bd0  5f 79 30 25 20 3d 20 60  79 25 0a 45 4c 53 45 0a  |_y0% = `y%.ELSE.|
00006be0  49 46 20 28 60 62 25 20  41 4e 44 20 34 29 3d 34  |IF (`b% AND 4)=4|
00006bf0  20 54 48 45 4e 0a 50 52  4f 43 72 75 62 62 5f 6c  | THEN.PROCrubb_l|
00006c00  69 6e 65 0a 60 64 6f 5f  78 31 25 20 3d 20 60 78  |ine.`do_x1% = `x|
00006c10  25 0a 60 64 6f 5f 79 31  25 20 3d 20 60 79 25 0a  |%.`do_y1% = `y%.|
00006c20  60 73 74 61 74 65 25 20  3d 20 32 3a 50 52 4f 43  |`state% = 2:PROC|
00006c30  6b 65 79 5f 62 6f 75 6e  63 65 0a 45 4c 53 45 0a  |key_bounce.ELSE.|
00006c40  50 52 4f 43 72 75 62 62  5f 6c 69 6e 65 0a 45 4e  |PROCrubb_line.EN|
00006c50  44 49 46 0a 45 4e 44 49  46 0a 57 48 45 4e 20 32  |DIF.ENDIF.WHEN 2|
00006c60  20 3a 20 50 52 4f 43 72  75 62 62 5f 73 65 67 6d  | : PROCrubb_segm|
00006c70  0a 49 46 20 28 60 62 25  20 41 4e 44 20 31 29 3d  |.IF (`b% AND 1)=|
00006c80  31 20 54 48 45 4e 0a 50  52 4f 43 72 75 62 62 5f  |1 THEN.PROCrubb_|
00006c90  73 65 67 6d 0a 60 64 6f  5f 78 31 25 3d 60 78 25  |segm.`do_x1%=`x%|
00006ca0  0a 60 64 6f 5f 79 31 25  3d 60 79 25 0a 45 4c 53  |.`do_y1%=`y%.ELS|
00006cb0  45 0a 49 46 20 28 60 62  25 20 41 4e 44 20 34 29  |E.IF (`b% AND 4)|
00006cc0  3d 34 20 54 48 45 4e 0a  50 52 4f 43 72 75 62 62  |=4 THEN.PROCrubb|
00006cd0  5f 73 65 67 6d 0a 50 52  4f 43 64 72 61 77 5f 73  |_segm.PROCdraw_s|
00006ce0  65 67 6d 0a 60 73 74 61  74 65 25 20 3d 20 30 3a  |egm.`state% = 0:|
00006cf0  50 52 4f 43 6b 65 79 5f  62 6f 75 6e 63 65 0a 45  |PROCkey_bounce.E|
00006d00  4c 53 45 0a 50 52 4f 43  72 75 62 62 5f 73 65 67  |LSE.PROCrubb_seg|
00006d10  6d 0a 45 4e 44 49 46 0a  45 4e 44 49 46 0a 45 4e  |m.ENDIF.ENDIF.EN|
00006d20  44 43 41 53 45 0a 45 4e  44 50 52 4f 43 0a 44 45  |DCASE.ENDPROC.DE|
00006d30  46 20 50 52 4f 43 64 6f  5f 61 72 63 0a 43 41 53  |F PROCdo_arc.CAS|
00006d40  45 20 60 73 74 61 74 65  25 20 4f 46 0a 57 48 45  |E `state% OF.WHE|
00006d50  4e 20 30 20 3a 20 49 46  20 28 60 62 25 20 41 4e  |N 0 : IF (`b% AN|
00006d60  44 20 34 29 3d 34 20 54  48 45 4e 0a 60 64 6f 5f  |D 4)=4 THEN.`do_|
00006d70  78 30 25 20 3d 20 60 78  25 0a 60 64 6f 5f 79 30  |x0% = `x%.`do_y0|
00006d80  25 20 3d 20 60 79 25 0a  60 73 74 61 74 65 25 20  |% = `y%.`state% |
00006d90  3d 20 31 3a 50 52 4f 43  6b 65 79 5f 62 6f 75 6e  |= 1:PROCkey_boun|
00006da0  63 65 0a 45 4e 44 49 46  0a 57 48 45 4e 20 31 20  |ce.ENDIF.WHEN 1 |
00006db0  3a 20 50 52 4f 43 72 75  62 62 5f 6c 69 6e 65 0a  |: PROCrubb_line.|
00006dc0  49 46 20 28 60 62 25 20  41 4e 44 20 31 29 3d 31  |IF (`b% AND 1)=1|
00006dd0  20 54 48 45 4e 0a 50 52  4f 43 72 75 62 62 5f 6c  | THEN.PROCrubb_l|
00006de0  69 6e 65 0a 60 64 6f 5f  78 30 25 20 3d 20 60 78  |ine.`do_x0% = `x|
00006df0  25 0a 60 64 6f 5f 79 30  25 20 3d 20 60 79 25 0a  |%.`do_y0% = `y%.|
00006e00  45 4c 53 45 0a 49 46 20  28 60 62 25 20 41 4e 44  |ELSE.IF (`b% AND|
00006e10  20 34 29 3d 34 20 54 48  45 4e 0a 50 52 4f 43 72  | 4)=4 THEN.PROCr|
00006e20  75 62 62 5f 6c 69 6e 65  0a 60 64 6f 5f 78 31 25  |ubb_line.`do_x1%|
00006e30  20 3d 20 60 78 25 0a 60  64 6f 5f 79 31 25 20 3d  | = `x%.`do_y1% =|
00006e40  20 60 79 25 0a 60 73 74  61 74 65 25 20 3d 20 32  | `y%.`state% = 2|
00006e50  3a 50 52 4f 43 6b 65 79  5f 62 6f 75 6e 63 65 0a  |:PROCkey_bounce.|
00006e60  45 4c 53 45 0a 50 52 4f  43 72 75 62 62 5f 6c 69  |ELSE.PROCrubb_li|
00006e70  6e 65 0a 45 4e 44 49 46  0a 45 4e 44 49 46 0a 57  |ne.ENDIF.ENDIF.W|
00006e80  48 45 4e 20 32 20 3a 20  50 52 4f 43 72 75 62 62  |HEN 2 : PROCrubb|
00006e90  5f 61 72 63 0a 49 46 20  28 60 62 25 20 41 4e 44  |_arc.IF (`b% AND|
00006ea0  20 31 29 3d 31 20 54 48  45 4e 0a 50 52 4f 43 72  | 1)=1 THEN.PROCr|
00006eb0  75 62 62 5f 61 72 63 0a  60 64 6f 5f 78 31 25 3d  |ubb_arc.`do_x1%=|
00006ec0  60 78 25 0a 60 64 6f 5f  79 31 25 3d 60 79 25 0a  |`x%.`do_y1%=`y%.|
00006ed0  45 4c 53 45 0a 49 46 20  28 60 62 25 20 41 4e 44  |ELSE.IF (`b% AND|
00006ee0  20 34 29 3d 34 20 54 48  45 4e 0a 50 52 4f 43 72  | 4)=4 THEN.PROCr|
00006ef0  75 62 62 5f 61 72 63 0a  50 52 4f 43 64 72 61 77  |ubb_arc.PROCdraw|
00006f00  5f 61 72 63 0a 60 73 74  61 74 65 25 20 3d 20 30  |_arc.`state% = 0|
00006f10  3a 50 52 4f 43 6b 65 79  5f 62 6f 75 6e 63 65 0a  |:PROCkey_bounce.|
00006f20  45 4c 53 45 0a 50 52 4f  43 72 75 62 62 5f 61 72  |ELSE.PROCrubb_ar|
00006f30  63 0a 45 4e 44 49 46 0a  45 4e 44 49 46 0a 45 4e  |c.ENDIF.ENDIF.EN|
00006f40  44 43 41 53 45 0a 45 4e  44 50 52 4f 43 0a 44 45  |DCASE.ENDPROC.DE|
00006f50  46 20 50 52 4f 43 64 6f  5f 73 65 63 74 0a 43 41  |F PROCdo_sect.CA|
00006f60  53 45 20 60 73 74 61 74  65 25 20 4f 46 0a 57 48  |SE `state% OF.WH|
00006f70  45 4e 20 30 20 3a 20 49  46 20 28 60 62 25 20 41  |EN 0 : IF (`b% A|
00006f80  4e 44 20 34 29 3d 34 20  54 48 45 4e 0a 60 64 6f  |ND 4)=4 THEN.`do|
00006f90  5f 78 30 25 20 3d 20 60  78 25 0a 60 64 6f 5f 79  |_x0% = `x%.`do_y|
00006fa0  30 25 20 3d 20 60 79 25  0a 60 73 74 61 74 65 25  |0% = `y%.`state%|
00006fb0  20 3d 20 31 3a 50 52 4f  43 6b 65 79 5f 62 6f 75  | = 1:PROCkey_bou|
00006fc0  6e 63 65 0a 45 4e 44 49  46 0a 57 48 45 4e 20 31  |nce.ENDIF.WHEN 1|
00006fd0  20 3a 20 50 52 4f 43 72  75 62 62 5f 6c 69 6e 65  | : PROCrubb_line|
00006fe0  0a 49 46 20 28 60 62 25  20 41 4e 44 20 31 29 3d  |.IF (`b% AND 1)=|
00006ff0  31 20 54 48 45 4e 0a 50  52 4f 43 72 75 62 62 5f  |1 THEN.PROCrubb_|
00007000  6c 69 6e 65 0a 60 64 6f  5f 78 30 25 20 3d 20 60  |line.`do_x0% = `|
00007010  78 25 0a 60 64 6f 5f 79  30 25 20 3d 20 60 79 25  |x%.`do_y0% = `y%|
00007020  0a 45 4c 53 45 0a 49 46  20 28 60 62 25 20 41 4e  |.ELSE.IF (`b% AN|
00007030  44 20 34 29 3d 34 20 54  48 45 4e 0a 50 52 4f 43  |D 4)=4 THEN.PROC|
00007040  72 75 62 62 5f 6c 69 6e  65 0a 60 64 6f 5f 78 31  |rubb_line.`do_x1|
00007050  25 20 3d 20 60 78 25 0a  60 64 6f 5f 79 31 25 20  |% = `x%.`do_y1% |
00007060  3d 20 60 79 25 0a 60 73  74 61 74 65 25 20 3d 20  |= `y%.`state% = |
00007070  32 3a 50 52 4f 43 6b 65  79 5f 62 6f 75 6e 63 65  |2:PROCkey_bounce|
00007080  0a 45 4c 53 45 0a 50 52  4f 43 72 75 62 62 5f 6c  |.ELSE.PROCrubb_l|
00007090  69 6e 65 0a 45 4e 44 49  46 0a 45 4e 44 49 46 0a  |ine.ENDIF.ENDIF.|
000070a0  57 48 45 4e 20 32 20 3a  20 50 52 4f 43 72 75 62  |WHEN 2 : PROCrub|
000070b0  62 5f 73 65 63 74 0a 49  46 20 28 60 62 25 20 41  |b_sect.IF (`b% A|
000070c0  4e 44 20 31 29 3d 31 20  54 48 45 4e 0a 50 52 4f  |ND 1)=1 THEN.PRO|
000070d0  43 72 75 62 62 5f 73 65  63 74 0a 60 64 6f 5f 78  |Crubb_sect.`do_x|
000070e0  31 25 3d 60 78 25 0a 60  64 6f 5f 79 31 25 3d 60  |1%=`x%.`do_y1%=`|
000070f0  79 25 0a 45 4c 53 45 0a  49 46 20 28 60 62 25 20  |y%.ELSE.IF (`b% |
00007100  41 4e 44 20 34 29 3d 34  20 54 48 45 4e 0a 50 52  |AND 4)=4 THEN.PR|
00007110  4f 43 72 75 62 62 5f 73  65 63 74 0a 50 52 4f 43  |OCrubb_sect.PROC|
00007120  64 72 61 77 5f 73 65 63  74 0a 60 73 74 61 74 65  |draw_sect.`state|
00007130  25 20 3d 20 30 3a 50 52  4f 43 6b 65 79 5f 62 6f  |% = 0:PROCkey_bo|
00007140  75 6e 63 65 0a 45 4c 53  45 0a 50 52 4f 43 72 75  |unce.ELSE.PROCru|
00007150  62 62 5f 73 65 63 74 0a  45 4e 44 49 46 0a 45 4e  |bb_sect.ENDIF.EN|
00007160  44 49 46 0a 45 4e 44 43  41 53 45 0a 45 4e 44 50  |DIF.ENDCASE.ENDP|
00007170  52 4f 43 0a 44 45 46 20  50 52 4f 43 64 6f 5f 63  |ROC.DEF PROCdo_c|
00007180  6f 70 79 0a 43 41 53 45  20 60 73 74 61 74 65 25  |opy.CASE `state%|
00007190  20 4f 46 0a 57 48 45 4e  20 30 20 3a 20 49 46 20  | OF.WHEN 0 : IF |
000071a0  28 60 62 25 20 41 4e 44  20 34 29 3d 34 20 54 48  |(`b% AND 4)=4 TH|
000071b0  45 4e 0a 60 64 6f 5f 78  30 25 20 3d 20 60 78 25  |EN.`do_x0% = `x%|
000071c0  0a 60 64 6f 5f 79 30 25  20 3d 20 60 79 25 0a 60  |.`do_y0% = `y%.`|
000071d0  73 74 61 74 65 25 20 3d  20 31 3a 50 52 4f 43 6b  |state% = 1:PROCk|
000071e0  65 79 5f 62 6f 75 6e 63  65 0a 50 52 4f 43 6b 65  |ey_bounce.PROCke|
000071f0  79 5f 62 6f 75 6e 63 65  0a 45 4e 44 49 46 0a 57  |y_bounce.ENDIF.W|
00007200  48 45 4e 20 31 20 3a 20  50 52 4f 43 72 75 62 62  |HEN 1 : PROCrubb|
00007210  5f 72 65 63 74 0a 49 46  20 28 60 62 25 20 41 4e  |_rect.IF (`b% AN|
00007220  44 20 31 29 3d 31 20 54  48 45 4e 0a 50 52 4f 43  |D 1)=1 THEN.PROC|
00007230  72 75 62 62 5f 72 65 63  74 0a 60 64 6f 5f 78 30  |rubb_rect.`do_x0|
00007240  25 20 3d 20 60 78 25 0a  60 64 6f 5f 79 30 25 20  |% = `x%.`do_y0% |
00007250  3d 20 60 79 25 0a 45 4c  53 45 0a 49 46 20 28 60  |= `y%.ELSE.IF (`|
00007260  62 25 20 41 4e 44 20 34  29 3d 34 20 54 48 45 4e  |b% AND 4)=4 THEN|
00007270  0a 50 52 4f 43 72 75 62  62 5f 72 65 63 74 0a 60  |.PROCrubb_rect.`|
00007280  64 6f 5f 78 31 25 20 3d  20 60 78 25 0a 60 64 6f  |do_x1% = `x%.`do|
00007290  5f 79 31 25 20 3d 20 60  79 25 0a 4d 4f 56 45 20  |_y1% = `y%.MOVE |
000072a0  60 64 6f 5f 78 30 25 2c  60 64 6f 5f 79 30 25 0a  |`do_x0%,`do_y0%.|
000072b0  4d 4f 56 45 20 60 64 6f  5f 78 31 25 2c 60 64 6f  |MOVE `do_x1%,`do|
000072c0  5f 79 31 25 0a 52 45 4d  20 2a 73 67 65 74 20 31  |_y1%.REM *sget 1|
000072d0  0a 53 59 53 20 26 32 45  2c 32 35 36 2b 31 34 2c  |.SYS &2E,256+14,|
000072e0  73 70 74 5f 61 72 65 61  2c 22 31 22 2c 30 0a 60  |spt_area,"1",0.`|
000072f0  73 74 61 74 65 25 20 3d  20 32 3a 50 52 4f 43 6b  |state% = 2:PROCk|
00007300  65 79 5f 62 6f 75 6e 63  65 0a 50 52 4f 43 6b 65  |ey_bounce.PROCke|
00007310  79 5f 62 6f 75 6e 63 65  0a 45 4c 53 45 0a 50 52  |y_bounce.ELSE.PR|
00007320  4f 43 72 75 62 62 5f 72  65 63 74 0a 45 4e 44 49  |OCrubb_rect.ENDI|
00007330  46 0a 45 4e 44 49 46 0a  57 48 45 4e 20 32 20 3a  |F.ENDIF.WHEN 2 :|
00007340  20 50 52 4f 43 6d 6f 76  65 5f 72 65 63 74 0a 49  | PROCmove_rect.I|
00007350  46 20 28 60 62 25 20 41  4e 44 20 34 29 3d 34 20  |F (`b% AND 4)=4 |
00007360  54 48 45 4e 0a 50 52 4f  43 6d 6f 76 65 5f 72 65  |THEN.PROCmove_re|
00007370  63 74 0a 50 52 4f 43 64  72 61 77 5f 63 6f 70 79  |ct.PROCdraw_copy|
00007380  0a 45 4c 53 45 0a 49 46  20 28 60 62 25 20 41 4e  |.ELSE.IF (`b% AN|
00007390  44 20 31 29 3d 31 20 54  48 45 4e 0a 50 52 4f 43  |D 1)=1 THEN.PROC|
000073a0  6d 6f 76 65 5f 72 65 63  74 0a 60 73 74 61 74 65  |move_rect.`state|
000073b0  25 20 3d 20 30 3a 50 52  4f 43 6b 65 79 5f 62 6f  |% = 0:PROCkey_bo|
000073c0  75 6e 63 65 0a 50 52 4f  43 6b 65 79 5f 62 6f 75  |unce.PROCkey_bou|
000073d0  6e 63 65 0a 45 4c 53 45  0a 50 52 4f 43 6d 6f 76  |nce.ELSE.PROCmov|
000073e0  65 5f 72 65 63 74 0a 45  4e 44 49 46 0a 45 4e 44  |e_rect.ENDIF.END|
000073f0  49 46 0a 45 4e 44 43 41  53 45 0a 45 4e 44 50 52  |IF.ENDCASE.ENDPR|
00007400  4f 43 0a 44 45 46 20 50  52 4f 43 64 6f 5f 63 6c  |OC.DEF PROCdo_cl|
00007410  65 61 72 0a 49 46 20 28  60 62 25 20 41 4e 44 20  |ear.IF (`b% AND |
00007420  34 29 3d 34 20 54 48 45  4e 0a 47 43 4f 4c 20 31  |4)=4 THEN.GCOL 1|
00007430  33 35 0a 43 4c 47 0a 60  64 72 5f 61 72 65 61 3d  |35.CLG.`dr_area=|
00007440  2d 31 0a 50 52 4f 43 73  63 72 6e 5f 63 6f 70 79  |-1.PROCscrn_copy|
00007450  0a 53 59 53 20 73 63 72  65 65 6e 5f 72 65 64 72  |.SYS screen_redr|
00007460  61 77 2c 2d 31 2c 30 2c  30 2c 31 32 37 39 2c 31  |aw,-1,0,0,1279,1|
00007470  30 32 33 0a 45 4e 44 49  46 0a 45 4e 44 50 52 4f  |023.ENDIF.ENDPRO|
00007480  43 0a 44 45 46 20 50 52  4f 43 64 6f 5f 6d 6f 76  |C.DEF PROCdo_mov|
00007490  65 0a 43 41 53 45 20 60  73 74 61 74 65 25 20 4f  |e.CASE `state% O|
000074a0  46 0a 57 48 45 4e 20 30  20 3a 20 49 46 20 28 60  |F.WHEN 0 : IF (`|
000074b0  62 25 20 41 4e 44 20 34  29 3d 34 20 54 48 45 4e  |b% AND 4)=4 THEN|
000074c0  0a 60 64 6f 5f 78 30 25  20 3d 20 60 78 25 0a 60  |.`do_x0% = `x%.`|
000074d0  64 6f 5f 79 30 25 20 3d  20 60 79 25 0a 60 73 74  |do_y0% = `y%.`st|
000074e0  61 74 65 25 20 3d 20 31  3a 50 52 4f 43 6b 65 79  |ate% = 1:PROCkey|
000074f0  5f 62 6f 75 6e 63 65 0a  50 52 4f 43 6b 65 79 5f  |_bounce.PROCkey_|
00007500  62 6f 75 6e 63 65 0a 45  4e 44 49 46 0a 57 48 45  |bounce.ENDIF.WHE|
00007510  4e 20 31 20 3a 20 50 52  4f 43 72 75 62 62 5f 72  |N 1 : PROCrubb_r|
00007520  65 63 74 0a 49 46 20 28  60 62 25 20 41 4e 44 20  |ect.IF (`b% AND |
00007530  31 29 3d 31 20 54 48 45  4e 0a 50 52 4f 43 72 75  |1)=1 THEN.PROCru|
00007540  62 62 5f 72 65 63 74 0a  60 64 6f 5f 78 30 25 20  |bb_rect.`do_x0% |
00007550  3d 20 60 78 25 0a 60 64  6f 5f 79 30 25 20 3d 20  |= `x%.`do_y0% = |
00007560  60 79 25 0a 45 4c 53 45  0a 49 46 20 28 60 62 25  |`y%.ELSE.IF (`b%|
00007570  20 41 4e 44 20 34 29 3d  34 20 54 48 45 4e 0a 50  | AND 4)=4 THEN.P|
00007580  52 4f 43 72 75 62 62 5f  72 65 63 74 0a 60 64 6f  |ROCrubb_rect.`do|
00007590  5f 78 31 25 20 3d 20 60  78 25 0a 60 64 6f 5f 79  |_x1% = `x%.`do_y|
000075a0  31 25 20 3d 20 60 79 25  0a 60 73 74 61 74 65 25  |1% = `y%.`state%|
000075b0  20 3d 20 32 3a 50 52 4f  43 6b 65 79 5f 62 6f 75  | = 2:PROCkey_bou|
000075c0  6e 63 65 0a 50 52 4f 43  6b 65 79 5f 62 6f 75 6e  |nce.PROCkey_boun|
000075d0  63 65 0a 45 4c 53 45 0a  50 52 4f 43 72 75 62 62  |ce.ELSE.PROCrubb|
000075e0  5f 72 65 63 74 0a 45 4e  44 49 46 0a 45 4e 44 49  |_rect.ENDIF.ENDI|
000075f0  46 0a 57 48 45 4e 20 32  20 3a 20 50 52 4f 43 6d  |F.WHEN 2 : PROCm|
00007600  6f 76 65 5f 72 65 63 74  0a 49 46 20 28 60 62 25  |ove_rect.IF (`b%|
00007610  20 41 4e 44 20 34 29 3d  34 20 54 48 45 4e 0a 50  | AND 4)=4 THEN.P|
00007620  52 4f 43 6d 6f 76 65 5f  72 65 63 74 0a 50 52 4f  |ROCmove_rect.PRO|
00007630  43 64 72 61 77 5f 6d 6f  76 65 0a 60 73 74 61 74  |Cdraw_move.`stat|
00007640  65 25 20 3d 20 30 3a 50  52 4f 43 6b 65 79 5f 62  |e% = 0:PROCkey_b|
00007650  6f 75 6e 63 65 0a 45 4c  53 45 0a 50 52 4f 43 6d  |ounce.ELSE.PROCm|
00007660  6f 76 65 5f 72 65 63 74  0a 45 4e 44 49 46 0a 45  |ove_rect.ENDIF.E|
00007670  4e 44 43 41 53 45 0a 45  4e 44 50 52 4f 43 0a 44  |NDCASE.ENDPROC.D|
00007680  45 46 20 50 52 4f 43 64  6f 5f 66 69 6c 6c 0a 49  |EF PROCdo_fill.I|
00007690  46 20 28 60 62 25 20 41  4e 44 20 34 29 3c 3e 34  |F (`b% AND 4)<>4|
000076a0  20 54 48 45 4e 20 45 4e  44 50 52 4f 43 0a 61 25  | THEN ENDPROC.a%|
000076b0  20 3d 20 50 4f 49 4e 54  28 60 78 25 2c 60 79 25  | = POINT(`x%,`y%|
000076c0  29 0a 47 43 4f 4c 31 32  38 2b 61 25 0a 50 4c 4f  |).GCOL128+a%.PLO|
000076d0  54 20 26 38 35 2c 60 78  25 2c 60 79 25 0a 47 43  |T &85,`x%,`y%.GC|
000076e0  4f 4c 31 33 35 0a 45 4e  44 50 52 4f 43 0a 44 45  |OL135.ENDPROC.DE|
000076f0  46 20 50 52 4f 43 64 6f  5f 74 65 78 74 0a 43 41  |F PROCdo_text.CA|
00007700  53 45 20 60 73 74 61 74  65 25 20 4f 46 0a 57 48  |SE `state% OF.WH|
00007710  45 4e 20 30 20 3a 20 49  46 20 28 60 62 25 20 41  |EN 0 : IF (`b% A|
00007720  4e 44 20 34 29 3d 34 20  54 48 45 4e 0a 60 64 6f  |ND 4)=4 THEN.`do|
00007730  5f 78 30 25 3d 60 78 25  0a 60 64 6f 5f 79 30 25  |_x0%=`x%.`do_y0%|
00007740  3d 60 79 25 0a 60 73 74  61 74 65 25 20 3d 20 31  |=`y%.`state% = 1|
00007750  20 3a 20 50 52 4f 43 6b  65 79 5f 62 6f 75 6e 63  | : PROCkey_bounc|
00007760  65 0a 53 59 53 20 36 2c  31 35 2c 31 0a 45 4e 44  |e.SYS 6,15,1.END|
00007770  49 46 0a 57 48 45 4e 20  31 20 3a 20 57 41 49 54  |IF.WHEN 1 : WAIT|
00007780  3a 50 52 4f 43 72 75 62  62 5f 63 75 72 73 3a 57  |:PROCrubb_curs:W|
00007790  41 49 54 0a 49 46 20 28  60 62 25 20 41 4e 44 20  |AIT.IF (`b% AND |
000077a0  31 29 3d 31 20 54 48 45  4e 0a 50 52 4f 43 72 75  |1)=1 THEN.PROCru|
000077b0  62 62 5f 63 75 72 73 0a  60 64 6f 5f 78 30 25 3d  |bb_curs.`do_x0%=|
000077c0  60 78 25 0a 60 64 6f 5f  79 30 25 3d 60 79 25 0a  |`x%.`do_y0%=`y%.|
000077d0  45 4c 53 45 0a 50 52 4f  43 72 75 62 62 5f 63 75  |ELSE.PROCrubb_cu|
000077e0  72 73 0a 61 25 3d 49 4e  4b 45 59 28 30 29 0a 49  |rs.a%=INKEY(0).I|
000077f0  46 20 61 25 3d 31 33 20  54 48 45 4e 0a 60 73 74  |F a%=13 THEN.`st|
00007800  61 74 65 25 3d 30 0a 45  4c 53 45 0a 49 46 20 61  |ate%=0.ELSE.IF a|
00007810  25 3c 3e 2d 31 20 54 48  45 4e 0a 56 44 55 20 35  |%<>-1 THEN.VDU 5|
00007820  0a 50 4c 4f 54 20 34 2c  60 64 6f 5f 78 30 25 2c  |.PLOT 4,`do_x0%,|
00007830  60 64 6f 5f 79 30 25 2b  33 32 0a 56 44 55 20 61  |`do_y0%+32.VDU a|
00007840  25 0a 60 64 6f 5f 78 30  25 3d 60 64 6f 5f 78 30  |%.`do_x0%=`do_x0|
00007850  25 2b 31 36 0a 45 4e 44  49 46 0a 45 4e 44 49 46  |%+16.ENDIF.ENDIF|
00007860  0a 45 4e 44 49 46 0a 45  4e 44 43 41 53 45 0a 45  |.ENDIF.ENDCASE.E|
00007870  4e 44 50 52 4f 43 0a 52  45 4d 20 2a 2a 2a 2a 2a  |NDPROC.REM *****|
00007880  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000078b0  2a 2a 2a 2a 2a 2a 2a 2a  0a 44 45 46 20 50 52 4f  |********.DEF PRO|
000078c0  43 72 75 62 62 5f 6c 69  6e 65 0a 50 4c 4f 54 20  |Crubb_line.PLOT |
000078d0  34 2c 60 64 6f 5f 78 30  25 2c 60 64 6f 5f 79 30  |4,`do_x0%,`do_y0|
000078e0  25 0a 50 4c 4f 54 20 36  2c 60 78 25 2c 60 79 25  |%.PLOT 6,`x%,`y%|
000078f0  0a 45 4e 44 50 52 4f 43  0a 44 45 46 20 50 52 4f  |.ENDPROC.DEF PRO|
00007900  43 72 75 62 62 5f 72 65  63 74 0a 50 4c 4f 54 20  |Crubb_rect.PLOT |
00007910  34 2c 60 64 6f 5f 78 30  25 2c 60 64 6f 5f 79 30  |4,`do_x0%,`do_y0|
00007920  25 0a 50 4c 4f 54 20 36  2c 60 64 6f 5f 78 30 25  |%.PLOT 6,`do_x0%|
00007930  2c 60 79 25 0a 50 4c 4f  54 20 36 2c 60 78 25 2c  |,`y%.PLOT 6,`x%,|
00007940  60 79 25 0a 50 4c 4f 54  20 36 2c 60 78 25 2c 60  |`y%.PLOT 6,`x%,`|
00007950  64 6f 5f 79 30 25 0a 50  4c 4f 54 20 36 2c 60 64  |do_y0%.PLOT 6,`d|
00007960  6f 5f 78 30 25 2c 60 64  6f 5f 79 30 25 0a 45 4e  |o_x0%,`do_y0%.EN|
00007970  44 50 52 4f 43 0a 44 45  46 20 50 52 4f 43 72 75  |DPROC.DEF PROCru|
00007980  62 62 5f 73 71 72 65 0a  49 46 20 28 41 42 53 28  |bb_sqre.IF (ABS(|
00007990  60 64 6f 5f 78 30 25 2d  60 78 25 29 29 20 3e 20  |`do_x0%-`x%)) > |
000079a0  28 41 42 53 28 60 64 6f  5f 79 30 25 2d 60 79 25  |(ABS(`do_y0%-`y%|
000079b0  29 29 20 54 48 45 4e 0a  49 46 20 60 64 6f 5f 79  |)) THEN.IF `do_y|
000079c0  30 25 20 3e 20 60 79 25  20 54 48 45 4e 0a 60 79  |0% > `y% THEN.`y|
000079d0  25 20 3d 20 60 64 6f 5f  79 30 25 20 2d 20 28 41  |% = `do_y0% - (A|
000079e0  42 53 28 60 64 6f 5f 78  30 25 2d 60 78 25 29 29  |BS(`do_x0%-`x%))|
000079f0  0a 45 4c 53 45 0a 60 79  25 20 3d 20 60 64 6f 5f  |.ELSE.`y% = `do_|
00007a00  79 30 25 20 2b 20 28 41  42 53 28 60 64 6f 5f 78  |y0% + (ABS(`do_x|
00007a10  30 25 2d 60 78 25 29 29  0a 45 4e 44 49 46 0a 45  |0%-`x%)).ENDIF.E|
00007a20  4c 53 45 0a 49 46 20 60  64 6f 5f 78 30 25 20 3e  |LSE.IF `do_x0% >|
00007a30  20 60 78 25 20 54 48 45  4e 0a 60 78 25 20 3d 20  | `x% THEN.`x% = |
00007a40  60 64 6f 5f 78 30 25 20  2d 20 28 41 42 53 28 60  |`do_x0% - (ABS(`|
00007a50  64 6f 5f 79 30 25 2d 60  79 25 29 29 0a 45 4c 53  |do_y0%-`y%)).ELS|
00007a60  45 0a 60 78 25 20 3d 20  60 64 6f 5f 78 30 25 20  |E.`x% = `do_x0% |
00007a70  2b 20 28 41 42 53 28 60  64 6f 5f 79 30 25 2d 60  |+ (ABS(`do_y0%-`|
00007a80  79 25 29 29 0a 45 4e 44  49 46 0a 45 4e 44 49 46  |y%)).ENDIF.ENDIF|
00007a90  0a 50 4c 4f 54 20 34 2c  60 64 6f 5f 78 30 25 2c  |.PLOT 4,`do_x0%,|
00007aa0  60 64 6f 5f 79 30 25 0a  50 4c 4f 54 20 36 2c 60  |`do_y0%.PLOT 6,`|
00007ab0  64 6f 5f 78 30 25 2c 60  79 25 0a 50 4c 4f 54 20  |do_x0%,`y%.PLOT |
00007ac0  36 2c 60 78 25 2c 60 79  25 0a 50 4c 4f 54 20 36  |6,`x%,`y%.PLOT 6|
00007ad0  2c 60 78 25 2c 60 64 6f  5f 79 30 25 0a 50 4c 4f  |,`x%,`do_y0%.PLO|
00007ae0  54 20 36 2c 60 64 6f 5f  78 30 25 2c 60 64 6f 5f  |T 6,`do_x0%,`do_|
00007af0  79 30 25 0a 45 4e 44 50  52 4f 43 0a 44 45 46 20  |y0%.ENDPROC.DEF |
00007b00  50 52 4f 43 72 75 62 62  5f 70 61 72 61 0a 50 4c  |PROCrubb_para.PL|
00007b10  4f 54 20 34 2c 60 64 6f  5f 78 30 25 2c 60 64 6f  |OT 4,`do_x0%,`do|
00007b20  5f 79 30 25 0a 50 4c 4f  54 20 36 2c 60 64 6f 5f  |_y0%.PLOT 6,`do_|
00007b30  78 31 25 2c 60 64 6f 5f  79 31 25 0a 50 4c 4f 54  |x1%,`do_y1%.PLOT|
00007b40  20 36 2c 60 78 25 2c 60  79 25 0a 50 4c 4f 54 20  | 6,`x%,`y%.PLOT |
00007b50  36 2c 60 64 6f 5f 78 30  25 2b 28 60 78 25 2d 60  |6,`do_x0%+(`x%-`|
00007b60  64 6f 5f 78 31 25 29 2c  60 64 6f 5f 79 30 25 2b  |do_x1%),`do_y0%+|
00007b70  28 60 79 25 2d 60 64 6f  5f 79 31 25 29 0a 50 4c  |(`y%-`do_y1%).PL|
00007b80  4f 54 20 36 2c 60 64 6f  5f 78 30 25 2c 60 64 6f  |OT 6,`do_x0%,`do|
00007b90  5f 79 30 25 0a 45 4e 44  50 52 4f 43 0a 44 45 46  |_y0%.ENDPROC.DEF|
00007ba0  20 50 52 4f 43 72 75 62  62 5f 74 72 69 61 0a 50  | PROCrubb_tria.P|
00007bb0  4c 4f 54 20 34 2c 60 64  6f 5f 78 30 25 2c 60 64  |LOT 4,`do_x0%,`d|
00007bc0  6f 5f 79 30 25 0a 50 4c  4f 54 20 36 2c 60 64 6f  |o_y0%.PLOT 6,`do|
00007bd0  5f 78 31 25 2c 60 64 6f  5f 79 31 25 0a 50 4c 4f  |_x1%,`do_y1%.PLO|
00007be0  54 20 36 2c 60 78 25 2c  60 79 25 0a 50 4c 4f 54  |T 6,`x%,`y%.PLOT|
00007bf0  20 36 2c 60 64 6f 5f 78  30 25 2c 60 64 6f 5f 79  | 6,`do_x0%,`do_y|
00007c00  30 25 0a 45 4e 44 50 52  4f 43 0a 44 45 46 20 50  |0%.ENDPROC.DEF P|
00007c10  52 4f 43 72 75 62 62 5f  63 69 72 63 0a 50 4c 4f  |ROCrubb_circ.PLO|
00007c20  54 20 34 2c 60 64 6f 5f  78 30 25 2c 60 64 6f 5f  |T 4,`do_x0%,`do_|
00007c30  79 30 25 0a 50 4c 4f 54  20 26 39 36 2c 60 78 25  |y0%.PLOT &96,`x%|
00007c40  2c 60 79 25 0a 45 4e 44  50 52 4f 43 0a 44 45 46  |,`y%.ENDPROC.DEF|
00007c50  20 50 52 4f 43 72 75 62  62 5f 65 6c 69 70 0a 50  | PROCrubb_elip.P|
00007c60  4c 4f 54 20 34 2c 60 64  6f 5f 78 30 25 2c 60 64  |LOT 4,`do_x0%,`d|
00007c70  6f 5f 79 30 25 0a 50 4c  4f 54 20 34 2c 60 64 6f  |o_y0%.PLOT 4,`do|
00007c80  5f 78 31 25 2c 60 64 6f  5f 79 31 25 0a 50 4c 4f  |_x1%,`do_y1%.PLO|
00007c90  54 20 26 43 36 2c 60 78  25 2c 60 79 25 0a 45 4e  |T &C6,`x%,`y%.EN|
00007ca0  44 50 52 4f 43 0a 44 45  46 20 50 52 4f 43 72 75  |DPROC.DEF PROCru|
00007cb0  62 62 5f 73 65 67 6d 0a  50 4c 4f 54 20 34 2c 60  |bb_segm.PLOT 4,`|
00007cc0  64 6f 5f 78 30 25 2c 60  64 6f 5f 79 30 25 0a 50  |do_x0%,`do_y0%.P|
00007cd0  4c 4f 54 20 34 2c 60 64  6f 5f 78 31 25 2c 60 64  |LOT 4,`do_x1%,`d|
00007ce0  6f 5f 79 31 25 0a 50 4c  4f 54 20 26 41 45 2c 60  |o_y1%.PLOT &AE,`|
00007cf0  78 25 2c 60 79 25 0a 45  4e 44 50 52 4f 43 0a 44  |x%,`y%.ENDPROC.D|
00007d00  45 46 20 50 52 4f 43 72  75 62 62 5f 61 72 63 0a  |EF PROCrubb_arc.|
00007d10  50 4c 4f 54 20 34 2c 60  64 6f 5f 78 30 25 2c 60  |PLOT 4,`do_x0%,`|
00007d20  64 6f 5f 79 30 25 0a 50  4c 4f 54 20 34 2c 60 64  |do_y0%.PLOT 4,`d|
00007d30  6f 5f 78 31 25 2c 60 64  6f 5f 79 31 25 0a 50 4c  |o_x1%,`do_y1%.PL|
00007d40  4f 54 20 26 41 36 2c 60  78 25 2c 60 79 25 0a 45  |OT &A6,`x%,`y%.E|
00007d50  4e 44 50 52 4f 43 0a 44  45 46 20 50 52 4f 43 72  |NDPROC.DEF PROCr|
00007d60  75 62 62 5f 73 65 63 74  0a 50 4c 4f 54 20 34 2c  |ubb_sect.PLOT 4,|
00007d70  60 64 6f 5f 78 30 25 2c  60 64 6f 5f 79 30 25 0a  |`do_x0%,`do_y0%.|
00007d80  50 4c 4f 54 20 34 2c 60  64 6f 5f 78 31 25 2c 60  |PLOT 4,`do_x1%,`|
00007d90  64 6f 5f 79 31 25 0a 50  4c 4f 54 20 26 42 36 2c  |do_y1%.PLOT &B6,|
00007da0  60 78 25 2c 60 79 25 0a  45 4e 44 50 52 4f 43 0a  |`x%,`y%.ENDPROC.|
00007db0  44 45 46 20 50 52 4f 43  72 75 62 62 5f 63 75 72  |DEF PROCrubb_cur|
00007dc0  73 0a 50 4c 4f 54 20 34  2c 60 64 6f 5f 78 30 25  |s.PLOT 4,`do_x0%|
00007dd0  2c 60 64 6f 5f 79 30 25  0a 50 4c 4f 54 20 26 36  |,`do_y0%.PLOT &6|
00007de0  32 2c 31 36 2c 33 32 0a  45 4e 44 50 52 4f 43 0a  |2,16,32.ENDPROC.|
00007df0  44 45 46 20 50 52 4f 43  6d 6f 76 65 5f 72 65 63  |DEF PROCmove_rec|
00007e00  74 0a 50 4c 4f 54 20 34  2c 60 78 25 2c 60 79 25  |t.PLOT 4,`x%,`y%|
00007e10  0a 50 4c 4f 54 20 36 2c  60 78 25 2c 60 79 25 2b  |.PLOT 6,`x%,`y%+|
00007e20  41 42 53 28 60 64 6f 5f  79 30 25 2d 60 64 6f 5f  |ABS(`do_y0%-`do_|
00007e30  79 31 25 29 0a 50 4c 4f  54 20 36 2c 60 78 25 2b  |y1%).PLOT 6,`x%+|
00007e40  41 42 53 28 60 64 6f 5f  78 31 25 2d 60 64 6f 5f  |ABS(`do_x1%-`do_|
00007e50  78 30 25 29 2c 60 79 25  2b 41 42 53 28 60 64 6f  |x0%),`y%+ABS(`do|
00007e60  5f 79 30 25 2d 60 64 6f  5f 79 31 25 29 0a 50 4c  |_y0%-`do_y1%).PL|
00007e70  4f 54 20 36 2c 60 78 25  2b 41 42 53 28 60 64 6f  |OT 6,`x%+ABS(`do|
00007e80  5f 78 31 25 2d 60 64 6f  5f 78 30 25 29 2c 60 79  |_x1%-`do_x0%),`y|
00007e90  25 0a 50 4c 4f 54 20 36  2c 60 78 25 2c 60 79 25  |%.PLOT 6,`x%,`y%|
00007ea0  0a 45 4e 44 50 52 4f 43  0a 52 45 4d 20 2a 2a 2a  |.ENDPROC.REM ***|
00007eb0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00007ee0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 0a 44 45 46 20 50  |**********.DEF P|
00007ef0  52 4f 43 64 72 61 77 5f  72 65 63 74 0a 49 46 20  |ROCdraw_rect.IF |
00007f00  60 6d 5f 66 69 6c 6c 20  54 48 45 4e 0a 52 45 43  |`m_fill THEN.REC|
00007f10  54 41 4e 47 4c 45 20 46  49 4c 4c 20 60 78 25 2c  |TANGLE FILL `x%,|
00007f20  60 79 25 2c 60 64 6f 5f  78 30 25 2d 60 78 25 2c  |`y%,`do_x0%-`x%,|
00007f30  60 64 6f 5f 79 30 25 2d  60 79 25 0a 45 4c 53 45  |`do_y0%-`y%.ELSE|
00007f40  0a 52 45 43 54 41 4e 47  4c 45 20 60 78 25 2c 60  |.RECTANGLE `x%,`|
00007f50  79 25 2c 60 64 6f 5f 78  30 25 2d 60 78 25 2c 60  |y%,`do_x0%-`x%,`|
00007f60  64 6f 5f 79 30 25 2d 60  79 25 0a 45 4e 44 49 46  |do_y0%-`y%.ENDIF|
00007f70  0a 45 4e 44 50 52 4f 43  0a 44 45 46 20 50 52 4f  |.ENDPROC.DEF PRO|
00007f80  43 64 72 61 77 5f 73 71  72 65 0a 49 46 20 28 41  |Cdraw_sqre.IF (A|
00007f90  42 53 28 60 64 6f 5f 78  30 25 2d 60 78 25 29 29  |BS(`do_x0%-`x%))|
00007fa0  20 3e 20 28 41 42 53 28  60 64 6f 5f 79 30 25 2d  | > (ABS(`do_y0%-|
00007fb0  60 79 25 29 29 20 54 48  45 4e 0a 49 46 20 60 64  |`y%)) THEN.IF `d|
00007fc0  6f 5f 79 30 25 20 3e 20  60 79 25 20 54 48 45 4e  |o_y0% > `y% THEN|
00007fd0  0a 60 79 25 20 3d 20 60  64 6f 5f 79 30 25 20 2d  |.`y% = `do_y0% -|
00007fe0  20 28 41 42 53 28 60 64  6f 5f 78 30 25 2d 60 78  | (ABS(`do_x0%-`x|
00007ff0  25 29 29 0a 45 4c 53 45  0a 60 79 25 20 3d 20 60  |%)).ELSE.`y% = `|
00008000  64 6f 5f 79 30 25 20 2b  20 28 41 42 53 28 60 64  |do_y0% + (ABS(`d|
00008010  6f 5f 78 30 25 2d 60 78  25 29 29 0a 45 4e 44 49  |o_x0%-`x%)).ENDI|
00008020  46 0a 45 4c 53 45 0a 49  46 20 60 64 6f 5f 78 30  |F.ELSE.IF `do_x0|
00008030  25 20 3e 20 60 78 25 20  54 48 45 4e 0a 60 78 25  |% > `x% THEN.`x%|
00008040  20 3d 20 60 64 6f 5f 78  30 25 20 2d 20 28 41 42  | = `do_x0% - (AB|
00008050  53 28 60 64 6f 5f 79 30  25 2d 60 79 25 29 29 0a  |S(`do_y0%-`y%)).|
00008060  45 4c 53 45 0a 60 78 25  20 3d 20 60 64 6f 5f 78  |ELSE.`x% = `do_x|
00008070  30 25 20 2b 20 28 41 42  53 28 60 64 6f 5f 79 30  |0% + (ABS(`do_y0|
00008080  25 2d 60 79 25 29 29 0a  45 4e 44 49 46 0a 45 4e  |%-`y%)).ENDIF.EN|
00008090  44 49 46 0a 49 46 20 60  6d 5f 6f 70 65 6e 20 54  |DIF.IF `m_open T|
000080a0  48 45 4e 0a 52 45 43 54  41 4e 47 4c 45 20 60 78  |HEN.RECTANGLE `x|
000080b0  25 2c 60 79 25 2c 60 64  6f 5f 78 30 25 2d 60 78  |%,`y%,`do_x0%-`x|
000080c0  25 2c 60 64 6f 5f 79 30  25 2d 60 79 25 0a 45 4c  |%,`do_y0%-`y%.EL|
000080d0  53 45 0a 52 45 43 54 41  4e 47 4c 45 20 46 49 4c  |SE.RECTANGLE FIL|
000080e0  4c 20 60 78 25 2c 60 79  25 2c 60 64 6f 5f 78 30  |L `x%,`y%,`do_x0|
000080f0  25 2d 60 78 25 2c 60 64  6f 5f 79 30 25 2d 60 79  |%-`x%,`do_y0%-`y|
00008100  25 0a 45 4e 44 49 46 0a  45 4e 44 50 52 4f 43 0a  |%.ENDIF.ENDPROC.|
00008110  44 45 46 20 50 52 4f 43  64 72 61 77 5f 70 61 72  |DEF PROCdraw_par|
00008120  61 0a 49 46 20 60 6d 5f  6f 70 65 6e 20 54 48 45  |a.IF `m_open THE|
00008130  4e 0a 50 4c 4f 54 20 34  2c 60 64 6f 5f 78 30 25  |N.PLOT 4,`do_x0%|
00008140  2c 60 64 6f 5f 79 30 25  0a 50 4c 4f 54 20 35 2c  |,`do_y0%.PLOT 5,|
00008150  60 64 6f 5f 78 31 25 2c  60 64 6f 5f 79 31 25 0a  |`do_x1%,`do_y1%.|
00008160  50 4c 4f 54 20 35 2c 60  78 25 2c 60 79 25 0a 50  |PLOT 5,`x%,`y%.P|
00008170  4c 4f 54 20 35 2c 60 64  6f 5f 78 30 25 2b 28 60  |LOT 5,`do_x0%+(`|
00008180  78 25 2d 60 64 6f 5f 78  31 25 29 2c 60 64 6f 5f  |x%-`do_x1%),`do_|
00008190  79 30 25 2b 28 60 79 25  2d 60 64 6f 5f 79 31 25  |y0%+(`y%-`do_y1%|
000081a0  29 0a 50 4c 4f 54 20 35  2c 60 64 6f 5f 78 30 25  |).PLOT 5,`do_x0%|
000081b0  2c 60 64 6f 5f 79 30 25  0a 45 4c 53 45 0a 50 4c  |,`do_y0%.ELSE.PL|
000081c0  4f 54 20 34 2c 60 64 6f  5f 78 30 25 2c 60 64 6f  |OT 4,`do_x0%,`do|
000081d0  5f 79 30 25 0a 50 4c 4f  54 20 34 2c 60 64 6f 5f  |_y0%.PLOT 4,`do_|
000081e0  78 31 25 2c 60 64 6f 5f  79 31 25 0a 50 4c 4f 54  |x1%,`do_y1%.PLOT|
000081f0  20 26 37 35 2c 60 78 25  2c 60 79 25 0a 45 4e 44  | &75,`x%,`y%.END|
00008200  49 46 0a 45 4e 44 50 52  4f 43 0a 44 45 46 20 50  |IF.ENDPROC.DEF P|
00008210  52 4f 43 64 72 61 77 5f  74 72 69 61 0a 49 46 20  |ROCdraw_tria.IF |
00008220  60 6d 5f 6f 70 65 6e 20  54 48 45 4e 0a 50 4c 4f  |`m_open THEN.PLO|
00008230  54 20 34 2c 60 64 6f 5f  78 30 25 2c 60 64 6f 5f  |T 4,`do_x0%,`do_|
00008240  79 30 25 0a 50 4c 4f 54  20 35 2c 60 64 6f 5f 78  |y0%.PLOT 5,`do_x|
00008250  31 25 2c 60 64 6f 5f 79  31 25 0a 50 4c 4f 54 20  |1%,`do_y1%.PLOT |
00008260  35 2c 60 78 25 2c 60 79  25 0a 50 4c 4f 54 20 35  |5,`x%,`y%.PLOT 5|
00008270  2c 60 64 6f 5f 78 30 25  2c 60 64 6f 5f 79 30 25  |,`do_x0%,`do_y0%|
00008280  0a 45 4c 53 45 0a 50 4c  4f 54 20 34 2c 60 64 6f  |.ELSE.PLOT 4,`do|
00008290  5f 78 30 25 2c 60 64 6f  5f 79 30 25 0a 50 4c 4f  |_x0%,`do_y0%.PLO|
000082a0  54 20 34 2c 60 64 6f 5f  78 31 25 2c 60 64 6f 5f  |T 4,`do_x1%,`do_|
000082b0  79 31 25 0a 50 4c 4f 54  20 26 35 35 2c 60 78 25  |y1%.PLOT &55,`x%|
000082c0  2c 60 79 25 0a 45 4e 44  49 46 0a 45 4e 44 50 52  |,`y%.ENDIF.ENDPR|
000082d0  4f 43 0a 44 45 46 20 50  52 4f 43 64 72 61 77 5f  |OC.DEF PROCdraw_|
000082e0  63 69 72 63 0a 50 4c 4f  54 20 34 2c 60 64 6f 5f  |circ.PLOT 4,`do_|
000082f0  78 30 25 2c 60 64 6f 5f  79 30 25 0a 49 46 20 60  |x0%,`do_y0%.IF `|
00008300  6d 5f 6f 70 65 6e 20 54  48 45 4e 0a 50 4c 4f 54  |m_open THEN.PLOT|
00008310  20 26 39 35 2c 60 78 25  2c 60 79 25 0a 45 4c 53  | &95,`x%,`y%.ELS|
00008320  45 0a 50 4c 4f 54 20 26  39 44 2c 60 78 25 2c 60  |E.PLOT &9D,`x%,`|
00008330  79 25 0a 45 4e 44 49 46  0a 45 4e 44 50 52 4f 43  |y%.ENDIF.ENDPROC|
00008340  0a 44 45 46 20 50 52 4f  43 64 72 61 77 5f 65 6c  |.DEF PROCdraw_el|
00008350  69 70 0a 50 4c 4f 54 20  34 2c 60 64 6f 5f 78 30  |ip.PLOT 4,`do_x0|
00008360  25 2c 60 64 6f 5f 79 30  25 0a 50 4c 4f 54 20 34  |%,`do_y0%.PLOT 4|
00008370  2c 60 64 6f 5f 78 31 25  2c 60 64 6f 5f 79 31 25  |,`do_x1%,`do_y1%|
00008380  0a 49 46 20 60 6d 5f 6f  70 65 6e 20 54 48 45 4e  |.IF `m_open THEN|
00008390  0a 50 4c 4f 54 20 26 43  35 2c 60 78 25 2c 60 79  |.PLOT &C5,`x%,`y|
000083a0  25 0a 45 4c 53 45 0a 50  4c 4f 54 20 26 43 44 2c  |%.ELSE.PLOT &CD,|
000083b0  60 78 25 2c 60 79 25 0a  45 4e 44 49 46 0a 45 4e  |`x%,`y%.ENDIF.EN|
000083c0  44 50 52 4f 43 0a 44 45  46 20 50 52 4f 43 64 72  |DPROC.DEF PROCdr|
000083d0  61 77 5f 73 65 67 6d 0a  50 4c 4f 54 20 34 2c 60  |aw_segm.PLOT 4,`|
000083e0  64 6f 5f 78 30 25 2c 60  64 6f 5f 79 30 25 0a 49  |do_x0%,`do_y0%.I|
000083f0  46 20 60 6d 5f 6f 70 65  6e 20 54 48 45 4e 0a 50  |F `m_open THEN.P|
00008400  4c 4f 54 20 34 2c 60 64  6f 5f 78 31 25 2c 60 64  |LOT 4,`do_x1%,`d|
00008410  6f 5f 79 31 25 0a 50 4c  4f 54 20 26 41 44 2c 60  |o_y1%.PLOT &AD,`|
00008420  78 25 2c 60 79 25 0a 45  4c 53 45 0a 50 4c 4f 54  |x%,`y%.ELSE.PLOT|
00008430  20 34 2c 60 64 6f 5f 78  31 25 2c 60 64 6f 5f 79  | 4,`do_x1%,`do_y|
00008440  31 25 0a 50 4c 4f 54 20  26 41 44 2c 60 78 25 2c  |1%.PLOT &AD,`x%,|
00008450  60 79 25 0a 45 4e 44 49  46 0a 45 4e 44 50 52 4f  |`y%.ENDIF.ENDPRO|
00008460  43 0a 44 45 46 20 50 52  4f 43 64 72 61 77 5f 61  |C.DEF PROCdraw_a|
00008470  72 63 0a 50 4c 4f 54 20  34 2c 60 64 6f 5f 78 30  |rc.PLOT 4,`do_x0|
00008480  25 2c 60 64 6f 5f 79 30  25 0a 50 4c 4f 54 20 34  |%,`do_y0%.PLOT 4|
00008490  2c 60 64 6f 5f 78 31 25  2c 60 64 6f 5f 79 31 25  |,`do_x1%,`do_y1%|
000084a0  0a 50 4c 4f 54 20 26 41  35 2c 60 78 25 2c 60 79  |.PLOT &A5,`x%,`y|
000084b0  25 0a 45 4e 44 50 52 4f  43 0a 44 45 46 20 50 52  |%.ENDPROC.DEF PR|
000084c0  4f 43 64 72 61 77 5f 73  65 63 74 0a 50 4c 4f 54  |OCdraw_sect.PLOT|
000084d0  20 34 2c 60 64 6f 5f 78  30 25 2c 60 64 6f 5f 79  | 4,`do_x0%,`do_y|
000084e0  30 25 0a 49 46 20 60 6d  5f 6f 70 65 6e 20 54 48  |0%.IF `m_open TH|
000084f0  45 4e 0a 50 4c 4f 54 20  34 2c 60 64 6f 5f 78 31  |EN.PLOT 4,`do_x1|
00008500  25 2c 60 64 6f 5f 79 31  25 0a 50 4c 4f 54 20 26  |%,`do_y1%.PLOT &|
00008510  42 35 2c 60 78 25 2c 60  79 25 0a 45 4c 53 45 0a  |B5,`x%,`y%.ELSE.|
00008520  50 4c 4f 54 20 34 2c 60  64 6f 5f 78 31 25 2c 60  |PLOT 4,`do_x1%,`|
00008530  64 6f 5f 79 31 25 0a 50  4c 4f 54 20 26 42 35 2c  |do_y1%.PLOT &B5,|
00008540  60 78 25 2c 60 79 25 0a  45 4e 44 49 46 0a 45 4e  |`x%,`y%.ENDIF.EN|
00008550  44 50 52 4f 43 0a 44 45  46 20 50 52 4f 43 64 72  |DPROC.DEF PROCdr|
00008560  61 77 5f 63 6f 70 79 0a  52 45 4d 20 2a 53 43 48  |aw_copy.REM *SCH|
00008570  4f 4f 53 45 20 31 0a 4d  4f 56 45 20 60 78 25 2c  |OOSE 1.MOVE `x%,|
00008580  60 79 25 0a 53 59 53 20  26 32 45 2c 32 35 36 2b  |`y%.SYS &2E,256+|
00008590  32 38 2c 73 70 74 5f 61  72 65 61 2c 22 31 22 0a  |28,spt_area,"1".|
000085a0  45 4e 44 50 52 4f 43 0a  44 45 46 20 50 52 4f 43  |ENDPROC.DEF PROC|
000085b0  64 72 61 77 5f 6d 6f 76  65 0a 47 43 4f 4c 20 31  |draw_move.GCOL 1|
000085c0  33 35 0a 50 4c 4f 54 20  34 2c 60 64 6f 5f 78 30  |35.PLOT 4,`do_x0|
000085d0  25 2c 60 64 6f 5f 79 30  25 0a 50 4c 4f 54 20 34  |%,`do_y0%.PLOT 4|
000085e0  2c 60 64 6f 5f 78 31 25  2c 60 64 6f 5f 79 31 25  |,`do_x1%,`do_y1%|
000085f0  0a 50 4c 4f 54 20 26 42  44 2c 60 78 25 2c 60 79  |.PLOT &BD,`x%,`y|
00008600  25 0a 45 4e 44 50 52 4f  43 0a 44 41 54 41 20 22  |%.ENDPROC.DATA "|
00008610  57 45 4c 43 4f 4d 45 20  50 41 49 4e 54 20 42 79  |WELCOME PAINT By|
00008620  20 48 2e 44 6f 75 67 6c  61 73 2d 53 6d 69 74 68  | H.Douglas-Smith|
00008630  22 0a 44 41 54 41 20 22  48 65 6c 70 20 69 73 20  |".DATA "Help is |
00008640  6e 6f 74 20 61 76 61 69  6c 61 62 6c 65 20 6f 6e  |not available on|
00008650  20 35 31 32 6b 20 6d 61  63 68 69 6e 65 22 0a 44  | 512k machine".D|
00008660  41 54 41 20 22 20 22 0a  44 41 54 41 20 22 20 22  |ATA " ".DATA " "|
00008670  0a 44 41 54 41 20 22 20  22 0a 44 41 54 41 20 22  |.DATA " ".DATA "|
00008680  20 22 0a 44 41 54 41 20  22 20 22 0a 44 41 54 41  | ".DATA " ".DATA|
00008690  20 22 22 0a 52 45 4d 20  63 6f 6e 74 61 69 6e 20  | "".REM contain |
000086a0  32 38 20 69 63 6f 6e 73  20 28 30 2d 32 37 29 0a  |28 icons (0-27).|
000086b0  44 45 46 20 50 52 4f 43  63 72 65 61 74 65 5f 68  |DEF PROCcreate_h|
000086c0  65 6c 70 0a 4c 4f 43 41  4c 20 61 24 2c 62 24 2c  |elp.LOCAL a$,b$,|
000086d0  61 25 2c 62 25 2c 63 25  0a 6e 25 20 3d 20 30 0a  |a%,b%,c%.n% = 0.|
000086e0  68 70 20 3d 20 60 68 65  6c 70 0a 52 45 50 45 41  |hp = `help.REPEA|
000086f0  54 0a 46 4f 52 20 61 25  20 3d 20 31 20 54 4f 20  |T.FOR a% = 1 TO |
00008700  37 0a 52 45 41 44 20 61  24 0a 49 46 20 4c 45 4e  |7.READ a$.IF LEN|
00008710  20 61 24 3c 34 34 20 54  48 45 4e 0a 52 45 50 45  | a$<44 THEN.REPE|
00008720  41 54 0a 61 24 20 3d 20  22 20 22 2b 61 24 2b 22  |AT.a$ = " "+a$+"|
00008730  20 22 0a 55 4e 54 49 4c  20 4c 45 4e 20 61 24 20  | ".UNTIL LEN a$ |
00008740  3e 3d 20 34 34 0a 45 4e  44 49 46 0a 61 24 20 3d  |>= 44.ENDIF.a$ =|
00008750  20 4c 45 46 54 24 28 61  24 2c 34 34 29 0a 46 4f  | LEFT$(a$,44).FO|
00008760  52 20 62 25 20 3d 20 30  20 54 4f 20 33 0a 21 68  |R b% = 0 TO 3.!h|
00008770  70 20 3d 20 77 69 6e 64  6f 77 73 28 33 29 0a 68  |p = windows(3).h|
00008780  70 21 34 3d 20 62 25 2a  31 38 30 0a 68 70 21 38  |p!4= b%*180.hp!8|
00008790  3d 20 30 2d 61 25 2a 34  30 0a 68 70 21 31 32 20  |= 0-a%*40.hp!12 |
000087a0  3d 20 62 25 2a 31 38 30  2b 31 38 30 0a 68 70 21  |= b%*180+180.hp!|
000087b0  31 36 20 3d 20 30 2d 28  61 25 2a 34 30 2d 34 30  |16 = 0-(a%*40-40|
000087c0  29 0a 68 70 21 32 30 20  3d 20 26 33 31 0a 68 70  |).hp!20 = &31.hp|
000087d0  3f 32 33 20 3d 20 60 69  62 2a 31 36 2b 60 69 66  |?23 = `ib*16+`if|
000087e0  0a 24 28 68 70 2b 32 34  29 20 3d 20 4d 49 44 24  |.$(hp+24) = MID$|
000087f0  28 61 24 2c 62 25 2a 31  31 2b 31 2c 31 31 29 0a  |(a$,b%*11+1,11).|
00008800  68 70 20 3d 20 68 70 20  2b 20 33 36 0a 4e 45 58  |hp = hp + 36.NEX|
00008810  54 20 62 25 0a 4e 45 58  54 20 61 25 0a 52 45 41  |T b%.NEXT a%.REA|
00008820  44 20 62 24 0a 55 4e 54  49 4c 20 62 24 20 3d 20  |D b$.UNTIL b$ = |
00008830  22 22 0a 68 70 20 3d 20  60 68 65 6c 70 0a 68 65  |"".hp = `help.he|
00008840  6c 70 28 30 2c 32 29 20  3d 20 68 70 0a 46 4f 52  |lp(0,2) = hp.FOR|
00008850  20 61 25 20 3d 20 31 20  54 4f 20 35 0a 46 4f 52  | a% = 1 TO 5.FOR|
00008860  20 62 25 20 3d 20 33 20  54 4f 20 60 73 75 62 5f  | b% = 3 TO `sub_|
00008870  6d 65 6e 28 61 25 29 2d  31 0a 68 65 6c 70 28 61  |men(a%)-1.help(a|
00008880  25 2c 62 25 29 20 3d 20  68 70 0a 4e 45 58 54 20  |%,b%) = hp.NEXT |
00008890  62 25 0a 4e 45 58 54 20  61 25 0a 45 4e 44 50 52  |b%.NEXT a%.ENDPR|
000088a0  4f 43 0a 44 45 46 20 50  52 4f 43 75 70 64 61 74  |OC.DEF PROCupdat|
000088b0  65 5f 68 65 6c 70 0a 50  52 4f 43 67 65 74 5f 77  |e_help.PROCget_w|
000088c0  69 6e 64 6f 77 5f 73 74  61 74 65 28 77 69 6e 64  |indow_state(wind|
000088d0  6f 77 73 28 33 29 29 0a  49 46 20 28 77 69 6d 70  |ows(3)).IF (wimp|
000088e0  3f 33 34 20 41 4e 44 20  31 29 20 3d 20 31 20 54  |?34 AND 1) = 1 T|
000088f0  48 45 4e 0a 50 52 4f 43  63 6c 6f 73 65 5f 77 69  |HEN.PROCclose_wi|
00008900  6e 64 6f 77 28 77 69 6e  64 6f 77 73 28 33 29 29  |ndow(windows(3))|
00008910  0a 50 52 4f 43 74 65 73  74 5f 6f 70 65 6e 28 77  |.PROCtest_open(w|
00008920  69 6e 64 6f 77 73 28 33  29 29 0a 45 4e 44 49 46  |indows(3)).ENDIF|
00008930  0a 45 4e 44 50 52 4f 43  0a 44 45 46 20 50 52 4f  |.ENDPROC.DEF PRO|
00008940  43 73 65 6c 65 63 74 5f  63 6f 6c 6f 75 72 28 69  |Cselect_colour(i|
00008950  63 6f 6e 25 29 0a 49 46  20 69 63 6f 6e 25 3e 31  |con%).IF icon%>1|
00008960  39 20 54 48 45 4e 20 45  4e 44 50 52 4f 43 0a 49  |9 THEN ENDPROC.I|
00008970  46 20 69 63 6f 6e 25 20  3c 31 36 20 54 48 45 4e  |F icon% <16 THEN|
00008980  0a 60 63 6f 6c 25 20 3d  20 69 63 6f 6e 25 0a 47  |.`col% = icon%.G|
00008990  43 4f 4c 20 60 63 6f 6c  25 0a 52 45 43 54 41 4e  |COL `col%.RECTAN|
000089a0  47 4c 45 20 46 49 4c 4c  20 34 36 2c 36 39 34 2c  |GLE FILL 46,694,|
000089b0  36 34 2c 36 34 0a 53 59  53 20 26 32 45 2c 31 36  |64,64.SYS &2E,16|
000089c0  2c 30 2c 22 63 75 72 63  6f 6c 22 2c 30 2c 34 36  |,0,"curcol",0,46|
000089d0  2c 36 39 34 2c 31 30 30  2c 37 35 38 0a 50 52 4f  |,694,100,758.PRO|
000089e0  43 73 65 74 5f 69 63 6f  6e 5f 73 74 61 74 65 28  |Cset_icon_state(|
000089f0  77 69 6e 64 6f 77 73 28  36 29 2c 32 30 2c 26 33  |windows(6),20,&3|
00008a00  30 33 45 2c 60 69 66 2c  60 63 6f 6c 25 2b 26 38  |03E,`if,`col%+&8|
00008a10  30 2c 2d 31 29 0a 50 52  4f 43 67 65 74 5f 77 69  |0,-1).PROCget_wi|
00008a20  6e 64 6f 77 5f 73 74 61  74 65 28 77 69 6e 64 6f  |ndow_state(windo|
00008a30  77 73 28 37 29 29 20 3a  52 45 4d 20 70 61 6c 65  |ws(7)) :REM pale|
00008a40  74 74 65 0a 49 46 20 28  77 69 6d 70 3f 33 34 20  |tte.IF (wimp?34 |
00008a50  41 4e 44 20 33 29 3d 33  20 50 52 4f 43 70 61 6c  |AND 3)=3 PROCpal|
00008a60  5f 75 70 64 0a 47 43 4f  4c 20 60 73 74 79 6c 65  |_upd.GCOL `style|
00008a70  25 2c 60 63 6f 6c 25 0a  43 4f 4c 4f 55 52 20 60  |%,`col%.COLOUR `|
00008a80  63 6f 6c 25 0a 45 4c 53  45 0a 60 70 74 72 6e 20  |col%.ELSE.`ptrn |
00008a90  3d 20 69 63 6f 6e 25 2d  31 36 0a 60 63 6f 6c 25  |= icon%-16.`col%|
00008aa0  20 3d 20 31 37 0a 50 52  4f 43 65 63 66 28 60 70  | = 17.PROCecf(`p|
00008ab0  74 72 6e 29 0a 47 43 4f  4c 20 38 30 2c 30 0a 52  |trn).GCOL 80,0.R|
00008ac0  45 43 54 41 4e 47 4c 45  20 46 49 4c 4c 20 34 36  |ECTANGLE FILL 46|
00008ad0  2c 36 39 34 2c 36 34 2c  36 34 0a 53 59 53 20 26  |,694,64,64.SYS &|
00008ae0  32 45 2c 31 36 2c 30 2c  22 63 75 72 63 6f 6c 22  |2E,16,0,"curcol"|
00008af0  2c 30 2c 34 36 2c 36 39  34 2c 31 30 30 2c 37 35  |,0,46,694,100,75|
00008b00  38 0a 50 52 4f 43 75 70  64 5f 65 63 66 0a 47 43  |8.PROCupd_ecf.GC|
00008b10  4f 4c 38 30 2b 60 73 74  79 6c 65 25 2c 30 0a 56  |OL80+`style%,0.V|
00008b20  44 55 32 36 0a 50 4c 4f  54 20 26 38 35 2c 38 34  |DU26.PLOT &85,84|
00008b30  2c 37 34 30 0a 50 52 4f  43 73 68 6f 77 5f 70 61  |,740.PROCshow_pa|
00008b40  74 74 0a 45 4e 44 49 46  0a 45 4e 44 50 52 4f 43  |tt.ENDIF.ENDPROC|
00008b50  0a 52 45 4d 20 2a 20 50  61 6c 65 74 74 65 20 57  |.REM * Palette W|
00008b60  69 6e 64 6f 77 20 55 70  64 61 74 65 20 2a 0a 44  |indow Update *.D|
00008b70  45 46 20 50 52 4f 43 70  61 6c 5f 75 70 64 0a 47  |EF PROCpal_upd.G|
00008b80  43 4f 4c 20 37 0a 43 49  52 43 4c 45 20 46 49 4c  |COL 7.CIRCLE FIL|
00008b90  4c 20 35 30 30 2c 35 30  30 2c 31 35 30 0a 52 45  |L 500,500,150.RE|
00008ba0  43 54 41 4e 47 4c 45 20  46 49 4c 4c 20 33 30 32  |CTANGLE FILL 302|
00008bb0  2c 33 34 34 2c 31 36 2c  33 31 32 0a 47 43 4f 4c  |,344,16,312.GCOL|
00008bc0  20 30 0a 43 49 52 43 4c  45 20 35 30 30 2c 35 30  | 0.CIRCLE 500,50|
00008bd0  30 2c 31 35 30 0a 47 43  4f 4c 20 30 0a 43 49 52  |0,150.GCOL 0.CIR|
00008be0  43 4c 45 20 35 30 30 2c  35 30 30 2c 31 35 30 0a  |CLE 500,500,150.|
00008bf0  52 45 43 54 41 4e 47 4c  45 20 33 30 30 2c 33 34  |RECTANGLE 300,34|
00008c00  30 2c 32 30 2c 33 32 30  0a 49 46 20 60 63 6f 6c  |0,20,320.IF `col|
00008c10  25 20 3e 20 31 35 20 54  48 45 4e 20 45 4e 44 50  |% > 15 THEN ENDP|
00008c20  52 4f 43 0a 50 52 4f 43  72 67 62 5f 68 73 76 28  |ROC.PROCrgb_hsv(|
00008c30  60 63 6f 6c 25 29 0a 4d  4f 56 45 20 35 30 30 2c  |`col%).MOVE 500,|
00008c40  35 30 30 0a 73 31 20 3d  20 73 2a 31 35 30 0a 76  |500.s1 = s*150.v|
00008c50  31 20 3d 20 76 2a 33 30  30 0a 44 52 41 57 20 28  |1 = v*300.DRAW (|
00008c60  73 31 2a 43 4f 53 28 52  41 44 28 68 29 29 29 2b  |s1*COS(RAD(h)))+|
00008c70  35 30 30 2c 28 73 31 2a  53 49 4e 28 52 41 44 28  |500,(s1*SIN(RAD(|
00008c80  68 29 29 29 2b 35 30 30  0a 4d 4f 56 45 20 33 30  |h)))+500.MOVE 30|
00008c90  32 2c 33 35 30 2b 76 31  0a 44 52 41 57 20 33 31  |2,350+v1.DRAW 31|
00008ca0  38 2c 33 35 30 2b 76 31  0a 45 4e 44 50 52 4f 43  |8,350+v1.ENDPROC|
00008cb0  0a 52 45 4d 20 2a 20 50  41 4c 45 54 54 45 20 55  |.REM * PALETTE U|
00008cc0  50 44 41 54 45 2a 0a 44  45 46 20 50 52 4f 43 70  |PDATE*.DEF PROCp|
00008cd0  61 6c 65 74 74 65 0a 49  46 20 60 63 6f 6c 25 20  |alette.IF `col% |
00008ce0  3e 20 31 35 20 54 48 45  4e 20 45 4e 44 50 52 4f  |> 15 THEN ENDPRO|
00008cf0  43 0a 50 52 4f 43 72 67  62 5f 68 73 76 28 60 63  |C.PROCrgb_hsv(`c|
00008d00  6f 6c 25 29 3a 52 45 4d  20 63 6f 6e 76 65 72 74  |ol%):REM convert|
00008d10  20 63 6f 6c 6f 75 72 20  70 61 6c 65 74 74 65 20  | colour palette |
00008d20  74 6f 20 48 53 56 0a 47  43 4f 4c 20 37 0a 43 49  |to HSV.GCOL 7.CI|
00008d30  52 43 4c 45 20 46 49 4c  4c 20 35 30 30 2c 35 30  |RCLE FILL 500,50|
00008d40  30 2c 31 35 30 0a 52 45  43 54 41 4e 47 4c 45 20  |0,150.RECTANGLE |
00008d50  46 49 4c 4c 20 33 30 32  2c 33 34 34 2c 31 36 2c  |FILL 302,344,16,|
00008d60  33 31 32 0a 47 43 4f 4c  20 30 0a 43 49 52 43 4c  |312.GCOL 0.CIRCL|
00008d70  45 20 35 30 30 2c 35 30  30 2c 31 35 30 0a 73 31  |E 500,500,150.s1|
00008d80  20 3d 20 73 2a 31 35 30  0a 76 31 20 3d 20 76 2a  | = s*150.v1 = v*|
00008d90  33 30 30 0a 0a 52 45 4d  20 2a 2a 2a 2a 2a 2a 2a  |300..REM *******|
00008da0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00008dd0  2a 2a 2a 2a 2a 2a 2a 2a  0a 52 45 4d 20 60 62 25  |********.REM `b%|
00008de0  20 73 65 65 6d 73 20 74  6f 20 6e 6f 74 20 68 6f  | seems to not ho|
00008df0  6c 64 20 74 68 65 20 63  6f 72 72 65 63 74 20 62  |ld the correct b|
00008e00  75 74 74 6f 6e 20 70 72  65 73 73 65 73 20 61 74  |utton presses at|
00008e10  20 74 68 69 73 20 70 6f  69 6e 74 20 73 69 6e 63  | this point sinc|
00008e20  65 0a 52 45 4d 20 74 68  65 20 6f 6e 6c 79 20 77  |e.REM the only w|
00008e30  61 79 20 74 6f 20 74 72  69 67 67 65 72 20 74 68  |ay to trigger th|
00008e40  69 73 20 69 73 20 74 6f  20 70 72 65 73 73 20 6c  |is is to press l|
00008e50  65 66 74 20 61 6e 64 20  6d 69 64 64 6c 65 20 74  |eft and middle t|
00008e60  6f 67 65 74 68 65 72 0a  52 45 4d 20 2a 2a 2a 2a  |ogether.REM ****|
00008e70  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00008ea0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 0a 0a 49 46 20  |***********..IF |
00008eb0  28 60 62 25 20 41 4e 44  20 34 29 3d 34 20 54 48  |(`b% AND 4)=4 TH|
00008ec0  45 4e 0a 49 46 20 53 51  52 28 28 60 78 25 2d 35  |EN.IF SQR((`x%-5|
00008ed0  30 30 29 5e 32 2b 28 60  79 25 2d 35 30 30 29 5e  |00)^2+(`y%-500)^|
00008ee0  32 29 20 3c 3d 20 31 35  30 20 54 48 45 4e 0a 73  |2) <= 150 THEN.s|
00008ef0  31 20 3d 20 53 51 52 20  28 28 60 78 25 2d 35 30  |1 = SQR ((`x%-50|
00008f00  30 29 5e 32 2b 28 60 79  25 2d 35 30 30 29 5e 32  |0)^2+(`y%-500)^2|
00008f10  29 0a 49 46 20 60 78 25  20 3d 20 35 30 30 20 54  |).IF `x% = 500 T|
00008f20  48 45 4e 0a 68 20 3d 20  30 0a 45 4c 53 45 0a 68  |HEN.h = 0.ELSE.h|
00008f30  20 3d 20 44 45 47 28 41  54 4e 28 28 60 79 25 2d  | = DEG(ATN((`y%-|
00008f40  35 30 30 29 2f 28 60 78  25 2d 35 30 30 29 29 29  |500)/(`x%-500)))|
00008f50  0a 45 4e 44 49 46 0a 49  46 20 68 20 3c 20 30 20  |.ENDIF.IF h < 0 |
00008f60  54 48 45 4e 0a 49 46 20  60 78 25 20 3c 20 35 30  |THEN.IF `x% < 50|
00008f70  30 20 54 48 45 4e 0a 68  20 3d 20 68 20 2b 20 31  |0 THEN.h = h + 1|
00008f80  38 30 0a 45 4c 53 45 0a  68 20 3d 20 68 20 2b 20  |80.ELSE.h = h + |
00008f90  33 36 30 0a 45 4e 44 49  46 0a 45 4c 53 45 0a 49  |360.ENDIF.ELSE.I|
00008fa0  46 20 60 79 25 20 3c 20  35 30 30 20 54 48 45 4e  |F `y% < 500 THEN|
00008fb0  0a 68 20 3d 20 68 20 2b  20 31 38 30 0a 45 4e 44  |.h = h + 180.END|
00008fc0  49 46 0a 45 4e 44 49 46  0a 49 46 20 68 20 3d 20  |IF.ENDIF.IF h = |
00008fd0  39 30 20 68 20 3d 20 39  31 0a 49 46 20 68 20 3d  |90 h = 91.IF h =|
00008fe0  20 31 38 30 20 68 20 3d  20 31 38 31 0a 49 46 20  | 180 h = 181.IF |
00008ff0  68 20 3d 20 32 37 30 20  68 20 3d 20 32 37 31 0a  |h = 270 h = 271.|
00009000  73 20 3d 20 73 31 2f 31  35 30 20 3a 20 76 20 3d  |s = s1/150 : v =|
00009010  20 76 31 2f 33 30 30 0a  50 52 4f 43 68 73 76 5f  | v1/300.PROChsv_|
00009020  72 67 62 0a 60 72 28 60  63 6f 6c 25 29 20 3d 20  |rgb.`r(`col%) = |
00009030  72 2a 32 35 36 20 3a 20  60 67 28 60 63 6f 6c 25  |r*256 : `g(`col%|
00009040  29 20 3d 20 67 2a 32 35  36 20 3a 20 60 62 28 60  |) = g*256 : `b(`|
00009050  63 6f 6c 25 29 20 3d 20  62 2a 32 35 36 0a 56 44  |col%) = b*256.VD|
00009060  55 31 39 2c 60 63 6f 6c  25 2c 31 36 2c 72 2a 32  |U19,`col%,16,r*2|
00009070  35 36 2c 67 2a 32 35 36  2c 62 2a 32 35 36 0a 45  |56,g*256,b*256.E|
00009080  4c 53 45 0a 49 46 20 60  78 25 20 3e 20 33 30 30  |LSE.IF `x% > 300|
00009090  20 41 4e 44 20 60 78 25  20 3c 20 33 32 30 20 41  | AND `x% < 320 A|
000090a0  4e 44 20 60 79 25 20 3e  20 33 35 30 20 41 4e 44  |ND `y% > 350 AND|
000090b0  20 60 79 25 20 3c 20 36  35 30 20 54 48 45 4e 0a  | `y% < 650 THEN.|
000090c0  76 31 20 3d 20 28 60 79  25 2d 33 35 30 29 0a 73  |v1 = (`y%-350).s|
000090d0  20 3d 20 73 31 2f 31 35  30 20 3a 20 76 20 3d 20  | = s1/150 : v = |
000090e0  76 31 2f 33 30 30 0a 50  52 4f 43 68 73 76 5f 72  |v1/300.PROChsv_r|
000090f0  67 62 0a 60 72 28 60 63  6f 6c 25 29 20 3d 20 72  |gb.`r(`col%) = r|
00009100  2a 32 35 36 20 3a 20 60  67 28 60 63 6f 6c 25 29  |*256 : `g(`col%)|
00009110  20 3d 20 67 2a 32 35 36  20 3a 20 60 62 28 60 63  | = g*256 : `b(`c|
00009120  6f 6c 25 29 20 3d 20 62  2a 32 35 36 0a 56 44 55  |ol%) = b*256.VDU|
00009130  31 39 2c 60 63 6f 6c 25  2c 31 36 2c 72 2a 32 35  |19,`col%,16,r*25|
00009140  36 2c 67 2a 32 35 36 2c  62 2a 32 35 36 0a 45 4e  |6,g*256,b*256.EN|
00009150  44 49 46 0a 45 4e 44 49  46 0a 50 52 4f 43 72 67  |DIF.ENDIF.PROCrg|
00009160  62 5f 68 73 76 28 60 63  6f 6c 25 29 0a 76 31 20  |b_hsv(`col%).v1 |
00009170  3d 20 76 2a 33 30 30 20  3a 20 73 31 20 3d 20 73  |= v*300 : s1 = s|
00009180  2a 31 35 30 0a 4d 4f 56  45 20 33 30 32 2c 33 35  |*150.MOVE 302,35|
00009190  30 2b 76 31 0a 44 52 41  57 20 33 31 38 2c 33 35  |0+v1.DRAW 318,35|
000091a0  30 2b 76 31 0a 4d 4f 56  45 20 35 30 30 2c 35 30  |0+v1.MOVE 500,50|
000091b0  30 0a 44 52 41 57 20 28  73 31 2a 43 4f 53 28 52  |0.DRAW (s1*COS(R|
000091c0  41 44 28 68 29 29 29 2b  35 30 30 2c 28 73 31 2a  |AD(h)))+500,(s1*|
000091d0  53 49 4e 28 52 41 44 28  68 29 29 29 2b 35 30 30  |SIN(RAD(h)))+500|
000091e0  0a 45 4e 44 49 46 0a 45  4e 44 50 52 4f 43 0a 52  |.ENDIF.ENDPROC.R|
000091f0  45 4d 20 2a 20 52 47 42  20 54 4f 20 48 53 56 2a  |EM * RGB TO HSV*|
00009200  0a 44 45 46 20 50 52 4f  43 72 67 62 5f 68 73 76  |.DEF PROCrgb_hsv|
00009210  28 63 29 0a 4c 4f 43 41  4c 20 6d 61 78 2c 6d 69  |(c).LOCAL max,mi|
00009220  6e 2c 72 2c 67 2c 62 2c  72 63 2c 67 63 2c 62 63  |n,r,g,b,rc,gc,bc|
00009230  0a 72 20 3d 20 28 60 72  28 63 29 44 49 56 20 31  |.r = (`r(c)DIV 1|
00009240  36 29 2f 31 36 0a 67 20  3d 20 28 60 67 28 63 29  |6)/16.g = (`g(c)|
00009250  44 49 56 20 31 36 29 2f  31 36 0a 62 20 3d 20 28  |DIV 16)/16.b = (|
00009260  60 62 28 63 29 44 49 56  20 31 36 29 2f 31 36 0a  |`b(c)DIV 16)/16.|
00009270  6d 61 78 20 3d 20 30 20  3a 20 6d 69 6e 20 3d 20  |max = 0 : min = |
00009280  31 0a 49 46 20 6d 61 78  20 3c 20 72 20 54 48 45  |1.IF max < r THE|
00009290  4e 20 6d 61 78 20 3d 20  72 0a 49 46 20 6d 69 6e  |N max = r.IF min|
000092a0  20 3e 20 72 20 54 48 45  4e 20 6d 69 6e 20 3d 20  | > r THEN min = |
000092b0  72 0a 49 46 20 6d 61 78  20 3c 20 67 20 54 48 45  |r.IF max < g THE|
000092c0  4e 20 6d 61 78 20 3d 20  67 0a 49 46 20 6d 69 6e  |N max = g.IF min|
000092d0  20 3e 20 67 20 54 48 45  4e 20 6d 69 6e 20 3d 20  | > g THEN min = |
000092e0  67 0a 49 46 20 6d 61 78  20 3c 20 62 20 54 48 45  |g.IF max < b THE|
000092f0  4e 20 6d 61 78 20 3d 20  62 0a 49 46 20 6d 69 6e  |N max = b.IF min|
00009300  20 3e 20 62 20 54 48 45  4e 20 6d 69 6e 20 3d 20  | > b THEN min = |
00009310  62 0a 76 20 3d 20 6d 61  78 0a 49 46 20 6d 61 78  |b.v = max.IF max|
00009320  20 3c 3e 20 30 20 54 48  45 4e 0a 73 20 3d 20 28  | <> 0 THEN.s = (|
00009330  6d 61 78 2d 6d 69 6e 29  2f 6d 61 78 0a 45 4c 53  |max-min)/max.ELS|
00009340  45 0a 73 20 3d 20 30 0a  45 4e 44 49 46 0a 49 46  |E.s = 0.ENDIF.IF|
00009350  20 73 20 3d 20 30 20 54  48 45 4e 0a 68 20 3d 20  | s = 0 THEN.h = |
00009360  30 0a 45 4c 53 45 0a 72  63 20 3d 20 28 6d 61 78  |0.ELSE.rc = (max|
00009370  20 2d 20 72 29 2f 28 6d  61 78 2d 6d 69 6e 29 0a  | - r)/(max-min).|
00009380  67 63 20 3d 20 28 6d 61  78 2d 67 29 2f 28 6d 61  |gc = (max-g)/(ma|
00009390  78 2d 6d 69 6e 29 0a 62  63 20 3d 20 28 6d 61 78  |x-min).bc = (max|
000093a0  2d 62 29 2f 28 6d 61 78  2d 6d 69 6e 29 0a 49 46  |-b)/(max-min).IF|
000093b0  20 72 20 3d 20 6d 61 78  20 54 48 45 4e 0a 68 20  | r = max THEN.h |
000093c0  3d 20 62 63 2d 67 63 0a  45 4c 53 45 0a 49 46 20  |= bc-gc.ELSE.IF |
000093d0  67 20 3d 20 6d 61 78 20  54 48 45 4e 0a 68 20 3d  |g = max THEN.h =|
000093e0  20 32 20 2b 20 72 63 20  2d 20 62 63 0a 45 4c 53  | 2 + rc - bc.ELS|
000093f0  45 0a 49 46 20 62 20 3d  20 6d 61 78 20 54 48 45  |E.IF b = max THE|
00009400  4e 20 68 20 3d 20 34 20  2b 20 67 63 20 2d 20 72  |N h = 4 + gc - r|
00009410  63 0a 45 4e 44 49 46 0a  45 4e 44 49 46 0a 68 20  |c.ENDIF.ENDIF.h |
00009420  3d 20 68 20 2a 20 36 30  0a 49 46 20 68 20 3c 20  |= h * 60.IF h < |
00009430  30 20 54 48 45 4e 20 68  20 3d 20 68 20 2b 20 33  |0 THEN h = h + 3|
00009440  36 30 0a 45 4e 44 49 46  0a 45 4e 44 50 52 4f 43  |60.ENDIF.ENDPROC|
00009450  0a 52 45 4d 20 2a 20 48  53 56 20 54 4f 20 52 47  |.REM * HSV TO RG|
00009460  42 2a 0a 44 45 46 20 50  52 4f 43 68 73 76 5f 72  |B*.DEF PROChsv_r|
00009470  67 62 0a 4c 4f 43 41 4c  20 69 25 2c 66 2c 70 2c  |gb.LOCAL i%,f,p,|
00009480  71 2c 74 0a 49 46 20 73  20 3d 20 30 20 54 48 45  |q,t.IF s = 0 THE|
00009490  4e 0a 72 20 3d 20 76 0a  67 20 3d 20 76 0a 62 20  |N.r = v.g = v.b |
000094a0  3d 20 76 0a 45 4e 44 50  52 4f 43 0a 45 4e 44 49  |= v.ENDPROC.ENDI|
000094b0  46 0a 49 46 20 68 20 3d  20 33 36 30 20 54 48 45  |F.IF h = 360 THE|
000094c0  4e 20 68 20 3d 20 30 0a  69 25 20 3d 20 68 2f 36  |N h = 0.i% = h/6|
000094d0  30 0a 68 3d 20 68 2f 36  30 0a 66 3d 20 68 2d 69  |0.h= h/60.f= h-i|
000094e0  25 0a 70 3d 20 76 2a 28  31 2d 73 29 0a 71 3d 20  |%.p= v*(1-s).q= |
000094f0  76 2a 28 31 2d 28 73 2a  66 29 29 0a 74 3d 20 76  |v*(1-(s*f)).t= v|
00009500  2a 28 31 2d 28 73 2a 28  31 2d 66 29 29 29 0a 43  |*(1-(s*(1-f))).C|
00009510  41 53 45 20 69 25 20 4f  46 0a 57 48 45 4e 20 30  |ASE i% OF.WHEN 0|
00009520  20 3a 20 72 20 3d 20 76  20 3a 20 67 20 3d 20 74  | : r = v : g = t|
00009530  20 3a 20 62 20 3d 20 70  0a 57 48 45 4e 20 31 20  | : b = p.WHEN 1 |
00009540  3a 20 72 20 3d 20 71 20  3a 20 67 20 3d 20 76 20  |: r = q : g = v |
00009550  3a 20 62 20 3d 20 70 0a  57 48 45 4e 20 32 20 3a  |: b = p.WHEN 2 :|
00009560  20 72 20 3d 20 70 20 3a  20 67 20 3d 20 76 20 3a  | r = p : g = v :|
00009570  20 62 20 3d 20 74 0a 57  48 45 4e 20 33 20 3a 20  | b = t.WHEN 3 : |
00009580  72 20 3d 20 70 20 3a 20  67 20 3d 20 71 20 3a 20  |r = p : g = q : |
00009590  62 20 3d 20 76 0a 57 48  45 4e 20 34 20 3a 20 72  |b = v.WHEN 4 : r|
000095a0  20 3d 20 74 20 3a 20 67  20 3d 20 70 20 3a 20 62  | = t : g = p : b|
000095b0  20 3d 20 76 0a 57 48 45  4e 20 35 20 3a 20 72 20  | = v.WHEN 5 : r |
000095c0  3d 20 76 20 3a 20 67 20  3d 20 70 20 3a 20 62 20  |= v : g = p : b |
000095d0  3d 20 71 0a 45 4e 44 43  41 53 45 0a 45 4e 44 50  |= q.ENDCASE.ENDP|
000095e0  52 4f 43 0a 44 45 46 20  50 52 4f 43 65 63 66 28  |ROC.DEF PROCecf(|
000095f0  6e 25 29 0a 56 44 55 20  32 33 2c 32 2c 60 70 28  |n%).VDU 23,2,`p(|
00009600  6e 25 2c 30 29 2b 60 70  28 6e 25 2c 31 29 2a 31  |n%,0)+`p(n%,1)*1|
00009610  36 2c 60 70 28 6e 25 2c  38 29 2b 60 70 28 6e 25  |6,`p(n%,8)+`p(n%|
00009620  2c 39 29 2a 31 36 2c 60  70 28 6e 25 2c 31 36 29  |,9)*16,`p(n%,16)|
00009630  2b 60 70 28 6e 25 2c 31  37 29 2a 31 36 2c 60 70  |+`p(n%,17)*16,`p|
00009640  28 6e 25 2c 32 34 29 2b  60 70 28 6e 25 2c 32 35  |(n%,24)+`p(n%,25|
00009650  29 2a 31 36 2c 60 70 28  6e 25 2c 33 32 29 2b 60  |)*16,`p(n%,32)+`|
00009660  70 28 6e 25 2c 33 33 29  2a 31 36 2c 60 70 28 6e  |p(n%,33)*16,`p(n|
00009670  25 2c 34 30 29 2b 60 70  28 6e 25 2c 34 31 29 2a  |%,40)+`p(n%,41)*|
00009680  31 36 2c 60 70 28 6e 25  2c 34 38 29 2b 60 70 28  |16,`p(n%,48)+`p(|
00009690  6e 25 2c 34 39 29 2a 31  36 2c 60 70 28 6e 25 2c  |n%,49)*16,`p(n%,|
000096a0  35 36 29 2b 60 70 28 6e  25 2c 35 37 29 2a 31 36  |56)+`p(n%,57)*16|
000096b0  0a 56 44 55 20 32 33 2c  33 2c 60 70 28 6e 25 2c  |.VDU 23,3,`p(n%,|
000096c0  32 29 2b 60 70 28 6e 25  2c 33 29 2a 31 36 2c 60  |2)+`p(n%,3)*16,`|
000096d0  70 28 6e 25 2c 31 30 29  2b 60 70 28 6e 25 2c 31  |p(n%,10)+`p(n%,1|
000096e0  31 29 2a 31 36 2c 60 70  28 6e 25 2c 31 38 29 2b  |1)*16,`p(n%,18)+|
000096f0  60 70 28 6e 25 2c 31 39  29 2a 31 36 2c 60 70 28  |`p(n%,19)*16,`p(|
00009700  6e 25 2c 32 36 29 2b 60  70 28 6e 25 2c 32 37 29  |n%,26)+`p(n%,27)|
00009710  2a 31 36 2c 60 70 28 6e  25 2c 33 34 29 2b 60 70  |*16,`p(n%,34)+`p|
00009720  28 6e 25 2c 33 35 29 2a  31 36 2c 60 70 28 6e 25  |(n%,35)*16,`p(n%|
00009730  2c 34 32 29 2b 60 70 28  6e 25 2c 34 33 29 2a 31  |,42)+`p(n%,43)*1|
00009740  36 2c 60 70 28 6e 25 2c  35 30 29 2b 60 70 28 6e  |6,`p(n%,50)+`p(n|
00009750  25 2c 35 31 29 2a 31 36  2c 60 70 28 6e 25 2c 35  |%,51)*16,`p(n%,5|
00009760  38 29 2b 60 70 28 6e 25  2c 35 39 29 2a 31 36 0a  |8)+`p(n%,59)*16.|
00009770  56 44 55 20 32 33 2c 34  2c 60 70 28 6e 25 2c 34  |VDU 23,4,`p(n%,4|
00009780  29 2b 60 70 28 6e 25 2c  35 29 2a 31 36 2c 60 70  |)+`p(n%,5)*16,`p|
00009790  28 6e 25 2c 31 32 29 2b  60 70 28 6e 25 2c 31 33  |(n%,12)+`p(n%,13|
000097a0  29 2a 31 36 2c 60 70 28  6e 25 2c 32 30 29 2b 60  |)*16,`p(n%,20)+`|
000097b0  70 28 6e 25 2c 32 31 29  2a 31 36 2c 60 70 28 6e  |p(n%,21)*16,`p(n|
000097c0  25 2c 32 38 29 2b 60 70  28 6e 25 2c 32 39 29 2a  |%,28)+`p(n%,29)*|
000097d0  31 36 2c 60 70 28 6e 25  2c 33 36 29 2b 60 70 28  |16,`p(n%,36)+`p(|
000097e0  6e 25 2c 33 37 29 2a 31  36 2c 60 70 28 6e 25 2c  |n%,37)*16,`p(n%,|
000097f0  34 34 29 2b 60 70 28 6e  25 2c 34 35 29 2a 31 36  |44)+`p(n%,45)*16|
00009800  2c 60 70 28 6e 25 2c 35  32 29 2b 60 70 28 6e 25  |,`p(n%,52)+`p(n%|
00009810  2c 35 33 29 2a 31 36 2c  60 70 28 6e 25 2c 36 30  |,53)*16,`p(n%,60|
00009820  29 2b 60 70 28 6e 25 2c  36 31 29 2a 31 36 0a 56  |)+`p(n%,61)*16.V|
00009830  44 55 20 32 33 2c 35 2c  60 70 28 6e 25 2c 36 29  |DU 23,5,`p(n%,6)|
00009840  2b 60 70 28 6e 25 2c 37  29 2a 31 36 2c 60 70 28  |+`p(n%,7)*16,`p(|
00009850  6e 25 2c 31 34 29 2b 60  70 28 6e 25 2c 31 35 29  |n%,14)+`p(n%,15)|
00009860  2a 31 36 2c 60 70 28 6e  25 2c 32 32 29 2b 60 70  |*16,`p(n%,22)+`p|
00009870  28 6e 25 2c 32 33 29 2a  31 36 2c 60 70 28 6e 25  |(n%,23)*16,`p(n%|
00009880  2c 33 30 29 2b 60 70 28  6e 25 2c 33 31 29 2a 31  |,30)+`p(n%,31)*1|
00009890  36 2c 60 70 28 6e 25 2c  33 38 29 2b 60 70 28 6e  |6,`p(n%,38)+`p(n|
000098a0  25 2c 33 39 29 2a 31 36  2c 60 70 28 6e 25 2c 34  |%,39)*16,`p(n%,4|
000098b0  36 29 2b 60 70 28 6e 25  2c 34 37 29 2a 31 36 2c  |6)+`p(n%,47)*16,|
000098c0  60 70 28 6e 25 2c 35 34  29 2b 60 70 28 6e 25 2c  |`p(n%,54)+`p(n%,|
000098d0  35 35 29 2a 31 36 2c 60  70 28 6e 25 2c 36 32 29  |55)*16,`p(n%,62)|
000098e0  2b 60 70 28 6e 25 2c 36  33 29 2a 31 36 0a 47 43  |+`p(n%,63)*16.GC|
000098f0  4f 4c 20 38 30 2b 60 73  74 79 6c 65 25 2c 30 0a  |OL 80+`style%,0.|
00009900  52 45 43 54 41 4e 47 4c  45 20 46 49 4c 4c 20 34  |RECTANGLE FILL 4|
00009910  36 2c 36 39 34 2c 36 34  2c 36 34 0a 0a 43 41 53  |6,694,64,64..CAS|
00009920  45 20 6e 25 20 4f 46 0a  57 48 45 4e 20 30 20 3a  |E n% OF.WHEN 0 :|
00009930  20 53 59 53 20 26 32 45  2c 31 36 2c 30 2c 22 65  | SYS &2E,16,0,"e|
00009940  63 66 30 22 2c 30 2c 34  36 2c 36 39 34 2c 31 30  |cf0",0,46,694,10|
00009950  30 2c 37 35 38 0a 57 48  45 4e 20 31 20 3a 20 53  |0,758.WHEN 1 : S|
00009960  59 53 20 26 32 45 2c 31  36 2c 30 2c 22 65 63 66  |YS &2E,16,0,"ecf|
00009970  31 22 2c 30 2c 34 36 2c  36 39 34 2c 31 30 30 2c  |1",0,46,694,100,|
00009980  37 35 38 0a 57 48 45 4e  20 32 20 3a 20 53 59 53  |758.WHEN 2 : SYS|
00009990  20 26 32 45 2c 31 36 2c  30 2c 22 65 63 66 32 22  | &2E,16,0,"ecf2"|
000099a0  2c 30 2c 34 36 2c 36 39  34 2c 31 30 30 2c 37 35  |,0,46,694,100,75|
000099b0  38 0a 57 48 45 4e 20 33  20 3a 20 53 59 53 20 26  |8.WHEN 3 : SYS &|
000099c0  32 45 2c 31 36 2c 30 2c  22 65 63 66 33 22 2c 30  |2E,16,0,"ecf3",0|
000099d0  2c 34 36 2c 36 39 34 2c  31 30 30 2c 37 35 38 0a  |,46,694,100,758.|
000099e0  45 4e 44 43 41 53 45 0a  45 4e 44 50 52 4f 43 0a  |ENDCASE.ENDPROC.|
000099f0  44 45 46 20 50 52 4f 43  73 68 6f 77 5f 70 61 74  |DEF PROCshow_pat|
00009a00  74 0a 46 4f 52 20 61 25  20 3d 20 30 20 54 4f 20  |t.FOR a% = 0 TO |
00009a10  36 33 0a 50 52 4f 43 73  65 74 5f 69 63 6f 6e 5f  |63.PROCset_icon_|
00009a20  73 74 61 74 65 28 77 69  6e 64 6f 77 73 28 38 29  |state(windows(8)|
00009a30  2c 61 25 2c 26 33 30 32  39 2c 38 2c 60 70 28 60  |,a%,&3029,8,`p(`|
00009a40  70 74 72 6e 2c 61 25 29  2b 26 38 30 2c 2d 31 29  |ptrn,a%)+&80,-1)|
00009a50  0a 4e 45 58 54 20 61 25  0a 45 4e 44 50 52 4f 43  |.NEXT a%.ENDPROC|
00009a60  0a 44 45 46 20 50 52 4f  43 70 61 74 74 5f 65 64  |.DEF PROCpatt_ed|
00009a70  69 74 28 69 63 6f 6e 25  29 0a 49 46 20 69 63 6f  |it(icon%).IF ico|
00009a80  6e 25 20 3d 20 2d 31 20  54 48 45 4e 20 45 4e 44  |n% = -1 THEN END|
00009a90  50 52 4f 43 0a 49 46 20  60 63 6f 6c 25 20 3d 20  |PROC.IF `col% = |
00009aa0  31 37 20 54 48 45 4e 20  45 4e 44 50 52 4f 43 0a  |17 THEN ENDPROC.|
00009ab0  50 52 4f 43 73 65 74 5f  69 63 6f 6e 5f 73 74 61  |PROCset_icon_sta|
00009ac0  74 65 28 77 69 6e 64 6f  77 73 28 38 29 2c 69 63  |te(windows(8),ic|
00009ad0  6f 6e 25 2c 26 33 30 32  39 2c 38 2c 60 63 6f 6c  |on%,&3029,8,`col|
00009ae0  25 2b 26 38 30 2c 2d 31  29 0a 60 70 28 60 70 74  |%+&80,-1).`p(`pt|
00009af0  72 6e 2c 69 63 6f 6e 25  29 3d 60 63 6f 6c 25 0a  |rn,icon%)=`col%.|
00009b00  45 4e 44 50 52 4f 43 0a  44 45 46 20 50 52 4f 43  |ENDPROC.DEF PROC|
00009b10  73 63 72 6e 0a 47 43 4f  4c 20 31 33 35 0a 43 4c  |scrn.GCOL 135.CL|
00009b20  47 0a 45 4e 44 50 52 4f  43 0a 44 45 46 20 50 52  |G.ENDPROC.DEF PR|
00009b30  4f 43 75 70 64 61 74 65  28 68 61 6e 64 6c 65 25  |OCupdate(handle%|
00009b40  29 0a 49 46 20 68 61 6e  64 6c 65 25 20 3d 20 77  |).IF handle% = w|
00009b50  69 6e 64 6f 77 73 28 35  29 20 54 48 45 4e 20 50  |indows(5) THEN P|
00009b60  52 4f 43 64 72 5f 63 6f  70 79 0a 49 46 20 68 61  |ROCdr_copy.IF ha|
00009b70  6e 64 6c 65 25 20 3d 20  77 69 6e 64 6f 77 73 28  |ndle% = windows(|
00009b80  37 29 20 54 48 45 4e 20  50 52 4f 43 70 61 6c 5f  |7) THEN PROCpal_|
00009b90  75 70 64 0a 45 4e 44 50  52 4f 43 0a 44 45 46 20  |upd.ENDPROC.DEF |
00009ba0  50 52 4f 43 73 63 72 6e  5f 63 6f 70 79 0a 49 46  |PROCscrn_copy.IF|
00009bb0  20 60 64 72 5f 61 72 65  61 20 3d 20 2d 31 20 54  | `dr_area = -1 T|
00009bc0  48 45 4e 0a 53 59 53 20  26 32 45 2c 32 35 36 2b  |HEN.SYS &2E,256+|
00009bd0  31 36 2c 73 70 74 5f 61  72 65 61 2c 22 48 44 53  |16,spt_area,"HDS|
00009be0  22 2c 30 2c 31 36 32 2c  32 33 32 2c 31 32 37 34  |",0,162,232,1274|
00009bf0  2c 39 37 32 0a 45 4e 44  49 46 0a 45 4e 44 50 52  |,972.ENDIF.ENDPR|
00009c00  4f 43 0a 44 45 46 20 50  52 4f 43 64 72 5f 63 6f  |OC.DEF PROCdr_co|
00009c10  70 79 0a 53 59 53 20 26  32 45 2c 32 35 36 2b 33  |py.SYS &2E,256+3|
00009c20  34 2c 73 70 74 5f 61 72  65 61 2c 22 48 44 53 22  |4,spt_area,"HDS"|
00009c30  2c 31 36 32 2c 32 33 32  0a 45 4e 44 50 52 4f 43  |,162,232.ENDPROC|
00009c40  0a 44 45 46 20 50 52 4f  43 73 65 6c 65 63 74 5f  |.DEF PROCselect_|
00009c50  62 72 75 73 68 28 69 63  6f 6e 25 29 0a 49 46 20  |brush(icon%).IF |
00009c60  69 63 6f 6e 25 3c 30 20  4f 52 20 69 63 6f 6e 25  |icon%<0 OR icon%|
00009c70  3e 31 32 20 54 48 45 4e  20 45 4e 44 50 52 4f 43  |>12 THEN ENDPROC|
00009c80  0a 50 52 4f 43 73 65 74  5f 69 63 6f 6e 5f 73 74  |.PROCset_icon_st|
00009c90  61 74 65 28 77 69 6e 64  6f 77 73 28 39 29 2c 60  |ate(windows(9),`|
00009ca0  62 72 73 68 25 2d 32 34  33 2c 26 33 30 33 44 2c  |brsh%-243,&303D,|
00009cb0  60 69 66 2c 60 69 62 2c  2d 31 29 0a 60 62 72 73  |`if,`ib,-1).`brs|
00009cc0  68 25 20 3d 20 69 63 6f  6e 25 2b 32 34 33 0a 50  |h% = icon%+243.P|
00009cd0  52 4f 43 73 65 74 5f 69  63 6f 6e 5f 73 74 61 74  |ROCset_icon_stat|
00009ce0  65 28 77 69 6e 64 6f 77  73 28 39 29 2c 69 63 6f  |e(windows(9),ico|
00009cf0  6e 25 2c 26 33 30 33 44  2c 60 69 66 2c 26 38 38  |n%,&303D,`if,&88|
00009d00  2c 2d 31 29 0a 45 4e 44  50 52 4f 43 0a 52 45 4d  |,-1).ENDPROC.REM|
00009d10  20 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  | ***************|
00009d20  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00009d40  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 0a  |***************.|
00009d50  44 45 46 20 50 52 4f 43  67 65 74 5f 64 69 72 0a  |DEF PROCget_dir.|
00009d60  46 4f 52 20 61 25 20 3d  20 60 6d 61 78 5f 66 69  |FOR a% = `max_fi|
00009d70  6c 65 25 20 54 4f 20 30  20 53 54 45 50 20 2d 31  |le% TO 0 STEP -1|
00009d80  0a 50 52 4f 43 64 65 6c  65 74 65 5f 69 63 6f 6e  |.PROCdelete_icon|
00009d90  28 77 69 6e 64 6f 77 73  28 34 29 2c 61 25 29 0a  |(windows(4),a%).|
00009da0  4e 45 58 54 20 61 25 0a  61 25 3d 30 3a 20 68 74  |NEXT a%.a%=0: ht|
00009db0  25 3d 30 0a 53 59 53 20  26 30 43 2c 31 30 2c 22  |%=0.SYS &0C,10,"|
00009dc0  55 73 65 72 50 69 63 73  22 2c 70 61 72 25 2c 31  |UserPics",par%,1|
00009dd0  2c 61 25 2c 32 35 35 2c  22 2a 22 20 54 4f 20 2c  |,a%,255,"*" TO ,|
00009de0  2c 2c 6e 25 0a 49 46 20  6e 25 20 3d 20 30 20 54  |,,n%.IF n% = 0 T|
00009df0  48 45 4e 0a 20 20 49 46  20 46 4e 6f 6e 5f 74 6f  |HEN.  IF FNon_to|
00009e00  70 20 54 48 45 4e 20 50  52 4f 43 74 65 73 74 5f  |p THEN PROCtest_|
00009e10  6f 70 65 6e 28 77 69 6e  64 6f 77 73 28 34 29 29  |open(windows(4))|
00009e20  0a 20 20 45 4e 44 50 52  4f 43 0a 45 4e 44 49 46  |.  ENDPROC.ENDIF|
00009e30  0a 57 48 49 4c 45 20 6e  25 3d 31 0a 20 20 50 52  |.WHILE n%=1.  PR|
00009e40  4f 43 65 6e 74 72 79 0a  20 20 61 25 2b 3d 31 0a  |OCentry.  a%+=1.|
00009e50  20 20 53 59 53 20 26 30  43 2c 31 30 2c 22 55 73  |  SYS &0C,10,"Us|
00009e60  65 72 50 69 63 73 22 2c  70 61 72 25 2c 31 2c 61  |erPics",par%,1,a|
00009e70  25 2c 32 35 35 2c 22 2a  22 20 54 4f 20 2c 2c 2c  |%,255,"*" TO ,,,|
00009e80  6e 25 0a 45 4e 44 57 48  49 4c 45 0a 49 46 20 46  |n%.ENDWHILE.IF F|
00009e90  4e 6f 6e 5f 74 6f 70 20  54 48 45 4e 20 50 52 4f  |Non_top THEN PRO|
00009ea0  43 74 65 73 74 5f 6f 70  65 6e 28 77 69 6e 64 6f  |Ctest_open(windo|
00009eb0  77 73 28 34 29 29 0a 45  4e 44 50 52 4f 43 0a 44  |ws(4)).ENDPROC.D|
00009ec0  45 46 20 50 52 4f 43 65  6e 74 72 79 0a 21 77 69  |EF PROCentry.!wi|
00009ed0  6d 70 20 3d 20 77 69 6e  64 6f 77 73 28 34 29 0a  |mp = windows(4).|
00009ee0  77 69 6d 70 21 34 3d 20  31 30 20 20 20 20 20 20  |wimp!4= 10      |
00009ef0  20 20 20 20 20 3a 20 52  45 4d 20 30 0a 77 69 6d  |     : REM 0.wim|
00009f00  70 21 38 3d 20 68 74 25  20 2d 20 33 32 0a 77 69  |p!8= ht% - 32.wi|
00009f10  6d 70 21 31 32 20 3d 20  31 32 30 20 20 20 20 20  |mp!12 = 120     |
00009f20  20 20 20 3a 20 52 45 4d  20 31 30 30 0a 77 69 6d  |   : REM 100.wim|
00009f30  70 21 31 36 20 3d 20 68  74 25 0a 77 69 6d 70 21  |p!16 = ht%.wimp!|
00009f40  32 30 20 3d 20 26 33 30  31 39 0a 77 69 6d 70 3f  |20 = &3019.wimp?|
00009f50  32 32 20 3d 20 60 69 66  0a 77 69 6d 70 3f 32 33  |22 = `if.wimp?23|
00009f60  20 3d 20 60 69 62 0a 24  28 77 69 6d 70 2b 32 34  | = `ib.$(wimp+24|
00009f70  29 20 3d 20 46 4e 73 74  72 6e 67 28 70 61 72 25  |) = FNstrng(par%|
00009f80  2b 32 30 29 0a 53 59 53  20 63 72 65 61 74 65 5f  |+20).SYS create_|
00009f90  69 63 6f 6e 2c 30 2c 77  69 6d 70 0a 68 74 25 3d  |icon,0,wimp.ht%=|
00009fa0  68 74 25 2d 33 32 0a 45  4e 44 50 52 4f 43 0a 44  |ht%-32.ENDPROC.D|
00009fb0  45 46 20 46 4e 73 74 72  6e 67 28 70 25 29 0a 4c  |EF FNstrng(p%).L|
00009fc0  4f 43 41 4c 20 72 65 73  24 3a 20 72 65 73 24 3d  |OCAL res$: res$=|
00009fd0  22 22 0a 57 48 49 4c 45  20 3f 70 25 3c 3e 30 20  |"".WHILE ?p%<>0 |
00009fe0  72 65 73 24 2b 3d 43 48  52 24 28 3f 70 25 29 3a  |res$+=CHR$(?p%):|
00009ff0  70 25 2b 3d 31 3a 45 4e  44 57 48 49 4c 45 0a 3d  |p%+=1:ENDWHILE.=|
0000a000  72 65 73 24 0a 44 45 46  20 50 52 4f 43 6c 6f 61  |res$.DEF PROCloa|
0000a010  64 28 69 63 6f 6e 25 29  0a 49 46 20 69 63 6f 6e  |d(icon%).IF icon|
0000a020  25 20 3d 20 2d 31 20 54  48 45 4e 20 45 4e 44 50  |% = -1 THEN ENDP|
0000a030  52 4f 43 0a 50 52 4f 43  67 65 74 5f 69 63 6f 6e  |ROC.PROCget_icon|
0000a040  5f 69 6e 66 6f 28 77 69  6e 64 6f 77 73 28 34 29  |_info(windows(4)|
0000a050  2c 69 63 6f 6e 25 29 0a  50 52 4f 43 63 6c 6f 73  |,icon%).PROCclos|
0000a060  65 5f 77 69 6e 64 6f 77  28 77 69 6e 64 6f 77 73  |e_window(windows|
0000a070  28 34 29 29 0a 50 52 4f  43 64 72 5f 63 6f 70 79  |(4)).PROCdr_copy|
0000a080  0a 56 44 55 32 34 2c 31  36 32 3b 32 33 32 3b 31  |.VDU24,162;232;1|
0000a090  32 37 34 3b 39 37 32 3b  0a 4f 53 43 4c 49 28 22  |274;972;.OSCLI("|
0000a0a0  53 43 52 45 45 4e 4c 4f  41 44 20 55 73 65 72 50  |SCREENLOAD UserP|
0000a0b0  69 63 73 2e 22 2b 24 28  77 69 6d 70 2b 32 38 29  |ics."+$(wimp+28)|
0000a0c0  29 0a 60 64 72 5f 61 72  65 61 20 3d 20 2d 31 0a  |).`dr_area = -1.|
0000a0d0  50 52 4f 43 73 63 72 6e  5f 63 6f 70 79 0a 56 44  |PROCscrn_copy.VD|
0000a0e0  55 32 36 0a 45 4e 44 50  52 4f 43 0a 44 45 46 20  |U26.ENDPROC.DEF |
0000a0f0  50 52 4f 43 73 61 76 65  5f 6e 61 6d 65 0a 49 46  |PROCsave_name.IF|
0000a100  20 21 77 69 6d 70 3c 3e  20 77 69 6e 64 6f 77 73  | !wimp<> windows|
0000a110  28 31 30 29 20 41 4e 44  20 77 69 6d 70 21 34 3c  |(10) AND wimp!4<|
0000a120  3e 30 20 54 48 45 4e 20  45 4e 44 50 52 4f 43 0a  |>0 THEN ENDPROC.|
0000a130  49 46 20 77 69 6d 70 3f  32 34 3c 3e 20 31 33 20  |IF wimp?24<> 13 |
0000a140  54 48 45 4e 20 45 4e 44  50 52 4f 43 0a 50 52 4f  |THEN ENDPROC.PRO|
0000a150  43 63 6c 6f 73 65 5f 77  69 6e 64 6f 77 28 77 69  |Cclose_window(wi|
0000a160  6e 64 6f 77 73 28 31 30  29 29 0a 50 52 4f 43 64  |ndows(10)).PROCd|
0000a170  72 5f 63 6f 70 79 0a 56  44 55 32 34 2c 31 36 32  |r_copy.VDU24,162|
0000a180  3b 32 33 32 3b 31 32 37  34 3b 39 37 32 3b 0a 4f  |;232;1274;972;.O|
0000a190  53 43 4c 49 28 22 53 43  52 45 45 4e 53 41 56 45  |SCLI("SCREENSAVE|
0000a1a0  20 55 73 65 72 50 69 63  73 2e 22 2b 24 73 61 76  | UserPics."+$sav|
0000a1b0  65 25 29 0a 56 44 55 32  36 0a 45 4e 44 50 52 4f  |e%).VDU26.ENDPRO|
0000a1c0  43 0a 44 45 46 20 50 52  4f 43 75 70 64 5f 65 63  |C.DEF PROCupd_ec|
0000a1d0  66 0a 46 4f 52 20 61 25  20 3d 20 30 20 54 4f 20  |f.FOR a% = 0 TO |
0000a1e0  33 0a 50 52 4f 43 73 65  74 5f 69 63 6f 6e 5f 73  |3.PROCset_icon_s|
0000a1f0  74 61 74 65 28 77 69 6e  64 6f 77 73 28 36 29 2c  |tate(windows(6),|
0000a200  61 25 2b 31 36 2c 26 33  30 33 45 2c 60 69 66 2c  |a%+16,&303E,`if,|
0000a210  60 69 62 2c 2d 31 29 0a  4e 45 58 54 20 61 25 0a  |`ib,-1).NEXT a%.|
0000a220  45 4e 44 50 52 4f 43 0a  44 45 46 20 46 4e 6f 6e  |ENDPROC.DEF FNon|
0000a230  5f 74 6f 70 0a 21 74 5f  77 69 6d 70 3d 20 77 69  |_top.!t_wimp= wi|
0000a240  6e 64 6f 77 73 28 35 29  0a 53 59 53 20 67 65 74  |ndows(5).SYS get|
0000a250  5f 77 69 6e 64 6f 77 5f  73 74 61 74 65 2c 30 2c  |_window_state,0,|
0000a260  74 5f 77 69 6d 70 0a 49  46 20 74 5f 77 69 6d 70  |t_wimp.IF t_wimp|
0000a270  21 32 38 20 3c 3e 20 2d  31 20 54 48 45 4e 3d 20  |!28 <> -1 THEN= |
0000a280  46 41 4c 53 45 0a 3d 20  54 52 55 45 0a 0a 44 45  |FALSE.= TRUE..DE|
0000a290  46 20 50 52 4f 43 72 65  70 6f 72 74 0a 50 52 4f  |F PROCreport.PRO|
0000a2a0  43 6f 70 65 6e 5f 77 69  6e 64 6f 77 28 77 69 6e  |Copen_window(win|
0000a2b0  64 6f 77 73 28 31 31 29  2c 31 30 30 2c 35 30 2c  |dows(11),100,50,|
0000a2c0  31 31 30 30 2c 31 35 30  2c 30 2c 30 2c 2d 31 29  |1100,150,0,0,-1)|
0000a2d0  0a 4d 4f 55 53 45 20 52  45 43 54 41 4e 47 4c 45  |.MOUSE RECTANGLE|
0000a2e0  31 30 30 2c 35 30 2c 31  30 30 30 2c 31 33 36 0a  |100,50,1000,136.|
0000a2f0  45 4e 44 50 52 4f 43 0a                           |ENDPROC.|
0000a2f8