REM This program has some extra tools in case future mods are desired
PROCgraphics(500,250)
PROCsbox(10,10,1000,900,"100,100,100")
ON CLOSE PROCclose
REPEAT
r$=FNbuttonz(0,0,"clearitall")
IF FNbuttonz(100,400,"NEW FILE")="NEW FILE" THEN PROCnfile:CLG
IF FNbuttonz(100,300,"ADD TO FILE")="ADD TO FILE" THEN PROCapnd:CLG
IF FNbuttonz(100,200,"VIEW MY INFO")="VIEW MY INFO" THEN PROCview:CLG
IF FNbuttonz(100,100,"QUIT")="QUIT" THEN QUIT
WAIT 10
UNTIL FALSE
QUIT
DEFPROCnfile
A=OPENOUT("memo.txt")
REPEAT
CLG
PROCsbox(10,10,1000,900,"200,200,200")
PROCpr(10,500," Title, item 1, item 2, item 3, item 4","200,200,200")
title$=FNtype(20,450)
n1$=FNtype(20,380)
n2$=FNtype(20,310)
n3$=FNtype(20,240)
n4$=FNtype(20,170)
n5$=FNtype(20,100)
PRINT#A,title$,n1$,n2$,n3$,n4$,n5$
PROCcolor("b","150,150,150")
CLG
PROCpr(20,450,"Would you like to make another page? ","180,200,200")
r$=""
REPEAT
r$=FNbuttonz(0,0,"clearitall")
IF FNbuttonz(100,350,"YES")="YES" THEN r$="y"
IF FNbuttonz(100,250,"MENU")="MENU" THEN r$="n"
WAIT 10
UNTIL r$<>""
UNTIL r$<>"y"
CLOSE#A
ENDPROC
DEFPROCapnd
A=OPENUP("memo.txt")
PTR#A = EXT#A
REPEAT
CLG
PROCsbox(10,10,1000,900,"200,200,200")
PROCpr(10,500," Title, item 1, item 2, item 3, item 4","200,200,200")
title$=FNtype(20,450)
n1$=FNtype(20,380)
n2$=FNtype(20,310)
n3$=FNtype(20,240)
n4$=FNtype(20,170)
n5$=FNtype(20,100)
PRINT#A,title$,n1$,n2$,n3$,n4$,n5$
CLG
REPEAT
r$=FNbuttonz(0,0,"clearitall")
IF FNbuttonz(100,400,"ADD PAGE")="ADD PAGE" THEN r$="y"
IF FNbuttonz(100,300,"RETURN TO MAIN MENU")="RETURN TO MAIN MENU" THEN r$="n"
WAIT 10
UNTIL r$<>""
UNTIL r$<>"y"
CLOSE#A
ENDPROC
DEFPROCview
A=OPENIN("memo.txt")
REPEAT
CLG
PROCsbox(10,10,1000,900,"220,220,220")
INPUT#A,title$,n1$,n2$,n3$,n4$,n5$
IF title$="" THEN CLOSE#A:PROCpr(100,300,"EMPTY","249,249,249"):WAIT 200:ENDPROC
PROCcolor("f","000,000,000")
PROCpr(10,500,title$,"200,220,220")
MOVE 20,400:PRINT n1$
MOVE 20,350:PRINT n2$
MOVE 20,300:PRINT n3$
MOVE 20,250:PRINT n4$
MOVE 20,200:PRINT n5$
REPEAT
r$=FNbuttonz(0,0,"clearitall")
IF FNbuttonz(850,100,"NEXT")="NEXT" THEN r$="y"
IF FNbuttonz(30,100,"BACK")="BACK" THEN r$="n"
WAIT 10
UNTIL r$<>""
UNTIL r$<>"y"
CLOSE#A
ENDPROC
DEFPROCclose
QUIT
ENDPROC
DEFFNrgb(x%,y%)
LOCAL rgb%, r&, g&, b&
rgb%=TINT(x%,y%)
r&=rgb% :REM Use byte variable as mask.
g&=rgb% >>8
b&=rgb% >>16
=FNnumstr(r&)+","+FNnumstr(g&)+","+FNnumstr(b&)
DEF FNtype(x%,y%)
REM first define a efficient array a&() and retstr$- case of empty returned string
LOCAL a&(),retstr$,h%,v%,t&,k$,cp&,bc$,fc$
h%=x%:v%=y%
fc$="000,000,000":bc$="200,200,200":REM text color is black
REM l%,cp% line # and cursor position.l%- future(not used yet)
REM bc$-(text overwrite-background) fc$-foreground text colors-
REM now give a&() a dimension of 100
DIM a&(100)
REPEAT
h%=x%
REPEAT
k$=INKEY$(4)
REM Cursor
PROCcolor("f",fc$):MOVE cp&*16+h%,v%:PRINT"_"
WAIT 10:REM seems pretty smooth
PROCcolor("f",bc$):MOVE cp&*16+h%,v%:PRINT"_"
UNTIL k$<>""
IF k$<>"" THEN
IF ASC(k$)>31 AND ASC(k$)<127 AND cp&<100 THEN
a&(cp&)=ASC(k$):cp&=cp&+1
ENDIF
h%=x%:v%=y%:REM test
MOVE h%,v%:PROCcolor("f",bc$)
REM print every ascii value in a&() array except 0 -cool stuff
PRINT $$^a&(0)
t&=0
h%=x%:v%=y%:REM test
MOVE h%,v%:PROCcolor("f",fc$)
PRINT $$^a&(0)
t&=0
ENDIF
IF ASC(k$)=8 AND cp&>0 THEN
t&=0
h%=x%:v%=y%:REM test
MOVE h%,v%:PROCcolor("f",bc$)
PRINT $$^a&(0)
t&=0
t&=cp&-1
REPEAT
a&(t&)=a&(t&+1)
t&+=1
UNTIL t&=100
t&=0
h%=x%:v%=y%:REM test
MOVE h%,v%:PROCcolor("f",fc$)
PRINT $$^a&(0)
t&=0
cp&-=1
ENDIF
UNTIL ASC(k$)=13
retstr$ = $$^a&(0)
t&=0:PROCresetrgb
=retstr$
DEF PROCgraphics(x,y)
VDU 23,22,x;y;8,15,16,1
OFF
VDU 5
N%=0
N%=20
DIM X(20),Y(20),H(20),V(20)
ENDPROC
DEF PROCsbox(x%,y%,w%,h%,c$)
LOCAL ry%,sx%,sy%
sx%=x%:sy%=y%
IF x%>w% THEN x%=w%:w%=sx%
IF y%>h% THEN y%=h%:h%=sy%
ry%=y%
PROCcolor("f",c$)
REPEAT
LINE x%,y%,w%,y%
y%=y%+1
UNTIL y%=h%
y%=ry%
IF c$<>"0" THEN PROCcolor("f","000,000,000") ELSE PROCcolor("f","white")
LINE x%+2,y%+2,w%-2,y%+2
LINE w%-2,y%+2,w%-2,h%-4
LINE w%-2,h%-4,x%+2,h%-4
LINE x%+2,h%-4,x%+2,y%+2
PROCresetrgb
ENDPROC
DEFPROCresetrgb
COLOUR 0,0,0,0 :COLOUR 1,200,0,0 :COLOUR 2,000,200,000
COLOUR 3,200,200,000:COLOUR 4,000,000,200:COLOUR 5,200,000,200
COLOUR 6,000,200,200:COLOUR 7,200,200,200:COLOUR 8,056,056,056
COLOUR 9,248,056,056:COLOUR 10,056,248,056:COLOUR 11,248,248,056
COLOUR 12,056,056,248:COLOUR 13,248,056,248:COLOUR 14,056,248,248
COLOUR 15,248,248,248
ENDPROC
DEF PROCcolor(fb$,rgb$)
PRIVATE assemble$,br%,bg%,bb%
IF rgb$="0" OR rgb$="black" THEN rgb$="000,000,000"
IF rgb$="1" OR rgb$="red" THEN rgb$="200,000,000"
IF rgb$="2" OR rgb$="green" THEN rgb$="000,200,000"
IF rgb$="3" OR rgb$="yellow" THEN rgb$="200,200,000"
IF rgb$="4" OR rgb$="blue" THEN rgb$="000,000,200"
IF rgb$="5" OR rgb$="magenta" THEN rgb$="200,000,200"
IF rgb$="6" OR rgb$="cyan" THEN rgb$="000,200,200"
IF rgb$="7" OR rgb$="white" THEN rgb$="200,200,200"
IF rgb$="8" OR rgb$="grey" THEN rgb$="056,056,056"
IF rgb$="9" OR rgb$="light red" THEN rgb$="248,056,056"
IF rgb$="10" OR rgb$="light green" THEN rgb$="056,248,056"
IF rgb$="11" OR rgb$="light yellow" THEN rgb$="248,248,056"
IF rgb$="12" OR rgb$="light blue" THEN rgb$="056,056,248"
IF rgb$="13" OR rgb$="light magenta" THEN rgb$="248,056,248"
IF rgb$="14" OR rgb$="light cyan" THEN rgb$="056,248,248"
IF rgb$="15" OR rgb$="light white" THEN rgb$="248,248,248"
assemble$=rgb$
br%=VAL(MID$(assemble$,1,3)):bg%=VAL(MID$(assemble$,5,3)):bb%=VAL(MID$(assemble$,9,3))
IF fb$="f" OR fb$="F" THEN COLOUR 0,br%,bg%,bb% : GCOL 0
IF fb$="b" OR fb$="B" THEN COLOUR 1,br%,bg%,bb% : GCOL 128+1
ENDPROC
DEFFNnumstr(num)
LOCAL cov$,l%
cov$=STR$(num)
l%=LEN(cov$)
IF l%=1 THEN ret$="00"+cov$
IF l%=2 THEN ret$="0"+cov$
IF l%=3 THEN ret$=cov$
=ret$
DEF PROCpr(X,Y,msg$,c$)
LOCAL initialx%,fi%,reduction%,tx,ty
initialx%=LEN(msg$)
PROCcolor("f",c$)
GCOL 0
LET tx= X+initialx%+25
LET ty= Y:reduction%=0
reduction%=initialx%/2
reduction%=reduction%*6
IF initialx%<20 THEN reduction%=reduction%/2
initialx%=initialx%*22-reduction%
FOR fi%=12 TO 48
LINE X-3,Y+20-fi%,X+initialx%+8,Y+20-fi%
NEXT
COLOUR 0,0,0,0
GCOL 0
MOVE tx,ty
PRINT msg$
MOVE 0,0
ENDPROC
DEFFNbuttonz(X,Y,msg$)
LOCAL initialx%,fi%,reduction%,tx,ty,mx%,my%,mb%,ad%,ady%,c$
PRIVATE st$
IF msg$<> "clearitall" THEN
initialx%=LEN(msg$)
LET tx= X+initialx%+25
LET ty= Y:reduction%=0
reduction%=initialx%/2
reduction%=reduction%*6
IF initialx%<20 THEN reduction%=reduction%/2
initialx%=initialx%*22-reduction%
MOUSE mx%,my%,mb%
ad%=initialx%+8:ad%+=X:ady%=Y-28
IF mx% >X AND mx%<ad% AND my%<Y+8 AND my%>ady% THEN
c$="255,255,255"
IF mb%=4 THEN st$=msg$
ELSE c$="200,200,200"
ENDIF
IF FNrgb(X,Y)="000,000,000" THEN c$="200,200,200"
PROCcolor("f",c$)
IF FNrgb(X,Y)<>c$ THEN
FOR fi%=12 TO 48
LINE X-3,Y+20-fi%,X+initialx%+8,Y+20-fi%
NEXT
PROCcolor("f","000,000,000")
MOVE tx,ty
PRINT msg$
ENDIF
ENDIF
IF msg$="clearitall" THEN st$=""
MOVE 0,0
=st$