Home » Archimedes archive » Acorn User » AU 1998-04 B.adf » PD » Markwart/StandAlone/!FlexiPlan/ShellData

Markwart/StandAlone/!FlexiPlan/ShellData

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

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

Tape/disk: Home » Archimedes archive » Acorn User » AU 1998-04 B.adf » PD
Filename: Markwart/StandAlone/!FlexiPlan/ShellData
Read OK:
File size: 1BF2 bytes
Load address: 0000
Exec address: 0000
Duplicates

There are 3 duplicate copies of this file in the archive:

File contents
FlexiPlan
!flexiplan
***
0
1
6
To create a year planner
V Markwart & C Egginton
0.01 (6 Feb 1998)
0
***
***
***
***
***
***

iconmenu%
Main Menu
...Info    !
...Quit&CLOSEDOWN
�
@

menu_klik
button%
4
  MOUSE(mx%,my%,mb%,window,icon)
  IF button%<>2 THEN
    IF flag%=0 THEN
      MOVEWINDOW(FlexiPlan, mx%-250, my%+50)
    ENDIF
    flag%+=1
    OPENWINDOW(FlexiPlan)
  ENDIF
ENDPROC
�

CreateFile
file$
9
  filename$=file$
  IF filename$="" THEN WARNING("Filename not appropriate", "Flexiplan Error") : ENDPROC
  outfile%=OPENOUT(filename$)
  ON ERROR CLOSE#outfile%: WARNING("Can't create Flexiplan file", "Flexiplan Error"): END

REM Send DrawFile Header 
FOR I=1 TO 24
 BPUT#outfile%,B%(I)
NEXT
REM Send Dummy BBox data

BBoxptr%=PTR#outfile%
FOR I=1 TO 16
BPUT#outfile%,32
NEXT

first1=TRUE
PROCCreateGrid
PROCCreateTextArea
P%=PTR#outfile%
PTR#outfile%=BBoxptr%
PROCs(Xmin)
PROCs(Ymin)
PROCs(Xmax)
PROCs(Ymax)
PTR#outfile%=P%
CLOSE#outfile%
OSCLI("SETTYPE "+filename$+" Drawfile")
OPENWINDOW(FlexiPlan) 
ENDPROC
�

init
***
1
REM Draw file header
 DIM B%(24), D$(6), M$(13), N(13)
 RESTORE +1
 DATA 68,114,97,119,201,0,0,0,0,0,0,0,65,114,99,68,114,97,119,32,32,32,32,32
 FOR I=1 TO 24
   READ B%(I)
 NEXT
 
REM Days of Week 
 RESTORE +1
 DATA Sun,Mon,Tue,Wed,Thu,Fri,Sat
 FOR I=0 TO 6
   READ D$(I)
 NEXT
 
REM Months of Year
 RESTORE +1
 DATA January,31,February,28,March,31,April,30,May,31,June,30,July,31,August,31,September,30,October,31,November,30,December,31
 FOR I=1 TO 12
   READ M$(I),N(I)
 NEXT

  flag%=0
  minyear%=1980
  date$=SYSDATE
  year$=RIGHT$(date$, 4)
  month$=MID$(date$,4,3)
  yearX%=EVAL(year$)
  SETICON(FlexiPlan, 4, year$)
ENDPROC
�

FNYearStart
year%
0
LOCAL I
y$=STR$(year%)

REM Check this
  S=1
  FOR I=1980 TO year%
    IF I MOD 4=1 S=S+2 ELSE S=S+1
  NEXT
=S MOD 7

�

text
***
0

  S=FNYearStart(year%)
REM Is it a leap year
  N(2)=28
  IF (year% MOD 400)=0 THEN
    N(2)=29
  ELSE
    IF (year% MOD 4)=0 THEN N(2)=29
    IF (year% MOD 100)=0 THEN N(2)=28
  ENDIF

  BPUT#outfile%,"\! 1"
  BPUT#outfile%,"\F 0 Trinity.Medium 7"
  BPUT#outfile%,"\F 1 Trinity.Bold 10"
  BPUT#outfile%,"\AL/\D14"
  BPUT#outfile%,"\L14/\P0/\0"
  BPUT#outfile%,"\1"
  BPUT#outfile%,"\AC"
  BPUT#outfile%,STR$(year%)
  BPUT#outfile%,10
  BPUT#outfile%,10
  FOR D=0 TO 36
    BPUT#outfile%,D$(D MOD 7)
    BPUT#outfile%,10
    BPUT#outfile%,10
  NEXT
  BPUT#outfile%,"\AL"

  FOR E=1 TO 12
    BPUT#outfile%,"\1";
    BPUT#outfile%,"\AC/"+M$(E)+"\AL/";
    BPUT#outfile%,10
    BPUT#outfile%,10
    BPUT#outfile%,"\0";
    B=S  
    WHILE B > 0
        BPUT#outfile%,"\AC/||||||||||||||||||||||||||\AL/";
        BPUT#outfile%,10
        BPUT#outfile%,10
        B-=1  
    ENDWHILE
      
    FOR D=1 TO N(E)
      BPUT#outfile%,RIGHT$("   "+STR$ D,3)
      BPUT#outfile%,10
    NEXT
      
    B=37-S-N(E) 
    WHILE B > 0
      BPUT#outfile%,"\AC/||||||||||||||||||||||||||\AL/";
      BPUT#outfile%,10
      BPUT#outfile%,10
      B-=1  
    ENDWHILE 
    S=(S + N(E)) MOD 7
  NEXT  
  BPUT#outfile%,"\1";
  BPUT#outfile%,"\AC/";
  BPUT#outfile%,STR$(year%)
  BPUT#outfile%,10
  BPUT#outfile%,10
  FOR D=0 TO 36
    BPUT#outfile%,D$(D MOD 7)
    BPUT#outfile%,10
    BPUT#outfile%,10
  NEXT
  IF N(2)=29 THEN
    BPUT#outfile%,"\AL"
  ELSE
    BPUT#outfile%,"\AL/"
  ENDIF
  PROCs(0) 
ENDPROC
�

s
b%
0
  LOCAL I
  FOR I=1 TO 4
    BPUT#outfile%,(b% AND 255)
    b%=b%>>8
  NEXT 
ENDPROC
�

column
X1, Y1, X2, Y2
0
  X1=X1<<8
  Y1=Y1<<8
  X2=X2<<8
  Y2=Y2<<8
  IF first THEN
    Xb=X1
    Yb=Y1
    Xt=X2
    Yt=Y2
    first=FALSE
  ELSE
    IF Xb>X1 THEN Xb=X1
    IF Yb>Y1 THEN Yb=Y1
    IF Xt<X2 THEN Xt=X2
    IF Yt<Y2 THEN Yt=Y2
  ENDIF
  PROCs(10)
  PROCs(24)
  PROCs(X1)
  PROCs(Y1)
  PROCs(X2)
  PROCs(Y2) 
ENDPROC
�

CreateTextArea
***
0
LOCAL I
first=TRUE
Txtptr%=PTR#outfile%

REM Send Dummy text header
FOR I=1 TO 24
  BPUT#outfile%,42
NEXT
REM Create columns
a=9
PROCcolumn(100,64,173,a+64+38*35)
FOR I=0 TO 11
  PROCcolumn(173+I*146,64,319+I*146,a+64+38*35)
NEXT
PROCcolumn(173+12*146,64,246+12*146,a+64+38*35)

REM Send Footer
FOR I=1 TO 4
  PROCs(0)
NEXT

PROCs(&FFFFFF00)

REM send Text

PROCtext
REM Now send Real header
P%=PTR#outfile%
PTR#outfile%=Txtptr%
PROCs(9)
PROCs(4*((P%-Txtptr%)DIV 4))
PROCs(Xb)
PROCs(Yb)
PROCs(Xt)
PROCs(Yt)
PTR#outfile%=P%

IF first1 THEN
  Xmin=Xb:Ymin=Yb:Xmax=Xt:Ymax=Yt:first1=FALSE
ELSE
  IF Xmin>Xb THEN Xmin=Xb
  IF Ymin>Yb THEN Ymin=Yb
  IF Xmax<Xt THEN Xmax=Xt
  IF Ymax<Yt THEN Ymax=Yt
ENDIF

ENDPROC
�

CreateLine
X1, Y1, X2, Y2, th, col
0
  X1=X1<<8:Y1=Y1<<8:X2=X2<<8:Y2=Y2<<8:th=th<<8
  REM Find boundary box data ----------
  
  Xb=X1:Yb=Y1:Xt=X2:Yt=Y2
  IF Xt<Xb SWAP Xt,Xb
  IF Yt<Yb SWAP Yt,Yb
  L=SQR((X2-X1)^2+(Y2-Y1)^2)
  IF L<>0 THEN
    dX=ABS(Y2-Y1)*th/(2*L)
    dY=ABS(X2-X1)*th/(2*L)
    Xb-=dX:Xt+=dX:Yb-=dY:Yt+=dY
  ENDIF
  
  REM Rem Keep Boundary Box Min/Max
  
  IF first THEN
    Xbmin=Xb:Ybmin=Yb:Xtmax=Xt:Ytmax=Yt:first=FALSE
  ELSE
    IF Xbmin>Xb THEN Xbmin=Xb
    IF Ybmin>Yb THEN Ybmin=Yb
    IF Xtmax<Xt THEN Xtmax=Xt
    IF Ytmax<Yt THEN Ytmax=Yt
  ENDIF

REM OK Send all data

PROCs(2)
PROCs(68)
PROCs(Xb)
PROCs(Yb)
PROCs(Xt)
PROCs(Yt)
PROCs(&FFFFFFFF)
PROCs(col)
PROCs(th)
PROCs(&20100042)
PROCs(2)
PROCs(X1)
PROCs(Y1)
PROCs(8)
PROCs(X2)
PROCs(Y2)
PROCs(0)
c+=1 
ENDPROC
�

CreateGrid
***
0
  
  REM Send dummy Group data ------------
  groupptr%=PTR#outfile%
  FOR I=1 TO 36
    BPUT#outfile%,32
  NEXT
  first=TRUE:c=0
  
  REM Send the lines here ---------------------------------
  FOR Y=0 TO 38
    PROCCreateLine(100,64+Y*35,1998,64+Y*35,0,&44444400)
  NEXT

  PROCCreateLine(100,64,100,64+38*35,2.5,0)
  PROCCreateLine(1998,64,1998,64+38*35,2.5,0)
  FOR Y=0 TO 12
    PROCCreateLine(173+Y*146,64,173+Y*146,64+38*35,1.5,0)
  NEXT
  PROCCreateLine(100,64,1998,64,2.5,0)
  PROCCreateLine(100,64+38*35,1998,64+38*35,2.5,0)
  FOR Y=0 TO 5
    PROCCreateLine(100,134+7*35*Y,1998,134+7*35*Y,1.5,0)
  NEXT
  REM Now go back and send group data
  P%=PTR#outfile%:PTR#outfile%=groupptr%
  PROCs(6)
  PROCs(P%-groupptr%)
  PROCs(Xbmin)
  PROCs(Ybmin)
  PROCs(Xtmax)
  PROCs(Ytmax)
  PTR#outfile%=P%
  IF first1 THEN
    Xmin=Xbmin:Ymin=Ybmin:Xmax=Xtmax:Ymax=Ytmax:first1=FALSE
  ELSE
    IF Xmin>Xbmin THEN Xmin=Xbmin
    IF Ymin>Ybmin THEN Ymin=Ybmin
    IF Xmax<Xtmax THEN Xmax=Xtmax
    IF Ymax<Ytmax THEN Ymax=Ytmax
  ENDIF
 
ENDPROC
�

win_klik
window%,icon%,button%
10
  IF window%=FlexiPlan THEN
    year$=READICON(window%,4)
    IF year$="" THEN year$="0"
      year%=EVAL(year$)
    ENDIF
    CASE icon% OF
    WHEN 0:
      MOUSE(mx%, my%, mb%, window, icon)
      SETICON(saveas%, 1, "Plan_"+year$)
      CLOSEWINDOW(FlexiPlan)
      MOVEWINDOW(saveas%, mx%-150,my%-50)
      OPENWINDOW(saveas%)
    WHEN 1:
      CLOSEWINDOW(FlexiPlan)
    WHEN 2:
      year% -=1
      year$=STR$(year%)
      SETICON(window%, 4, year$)
    WHEN 3:
      year% +=1
      year$=STR$(year%)
      SETICON(window%, 4, year$)
    ENDCASE
    IF year%<minyear% THEN
      year%=minyear%
      year$=STR$(minyear%)
      SETICON(FlexiPlan, 4, year$)
      WARNING("Can't have years less than "+STR$(minyear%), "FlexiPlan")
    ENDIF
  ENDIF
   
ENDPROC
�
@

00000000  46 6c 65 78 69 50 6c 61  6e 0a 21 66 6c 65 78 69  |FlexiPlan.!flexi|
00000010  70 6c 61 6e 0a 2a 2a 2a  0a 30 0a 31 0a 36 0a 54  |plan.***.0.1.6.T|
00000020  6f 20 63 72 65 61 74 65  20 61 20 79 65 61 72 20  |o create a year |
00000030  70 6c 61 6e 6e 65 72 0a  56 20 4d 61 72 6b 77 61  |planner.V Markwa|
00000040  72 74 20 26 20 43 20 45  67 67 69 6e 74 6f 6e 0a  |rt & C Egginton.|
00000050  30 2e 30 31 20 28 36 20  46 65 62 20 31 39 39 38  |0.01 (6 Feb 1998|
00000060  29 0a 30 0a 2a 2a 2a 0a  2a 2a 2a 0a 2a 2a 2a 0a  |).0.***.***.***.|
00000070  2a 2a 2a 0a 2a 2a 2a 0a  2a 2a 2a 0a 0a 69 63 6f  |***.***.***..ico|
00000080  6e 6d 65 6e 75 25 0a 4d  61 69 6e 20 4d 65 6e 75  |nmenu%.Main Menu|
00000090  0a 2e 2e 2e 49 6e 66 6f  20 20 20 20 21 0a 2e 2e  |....Info    !...|
000000a0  2e 51 75 69 74 26 43 4c  4f 53 45 44 4f 57 4e 0a  |.Quit&CLOSEDOWN.|
000000b0  a4 0a 40 0a 0a 6d 65 6e  75 5f 6b 6c 69 6b 0a 62  |..@..menu_klik.b|
000000c0  75 74 74 6f 6e 25 0a 34  0a 20 20 4d 4f 55 53 45  |utton%.4.  MOUSE|
000000d0  28 6d 78 25 2c 6d 79 25  2c 6d 62 25 2c 77 69 6e  |(mx%,my%,mb%,win|
000000e0  64 6f 77 2c 69 63 6f 6e  29 0a 20 20 49 46 20 62  |dow,icon).  IF b|
000000f0  75 74 74 6f 6e 25 3c 3e  32 20 54 48 45 4e 0a 20  |utton%<>2 THEN. |
00000100  20 20 20 49 46 20 66 6c  61 67 25 3d 30 20 54 48  |   IF flag%=0 TH|
00000110  45 4e 0a 20 20 20 20 20  20 4d 4f 56 45 57 49 4e  |EN.      MOVEWIN|
00000120  44 4f 57 28 46 6c 65 78  69 50 6c 61 6e 2c 20 6d  |DOW(FlexiPlan, m|
00000130  78 25 2d 32 35 30 2c 20  6d 79 25 2b 35 30 29 0a  |x%-250, my%+50).|
00000140  20 20 20 20 45 4e 44 49  46 0a 20 20 20 20 66 6c  |    ENDIF.    fl|
00000150  61 67 25 2b 3d 31 0a 20  20 20 20 4f 50 45 4e 57  |ag%+=1.    OPENW|
00000160  49 4e 44 4f 57 28 46 6c  65 78 69 50 6c 61 6e 29  |INDOW(FlexiPlan)|
00000170  0a 20 20 45 4e 44 49 46  0a 45 4e 44 50 52 4f 43  |.  ENDIF.ENDPROC|
00000180  0a a4 0a 0a 43 72 65 61  74 65 46 69 6c 65 0a 66  |....CreateFile.f|
00000190  69 6c 65 24 0a 39 0a 20  20 66 69 6c 65 6e 61 6d  |ile$.9.  filenam|
000001a0  65 24 3d 66 69 6c 65 24  0a 20 20 49 46 20 66 69  |e$=file$.  IF fi|
000001b0  6c 65 6e 61 6d 65 24 3d  22 22 20 54 48 45 4e 20  |lename$="" THEN |
000001c0  57 41 52 4e 49 4e 47 28  22 46 69 6c 65 6e 61 6d  |WARNING("Filenam|
000001d0  65 20 6e 6f 74 20 61 70  70 72 6f 70 72 69 61 74  |e not appropriat|
000001e0  65 22 2c 20 22 46 6c 65  78 69 70 6c 61 6e 20 45  |e", "Flexiplan E|
000001f0  72 72 6f 72 22 29 20 3a  20 45 4e 44 50 52 4f 43  |rror") : ENDPROC|
00000200  0a 20 20 6f 75 74 66 69  6c 65 25 3d 4f 50 45 4e  |.  outfile%=OPEN|
00000210  4f 55 54 28 66 69 6c 65  6e 61 6d 65 24 29 0a 20  |OUT(filename$). |
00000220  20 4f 4e 20 45 52 52 4f  52 20 43 4c 4f 53 45 23  | ON ERROR CLOSE#|
00000230  6f 75 74 66 69 6c 65 25  3a 20 57 41 52 4e 49 4e  |outfile%: WARNIN|
00000240  47 28 22 43 61 6e 27 74  20 63 72 65 61 74 65 20  |G("Can't create |
00000250  46 6c 65 78 69 70 6c 61  6e 20 66 69 6c 65 22 2c  |Flexiplan file",|
00000260  20 22 46 6c 65 78 69 70  6c 61 6e 20 45 72 72 6f  | "Flexiplan Erro|
00000270  72 22 29 3a 20 45 4e 44  0a 0a 52 45 4d 20 53 65  |r"): END..REM Se|
00000280  6e 64 20 44 72 61 77 46  69 6c 65 20 48 65 61 64  |nd DrawFile Head|
00000290  65 72 20 0a 46 4f 52 20  49 3d 31 20 54 4f 20 32  |er .FOR I=1 TO 2|
000002a0  34 0a 20 42 50 55 54 23  6f 75 74 66 69 6c 65 25  |4. BPUT#outfile%|
000002b0  2c 42 25 28 49 29 0a 4e  45 58 54 0a 52 45 4d 20  |,B%(I).NEXT.REM |
000002c0  53 65 6e 64 20 44 75 6d  6d 79 20 42 42 6f 78 20  |Send Dummy BBox |
000002d0  64 61 74 61 0a 0a 42 42  6f 78 70 74 72 25 3d 50  |data..BBoxptr%=P|
000002e0  54 52 23 6f 75 74 66 69  6c 65 25 0a 46 4f 52 20  |TR#outfile%.FOR |
000002f0  49 3d 31 20 54 4f 20 31  36 0a 42 50 55 54 23 6f  |I=1 TO 16.BPUT#o|
00000300  75 74 66 69 6c 65 25 2c  33 32 0a 4e 45 58 54 0a  |utfile%,32.NEXT.|
00000310  0a 66 69 72 73 74 31 3d  54 52 55 45 0a 50 52 4f  |.first1=TRUE.PRO|
00000320  43 43 72 65 61 74 65 47  72 69 64 0a 50 52 4f 43  |CCreateGrid.PROC|
00000330  43 72 65 61 74 65 54 65  78 74 41 72 65 61 0a 50  |CreateTextArea.P|
00000340  25 3d 50 54 52 23 6f 75  74 66 69 6c 65 25 0a 50  |%=PTR#outfile%.P|
00000350  54 52 23 6f 75 74 66 69  6c 65 25 3d 42 42 6f 78  |TR#outfile%=BBox|
00000360  70 74 72 25 0a 50 52 4f  43 73 28 58 6d 69 6e 29  |ptr%.PROCs(Xmin)|
00000370  0a 50 52 4f 43 73 28 59  6d 69 6e 29 0a 50 52 4f  |.PROCs(Ymin).PRO|
00000380  43 73 28 58 6d 61 78 29  0a 50 52 4f 43 73 28 59  |Cs(Xmax).PROCs(Y|
00000390  6d 61 78 29 0a 50 54 52  23 6f 75 74 66 69 6c 65  |max).PTR#outfile|
000003a0  25 3d 50 25 0a 43 4c 4f  53 45 23 6f 75 74 66 69  |%=P%.CLOSE#outfi|
000003b0  6c 65 25 0a 4f 53 43 4c  49 28 22 53 45 54 54 59  |le%.OSCLI("SETTY|
000003c0  50 45 20 22 2b 66 69 6c  65 6e 61 6d 65 24 2b 22  |PE "+filename$+"|
000003d0  20 44 72 61 77 66 69 6c  65 22 29 0a 4f 50 45 4e  | Drawfile").OPEN|
000003e0  57 49 4e 44 4f 57 28 46  6c 65 78 69 50 6c 61 6e  |WINDOW(FlexiPlan|
000003f0  29 20 0a 45 4e 44 50 52  4f 43 0a a4 0a 0a 69 6e  |) .ENDPROC....in|
00000400  69 74 0a 2a 2a 2a 0a 31  0a 52 45 4d 20 44 72 61  |it.***.1.REM Dra|
00000410  77 20 66 69 6c 65 20 68  65 61 64 65 72 0a 20 44  |w file header. D|
00000420  49 4d 20 42 25 28 32 34  29 2c 20 44 24 28 36 29  |IM B%(24), D$(6)|
00000430  2c 20 4d 24 28 31 33 29  2c 20 4e 28 31 33 29 0a  |, M$(13), N(13).|
00000440  20 52 45 53 54 4f 52 45  20 2b 31 0a 20 44 41 54  | RESTORE +1. DAT|
00000450  41 20 36 38 2c 31 31 34  2c 39 37 2c 31 31 39 2c  |A 68,114,97,119,|
00000460  32 30 31 2c 30 2c 30 2c  30 2c 30 2c 30 2c 30 2c  |201,0,0,0,0,0,0,|
00000470  30 2c 36 35 2c 31 31 34  2c 39 39 2c 36 38 2c 31  |0,65,114,99,68,1|
00000480  31 34 2c 39 37 2c 31 31  39 2c 33 32 2c 33 32 2c  |14,97,119,32,32,|
00000490  33 32 2c 33 32 2c 33 32  0a 20 46 4f 52 20 49 3d  |32,32,32. FOR I=|
000004a0  31 20 54 4f 20 32 34 0a  20 20 20 52 45 41 44 20  |1 TO 24.   READ |
000004b0  42 25 28 49 29 0a 20 4e  45 58 54 0a 20 0a 52 45  |B%(I). NEXT. .RE|
000004c0  4d 20 44 61 79 73 20 6f  66 20 57 65 65 6b 20 0a  |M Days of Week .|
000004d0  20 52 45 53 54 4f 52 45  20 2b 31 0a 20 44 41 54  | RESTORE +1. DAT|
000004e0  41 20 53 75 6e 2c 4d 6f  6e 2c 54 75 65 2c 57 65  |A Sun,Mon,Tue,We|
000004f0  64 2c 54 68 75 2c 46 72  69 2c 53 61 74 0a 20 46  |d,Thu,Fri,Sat. F|
00000500  4f 52 20 49 3d 30 20 54  4f 20 36 0a 20 20 20 52  |OR I=0 TO 6.   R|
00000510  45 41 44 20 44 24 28 49  29 0a 20 4e 45 58 54 0a  |EAD D$(I). NEXT.|
00000520  20 0a 52 45 4d 20 4d 6f  6e 74 68 73 20 6f 66 20  | .REM Months of |
00000530  59 65 61 72 0a 20 52 45  53 54 4f 52 45 20 2b 31  |Year. RESTORE +1|
00000540  0a 20 44 41 54 41 20 4a  61 6e 75 61 72 79 2c 33  |. DATA January,3|
00000550  31 2c 46 65 62 72 75 61  72 79 2c 32 38 2c 4d 61  |1,February,28,Ma|
00000560  72 63 68 2c 33 31 2c 41  70 72 69 6c 2c 33 30 2c  |rch,31,April,30,|
00000570  4d 61 79 2c 33 31 2c 4a  75 6e 65 2c 33 30 2c 4a  |May,31,June,30,J|
00000580  75 6c 79 2c 33 31 2c 41  75 67 75 73 74 2c 33 31  |uly,31,August,31|
00000590  2c 53 65 70 74 65 6d 62  65 72 2c 33 30 2c 4f 63  |,September,30,Oc|
000005a0  74 6f 62 65 72 2c 33 31  2c 4e 6f 76 65 6d 62 65  |tober,31,Novembe|
000005b0  72 2c 33 30 2c 44 65 63  65 6d 62 65 72 2c 33 31  |r,30,December,31|
000005c0  0a 20 46 4f 52 20 49 3d  31 20 54 4f 20 31 32 0a  |. FOR I=1 TO 12.|
000005d0  20 20 20 52 45 41 44 20  4d 24 28 49 29 2c 4e 28  |   READ M$(I),N(|
000005e0  49 29 0a 20 4e 45 58 54  0a 0a 20 20 66 6c 61 67  |I). NEXT..  flag|
000005f0  25 3d 30 0a 20 20 6d 69  6e 79 65 61 72 25 3d 31  |%=0.  minyear%=1|
00000600  39 38 30 0a 20 20 64 61  74 65 24 3d 53 59 53 44  |980.  date$=SYSD|
00000610  41 54 45 0a 20 20 79 65  61 72 24 3d 52 49 47 48  |ATE.  year$=RIGH|
00000620  54 24 28 64 61 74 65 24  2c 20 34 29 0a 20 20 6d  |T$(date$, 4).  m|
00000630  6f 6e 74 68 24 3d 4d 49  44 24 28 64 61 74 65 24  |onth$=MID$(date$|
00000640  2c 34 2c 33 29 0a 20 20  79 65 61 72 58 25 3d 45  |,4,3).  yearX%=E|
00000650  56 41 4c 28 79 65 61 72  24 29 0a 20 20 53 45 54  |VAL(year$).  SET|
00000660  49 43 4f 4e 28 46 6c 65  78 69 50 6c 61 6e 2c 20  |ICON(FlexiPlan, |
00000670  34 2c 20 79 65 61 72 24  29 0a 45 4e 44 50 52 4f  |4, year$).ENDPRO|
00000680  43 0a a4 0a 0a 46 4e 59  65 61 72 53 74 61 72 74  |C....FNYearStart|
00000690  0a 79 65 61 72 25 0a 30  0a 4c 4f 43 41 4c 20 49  |.year%.0.LOCAL I|
000006a0  0a 79 24 3d 53 54 52 24  28 79 65 61 72 25 29 0a  |.y$=STR$(year%).|
000006b0  0a 52 45 4d 20 43 68 65  63 6b 20 74 68 69 73 0a  |.REM Check this.|
000006c0  20 20 53 3d 31 0a 20 20  46 4f 52 20 49 3d 31 39  |  S=1.  FOR I=19|
000006d0  38 30 20 54 4f 20 79 65  61 72 25 0a 20 20 20 20  |80 TO year%.    |
000006e0  49 46 20 49 20 4d 4f 44  20 34 3d 31 20 53 3d 53  |IF I MOD 4=1 S=S|
000006f0  2b 32 20 45 4c 53 45 20  53 3d 53 2b 31 0a 20 20  |+2 ELSE S=S+1.  |
00000700  4e 45 58 54 0a 3d 53 20  4d 4f 44 20 37 0a 0a a4  |NEXT.=S MOD 7...|
00000710  0a 0a 74 65 78 74 0a 2a  2a 2a 0a 30 0a 0a 20 20  |..text.***.0..  |
00000720  53 3d 46 4e 59 65 61 72  53 74 61 72 74 28 79 65  |S=FNYearStart(ye|
00000730  61 72 25 29 0a 52 45 4d  20 49 73 20 69 74 20 61  |ar%).REM Is it a|
00000740  20 6c 65 61 70 20 79 65  61 72 0a 20 20 4e 28 32  | leap year.  N(2|
00000750  29 3d 32 38 0a 20 20 49  46 20 28 79 65 61 72 25  |)=28.  IF (year%|
00000760  20 4d 4f 44 20 34 30 30  29 3d 30 20 54 48 45 4e  | MOD 400)=0 THEN|
00000770  0a 20 20 20 20 4e 28 32  29 3d 32 39 0a 20 20 45  |.    N(2)=29.  E|
00000780  4c 53 45 0a 20 20 20 20  49 46 20 28 79 65 61 72  |LSE.    IF (year|
00000790  25 20 4d 4f 44 20 34 29  3d 30 20 54 48 45 4e 20  |% MOD 4)=0 THEN |
000007a0  4e 28 32 29 3d 32 39 0a  20 20 20 20 49 46 20 28  |N(2)=29.    IF (|
000007b0  79 65 61 72 25 20 4d 4f  44 20 31 30 30 29 3d 30  |year% MOD 100)=0|
000007c0  20 54 48 45 4e 20 4e 28  32 29 3d 32 38 0a 20 20  | THEN N(2)=28.  |
000007d0  45 4e 44 49 46 0a 0a 20  20 42 50 55 54 23 6f 75  |ENDIF..  BPUT#ou|
000007e0  74 66 69 6c 65 25 2c 22  5c 21 20 31 22 0a 20 20  |tfile%,"\! 1".  |
000007f0  42 50 55 54 23 6f 75 74  66 69 6c 65 25 2c 22 5c  |BPUT#outfile%,"\|
00000800  46 20 30 20 54 72 69 6e  69 74 79 2e 4d 65 64 69  |F 0 Trinity.Medi|
00000810  75 6d 20 37 22 0a 20 20  42 50 55 54 23 6f 75 74  |um 7".  BPUT#out|
00000820  66 69 6c 65 25 2c 22 5c  46 20 31 20 54 72 69 6e  |file%,"\F 1 Trin|
00000830  69 74 79 2e 42 6f 6c 64  20 31 30 22 0a 20 20 42  |ity.Bold 10".  B|
00000840  50 55 54 23 6f 75 74 66  69 6c 65 25 2c 22 5c 41  |PUT#outfile%,"\A|
00000850  4c 2f 5c 44 31 34 22 0a  20 20 42 50 55 54 23 6f  |L/\D14".  BPUT#o|
00000860  75 74 66 69 6c 65 25 2c  22 5c 4c 31 34 2f 5c 50  |utfile%,"\L14/\P|
00000870  30 2f 5c 30 22 0a 20 20  42 50 55 54 23 6f 75 74  |0/\0".  BPUT#out|
00000880  66 69 6c 65 25 2c 22 5c  31 22 0a 20 20 42 50 55  |file%,"\1".  BPU|
00000890  54 23 6f 75 74 66 69 6c  65 25 2c 22 5c 41 43 22  |T#outfile%,"\AC"|
000008a0  0a 20 20 42 50 55 54 23  6f 75 74 66 69 6c 65 25  |.  BPUT#outfile%|
000008b0  2c 53 54 52 24 28 79 65  61 72 25 29 0a 20 20 42  |,STR$(year%).  B|
000008c0  50 55 54 23 6f 75 74 66  69 6c 65 25 2c 31 30 0a  |PUT#outfile%,10.|
000008d0  20 20 42 50 55 54 23 6f  75 74 66 69 6c 65 25 2c  |  BPUT#outfile%,|
000008e0  31 30 0a 20 20 46 4f 52  20 44 3d 30 20 54 4f 20  |10.  FOR D=0 TO |
000008f0  33 36 0a 20 20 20 20 42  50 55 54 23 6f 75 74 66  |36.    BPUT#outf|
00000900  69 6c 65 25 2c 44 24 28  44 20 4d 4f 44 20 37 29  |ile%,D$(D MOD 7)|
00000910  0a 20 20 20 20 42 50 55  54 23 6f 75 74 66 69 6c  |.    BPUT#outfil|
00000920  65 25 2c 31 30 0a 20 20  20 20 42 50 55 54 23 6f  |e%,10.    BPUT#o|
00000930  75 74 66 69 6c 65 25 2c  31 30 0a 20 20 4e 45 58  |utfile%,10.  NEX|
00000940  54 0a 20 20 42 50 55 54  23 6f 75 74 66 69 6c 65  |T.  BPUT#outfile|
00000950  25 2c 22 5c 41 4c 22 0a  0a 20 20 46 4f 52 20 45  |%,"\AL"..  FOR E|
00000960  3d 31 20 54 4f 20 31 32  0a 20 20 20 20 42 50 55  |=1 TO 12.    BPU|
00000970  54 23 6f 75 74 66 69 6c  65 25 2c 22 5c 31 22 3b  |T#outfile%,"\1";|
00000980  0a 20 20 20 20 42 50 55  54 23 6f 75 74 66 69 6c  |.    BPUT#outfil|
00000990  65 25 2c 22 5c 41 43 2f  22 2b 4d 24 28 45 29 2b  |e%,"\AC/"+M$(E)+|
000009a0  22 5c 41 4c 2f 22 3b 0a  20 20 20 20 42 50 55 54  |"\AL/";.    BPUT|
000009b0  23 6f 75 74 66 69 6c 65  25 2c 31 30 0a 20 20 20  |#outfile%,10.   |
000009c0  20 42 50 55 54 23 6f 75  74 66 69 6c 65 25 2c 31  | BPUT#outfile%,1|
000009d0  30 0a 20 20 20 20 42 50  55 54 23 6f 75 74 66 69  |0.    BPUT#outfi|
000009e0  6c 65 25 2c 22 5c 30 22  3b 0a 20 20 20 20 42 3d  |le%,"\0";.    B=|
000009f0  53 20 20 0a 20 20 20 20  57 48 49 4c 45 20 42 20  |S  .    WHILE B |
00000a00  3e 20 30 0a 20 20 20 20  20 20 20 20 42 50 55 54  |> 0.        BPUT|
00000a10  23 6f 75 74 66 69 6c 65  25 2c 22 5c 41 43 2f 7c  |#outfile%,"\AC/||
00000a20  7c 7c 7c 7c 7c 7c 7c 7c  7c 7c 7c 7c 7c 7c 7c 7c  ||||||||||||||||||
00000a30  7c 7c 7c 7c 7c 7c 7c 7c  7c 5c 41 4c 2f 22 3b 0a  ||||||||||\AL/";.|
00000a40  20 20 20 20 20 20 20 20  42 50 55 54 23 6f 75 74  |        BPUT#out|
00000a50  66 69 6c 65 25 2c 31 30  0a 20 20 20 20 20 20 20  |file%,10.       |
00000a60  20 42 50 55 54 23 6f 75  74 66 69 6c 65 25 2c 31  | BPUT#outfile%,1|
00000a70  30 0a 20 20 20 20 20 20  20 20 42 2d 3d 31 20 20  |0.        B-=1  |
00000a80  0a 20 20 20 20 45 4e 44  57 48 49 4c 45 0a 20 20  |.    ENDWHILE.  |
00000a90  20 20 20 20 0a 20 20 20  20 46 4f 52 20 44 3d 31  |    .    FOR D=1|
00000aa0  20 54 4f 20 4e 28 45 29  0a 20 20 20 20 20 20 42  | TO N(E).      B|
00000ab0  50 55 54 23 6f 75 74 66  69 6c 65 25 2c 52 49 47  |PUT#outfile%,RIG|
00000ac0  48 54 24 28 22 20 20 20  22 2b 53 54 52 24 20 44  |HT$("   "+STR$ D|
00000ad0  2c 33 29 0a 20 20 20 20  20 20 42 50 55 54 23 6f  |,3).      BPUT#o|
00000ae0  75 74 66 69 6c 65 25 2c  31 30 0a 20 20 20 20 4e  |utfile%,10.    N|
00000af0  45 58 54 0a 20 20 20 20  20 20 0a 20 20 20 20 42  |EXT.      .    B|
00000b00  3d 33 37 2d 53 2d 4e 28  45 29 20 0a 20 20 20 20  |=37-S-N(E) .    |
00000b10  57 48 49 4c 45 20 42 20  3e 20 30 0a 20 20 20 20  |WHILE B > 0.    |
00000b20  20 20 42 50 55 54 23 6f  75 74 66 69 6c 65 25 2c  |  BPUT#outfile%,|
00000b30  22 5c 41 43 2f 7c 7c 7c  7c 7c 7c 7c 7c 7c 7c 7c  |"\AC/||||||||||||
00000b40  7c 7c 7c 7c 7c 7c 7c 7c  7c 7c 7c 7c 7c 7c 7c 5c  ||||||||||||||||\|
00000b50  41 4c 2f 22 3b 0a 20 20  20 20 20 20 42 50 55 54  |AL/";.      BPUT|
00000b60  23 6f 75 74 66 69 6c 65  25 2c 31 30 0a 20 20 20  |#outfile%,10.   |
00000b70  20 20 20 42 50 55 54 23  6f 75 74 66 69 6c 65 25  |   BPUT#outfile%|
00000b80  2c 31 30 0a 20 20 20 20  20 20 42 2d 3d 31 20 20  |,10.      B-=1  |
00000b90  0a 20 20 20 20 45 4e 44  57 48 49 4c 45 20 0a 20  |.    ENDWHILE . |
00000ba0  20 20 20 53 3d 28 53 20  2b 20 4e 28 45 29 29 20  |   S=(S + N(E)) |
00000bb0  4d 4f 44 20 37 0a 20 20  4e 45 58 54 20 20 0a 20  |MOD 7.  NEXT  . |
00000bc0  20 42 50 55 54 23 6f 75  74 66 69 6c 65 25 2c 22  | BPUT#outfile%,"|
00000bd0  5c 31 22 3b 0a 20 20 42  50 55 54 23 6f 75 74 66  |\1";.  BPUT#outf|
00000be0  69 6c 65 25 2c 22 5c 41  43 2f 22 3b 0a 20 20 42  |ile%,"\AC/";.  B|
00000bf0  50 55 54 23 6f 75 74 66  69 6c 65 25 2c 53 54 52  |PUT#outfile%,STR|
00000c00  24 28 79 65 61 72 25 29  0a 20 20 42 50 55 54 23  |$(year%).  BPUT#|
00000c10  6f 75 74 66 69 6c 65 25  2c 31 30 0a 20 20 42 50  |outfile%,10.  BP|
00000c20  55 54 23 6f 75 74 66 69  6c 65 25 2c 31 30 0a 20  |UT#outfile%,10. |
00000c30  20 46 4f 52 20 44 3d 30  20 54 4f 20 33 36 0a 20  | FOR D=0 TO 36. |
00000c40  20 20 20 42 50 55 54 23  6f 75 74 66 69 6c 65 25  |   BPUT#outfile%|
00000c50  2c 44 24 28 44 20 4d 4f  44 20 37 29 0a 20 20 20  |,D$(D MOD 7).   |
00000c60  20 42 50 55 54 23 6f 75  74 66 69 6c 65 25 2c 31  | BPUT#outfile%,1|
00000c70  30 0a 20 20 20 20 42 50  55 54 23 6f 75 74 66 69  |0.    BPUT#outfi|
00000c80  6c 65 25 2c 31 30 0a 20  20 4e 45 58 54 0a 20 20  |le%,10.  NEXT.  |
00000c90  49 46 20 4e 28 32 29 3d  32 39 20 54 48 45 4e 0a  |IF N(2)=29 THEN.|
00000ca0  20 20 20 20 42 50 55 54  23 6f 75 74 66 69 6c 65  |    BPUT#outfile|
00000cb0  25 2c 22 5c 41 4c 22 0a  20 20 45 4c 53 45 0a 20  |%,"\AL".  ELSE. |
00000cc0  20 20 20 42 50 55 54 23  6f 75 74 66 69 6c 65 25  |   BPUT#outfile%|
00000cd0  2c 22 5c 41 4c 2f 22 0a  20 20 45 4e 44 49 46 0a  |,"\AL/".  ENDIF.|
00000ce0  20 20 50 52 4f 43 73 28  30 29 20 0a 45 4e 44 50  |  PROCs(0) .ENDP|
00000cf0  52 4f 43 0a a4 0a 0a 73  0a 62 25 0a 30 0a 20 20  |ROC....s.b%.0.  |
00000d00  4c 4f 43 41 4c 20 49 0a  20 20 46 4f 52 20 49 3d  |LOCAL I.  FOR I=|
00000d10  31 20 54 4f 20 34 0a 20  20 20 20 42 50 55 54 23  |1 TO 4.    BPUT#|
00000d20  6f 75 74 66 69 6c 65 25  2c 28 62 25 20 41 4e 44  |outfile%,(b% AND|
00000d30  20 32 35 35 29 0a 20 20  20 20 62 25 3d 62 25 3e  | 255).    b%=b%>|
00000d40  3e 38 0a 20 20 4e 45 58  54 20 0a 45 4e 44 50 52  |>8.  NEXT .ENDPR|
00000d50  4f 43 0a a4 0a 0a 63 6f  6c 75 6d 6e 0a 58 31 2c  |OC....column.X1,|
00000d60  20 59 31 2c 20 58 32 2c  20 59 32 0a 30 0a 20 20  | Y1, X2, Y2.0.  |
00000d70  58 31 3d 58 31 3c 3c 38  0a 20 20 59 31 3d 59 31  |X1=X1<<8.  Y1=Y1|
00000d80  3c 3c 38 0a 20 20 58 32  3d 58 32 3c 3c 38 0a 20  |<<8.  X2=X2<<8. |
00000d90  20 59 32 3d 59 32 3c 3c  38 0a 20 20 49 46 20 66  | Y2=Y2<<8.  IF f|
00000da0  69 72 73 74 20 54 48 45  4e 0a 20 20 20 20 58 62  |irst THEN.    Xb|
00000db0  3d 58 31 0a 20 20 20 20  59 62 3d 59 31 0a 20 20  |=X1.    Yb=Y1.  |
00000dc0  20 20 58 74 3d 58 32 0a  20 20 20 20 59 74 3d 59  |  Xt=X2.    Yt=Y|
00000dd0  32 0a 20 20 20 20 66 69  72 73 74 3d 46 41 4c 53  |2.    first=FALS|
00000de0  45 0a 20 20 45 4c 53 45  0a 20 20 20 20 49 46 20  |E.  ELSE.    IF |
00000df0  58 62 3e 58 31 20 54 48  45 4e 20 58 62 3d 58 31  |Xb>X1 THEN Xb=X1|
00000e00  0a 20 20 20 20 49 46 20  59 62 3e 59 31 20 54 48  |.    IF Yb>Y1 TH|
00000e10  45 4e 20 59 62 3d 59 31  0a 20 20 20 20 49 46 20  |EN Yb=Y1.    IF |
00000e20  58 74 3c 58 32 20 54 48  45 4e 20 58 74 3d 58 32  |Xt<X2 THEN Xt=X2|
00000e30  0a 20 20 20 20 49 46 20  59 74 3c 59 32 20 54 48  |.    IF Yt<Y2 TH|
00000e40  45 4e 20 59 74 3d 59 32  0a 20 20 45 4e 44 49 46  |EN Yt=Y2.  ENDIF|
00000e50  0a 20 20 50 52 4f 43 73  28 31 30 29 0a 20 20 50  |.  PROCs(10).  P|
00000e60  52 4f 43 73 28 32 34 29  0a 20 20 50 52 4f 43 73  |ROCs(24).  PROCs|
00000e70  28 58 31 29 0a 20 20 50  52 4f 43 73 28 59 31 29  |(X1).  PROCs(Y1)|
00000e80  0a 20 20 50 52 4f 43 73  28 58 32 29 0a 20 20 50  |.  PROCs(X2).  P|
00000e90  52 4f 43 73 28 59 32 29  20 0a 45 4e 44 50 52 4f  |ROCs(Y2) .ENDPRO|
00000ea0  43 0a a4 0a 0a 43 72 65  61 74 65 54 65 78 74 41  |C....CreateTextA|
00000eb0  72 65 61 0a 2a 2a 2a 0a  30 0a 4c 4f 43 41 4c 20  |rea.***.0.LOCAL |
00000ec0  49 0a 66 69 72 73 74 3d  54 52 55 45 0a 54 78 74  |I.first=TRUE.Txt|
00000ed0  70 74 72 25 3d 50 54 52  23 6f 75 74 66 69 6c 65  |ptr%=PTR#outfile|
00000ee0  25 0a 0a 52 45 4d 20 53  65 6e 64 20 44 75 6d 6d  |%..REM Send Dumm|
00000ef0  79 20 74 65 78 74 20 68  65 61 64 65 72 0a 46 4f  |y text header.FO|
00000f00  52 20 49 3d 31 20 54 4f  20 32 34 0a 20 20 42 50  |R I=1 TO 24.  BP|
00000f10  55 54 23 6f 75 74 66 69  6c 65 25 2c 34 32 0a 4e  |UT#outfile%,42.N|
00000f20  45 58 54 0a 52 45 4d 20  43 72 65 61 74 65 20 63  |EXT.REM Create c|
00000f30  6f 6c 75 6d 6e 73 0a 61  3d 39 0a 50 52 4f 43 63  |olumns.a=9.PROCc|
00000f40  6f 6c 75 6d 6e 28 31 30  30 2c 36 34 2c 31 37 33  |olumn(100,64,173|
00000f50  2c 61 2b 36 34 2b 33 38  2a 33 35 29 0a 46 4f 52  |,a+64+38*35).FOR|
00000f60  20 49 3d 30 20 54 4f 20  31 31 0a 20 20 50 52 4f  | I=0 TO 11.  PRO|
00000f70  43 63 6f 6c 75 6d 6e 28  31 37 33 2b 49 2a 31 34  |Ccolumn(173+I*14|
00000f80  36 2c 36 34 2c 33 31 39  2b 49 2a 31 34 36 2c 61  |6,64,319+I*146,a|
00000f90  2b 36 34 2b 33 38 2a 33  35 29 0a 4e 45 58 54 0a  |+64+38*35).NEXT.|
00000fa0  50 52 4f 43 63 6f 6c 75  6d 6e 28 31 37 33 2b 31  |PROCcolumn(173+1|
00000fb0  32 2a 31 34 36 2c 36 34  2c 32 34 36 2b 31 32 2a  |2*146,64,246+12*|
00000fc0  31 34 36 2c 61 2b 36 34  2b 33 38 2a 33 35 29 0a  |146,a+64+38*35).|
00000fd0  0a 52 45 4d 20 53 65 6e  64 20 46 6f 6f 74 65 72  |.REM Send Footer|
00000fe0  0a 46 4f 52 20 49 3d 31  20 54 4f 20 34 0a 20 20  |.FOR I=1 TO 4.  |
00000ff0  50 52 4f 43 73 28 30 29  0a 4e 45 58 54 0a 0a 50  |PROCs(0).NEXT..P|
00001000  52 4f 43 73 28 26 46 46  46 46 46 46 30 30 29 0a  |ROCs(&FFFFFF00).|
00001010  0a 52 45 4d 20 73 65 6e  64 20 54 65 78 74 0a 0a  |.REM send Text..|
00001020  50 52 4f 43 74 65 78 74  0a 52 45 4d 20 4e 6f 77  |PROCtext.REM Now|
00001030  20 73 65 6e 64 20 52 65  61 6c 20 68 65 61 64 65  | send Real heade|
00001040  72 0a 50 25 3d 50 54 52  23 6f 75 74 66 69 6c 65  |r.P%=PTR#outfile|
00001050  25 0a 50 54 52 23 6f 75  74 66 69 6c 65 25 3d 54  |%.PTR#outfile%=T|
00001060  78 74 70 74 72 25 0a 50  52 4f 43 73 28 39 29 0a  |xtptr%.PROCs(9).|
00001070  50 52 4f 43 73 28 34 2a  28 28 50 25 2d 54 78 74  |PROCs(4*((P%-Txt|
00001080  70 74 72 25 29 44 49 56  20 34 29 29 0a 50 52 4f  |ptr%)DIV 4)).PRO|
00001090  43 73 28 58 62 29 0a 50  52 4f 43 73 28 59 62 29  |Cs(Xb).PROCs(Yb)|
000010a0  0a 50 52 4f 43 73 28 58  74 29 0a 50 52 4f 43 73  |.PROCs(Xt).PROCs|
000010b0  28 59 74 29 0a 50 54 52  23 6f 75 74 66 69 6c 65  |(Yt).PTR#outfile|
000010c0  25 3d 50 25 0a 0a 49 46  20 66 69 72 73 74 31 20  |%=P%..IF first1 |
000010d0  54 48 45 4e 0a 20 20 58  6d 69 6e 3d 58 62 3a 59  |THEN.  Xmin=Xb:Y|
000010e0  6d 69 6e 3d 59 62 3a 58  6d 61 78 3d 58 74 3a 59  |min=Yb:Xmax=Xt:Y|
000010f0  6d 61 78 3d 59 74 3a 66  69 72 73 74 31 3d 46 41  |max=Yt:first1=FA|
00001100  4c 53 45 0a 45 4c 53 45  0a 20 20 49 46 20 58 6d  |LSE.ELSE.  IF Xm|
00001110  69 6e 3e 58 62 20 54 48  45 4e 20 58 6d 69 6e 3d  |in>Xb THEN Xmin=|
00001120  58 62 0a 20 20 49 46 20  59 6d 69 6e 3e 59 62 20  |Xb.  IF Ymin>Yb |
00001130  54 48 45 4e 20 59 6d 69  6e 3d 59 62 0a 20 20 49  |THEN Ymin=Yb.  I|
00001140  46 20 58 6d 61 78 3c 58  74 20 54 48 45 4e 20 58  |F Xmax<Xt THEN X|
00001150  6d 61 78 3d 58 74 0a 20  20 49 46 20 59 6d 61 78  |max=Xt.  IF Ymax|
00001160  3c 59 74 20 54 48 45 4e  20 59 6d 61 78 3d 59 74  |<Yt THEN Ymax=Yt|
00001170  0a 45 4e 44 49 46 0a 0a  45 4e 44 50 52 4f 43 0a  |.ENDIF..ENDPROC.|
00001180  a4 0a 0a 43 72 65 61 74  65 4c 69 6e 65 0a 58 31  |...CreateLine.X1|
00001190  2c 20 59 31 2c 20 58 32  2c 20 59 32 2c 20 74 68  |, Y1, X2, Y2, th|
000011a0  2c 20 63 6f 6c 0a 30 0a  20 20 58 31 3d 58 31 3c  |, col.0.  X1=X1<|
000011b0  3c 38 3a 59 31 3d 59 31  3c 3c 38 3a 58 32 3d 58  |<8:Y1=Y1<<8:X2=X|
000011c0  32 3c 3c 38 3a 59 32 3d  59 32 3c 3c 38 3a 74 68  |2<<8:Y2=Y2<<8:th|
000011d0  3d 74 68 3c 3c 38 0a 20  20 52 45 4d 20 46 69 6e  |=th<<8.  REM Fin|
000011e0  64 20 62 6f 75 6e 64 61  72 79 20 62 6f 78 20 64  |d boundary box d|
000011f0  61 74 61 20 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0a 20  |ata ----------. |
00001200  20 0a 20 20 58 62 3d 58  31 3a 59 62 3d 59 31 3a  | .  Xb=X1:Yb=Y1:|
00001210  58 74 3d 58 32 3a 59 74  3d 59 32 0a 20 20 49 46  |Xt=X2:Yt=Y2.  IF|
00001220  20 58 74 3c 58 62 20 53  57 41 50 20 58 74 2c 58  | Xt<Xb SWAP Xt,X|
00001230  62 0a 20 20 49 46 20 59  74 3c 59 62 20 53 57 41  |b.  IF Yt<Yb SWA|
00001240  50 20 59 74 2c 59 62 0a  20 20 4c 3d 53 51 52 28  |P Yt,Yb.  L=SQR(|
00001250  28 58 32 2d 58 31 29 5e  32 2b 28 59 32 2d 59 31  |(X2-X1)^2+(Y2-Y1|
00001260  29 5e 32 29 0a 20 20 49  46 20 4c 3c 3e 30 20 54  |)^2).  IF L<>0 T|
00001270  48 45 4e 0a 20 20 20 20  64 58 3d 41 42 53 28 59  |HEN.    dX=ABS(Y|
00001280  32 2d 59 31 29 2a 74 68  2f 28 32 2a 4c 29 0a 20  |2-Y1)*th/(2*L). |
00001290  20 20 20 64 59 3d 41 42  53 28 58 32 2d 58 31 29  |   dY=ABS(X2-X1)|
000012a0  2a 74 68 2f 28 32 2a 4c  29 0a 20 20 20 20 58 62  |*th/(2*L).    Xb|
000012b0  2d 3d 64 58 3a 58 74 2b  3d 64 58 3a 59 62 2d 3d  |-=dX:Xt+=dX:Yb-=|
000012c0  64 59 3a 59 74 2b 3d 64  59 0a 20 20 45 4e 44 49  |dY:Yt+=dY.  ENDI|
000012d0  46 0a 20 20 0a 20 20 52  45 4d 20 52 65 6d 20 4b  |F.  .  REM Rem K|
000012e0  65 65 70 20 42 6f 75 6e  64 61 72 79 20 42 6f 78  |eep Boundary Box|
000012f0  20 4d 69 6e 2f 4d 61 78  0a 20 20 0a 20 20 49 46  | Min/Max.  .  IF|
00001300  20 66 69 72 73 74 20 54  48 45 4e 0a 20 20 20 20  | first THEN.    |
00001310  58 62 6d 69 6e 3d 58 62  3a 59 62 6d 69 6e 3d 59  |Xbmin=Xb:Ybmin=Y|
00001320  62 3a 58 74 6d 61 78 3d  58 74 3a 59 74 6d 61 78  |b:Xtmax=Xt:Ytmax|
00001330  3d 59 74 3a 66 69 72 73  74 3d 46 41 4c 53 45 0a  |=Yt:first=FALSE.|
00001340  20 20 45 4c 53 45 0a 20  20 20 20 49 46 20 58 62  |  ELSE.    IF Xb|
00001350  6d 69 6e 3e 58 62 20 54  48 45 4e 20 58 62 6d 69  |min>Xb THEN Xbmi|
00001360  6e 3d 58 62 0a 20 20 20  20 49 46 20 59 62 6d 69  |n=Xb.    IF Ybmi|
00001370  6e 3e 59 62 20 54 48 45  4e 20 59 62 6d 69 6e 3d  |n>Yb THEN Ybmin=|
00001380  59 62 0a 20 20 20 20 49  46 20 58 74 6d 61 78 3c  |Yb.    IF Xtmax<|
00001390  58 74 20 54 48 45 4e 20  58 74 6d 61 78 3d 58 74  |Xt THEN Xtmax=Xt|
000013a0  0a 20 20 20 20 49 46 20  59 74 6d 61 78 3c 59 74  |.    IF Ytmax<Yt|
000013b0  20 54 48 45 4e 20 59 74  6d 61 78 3d 59 74 0a 20  | THEN Ytmax=Yt. |
000013c0  20 45 4e 44 49 46 0a 0a  52 45 4d 20 4f 4b 20 53  | ENDIF..REM OK S|
000013d0  65 6e 64 20 61 6c 6c 20  64 61 74 61 0a 0a 50 52  |end all data..PR|
000013e0  4f 43 73 28 32 29 0a 50  52 4f 43 73 28 36 38 29  |OCs(2).PROCs(68)|
000013f0  0a 50 52 4f 43 73 28 58  62 29 0a 50 52 4f 43 73  |.PROCs(Xb).PROCs|
00001400  28 59 62 29 0a 50 52 4f  43 73 28 58 74 29 0a 50  |(Yb).PROCs(Xt).P|
00001410  52 4f 43 73 28 59 74 29  0a 50 52 4f 43 73 28 26  |ROCs(Yt).PROCs(&|
00001420  46 46 46 46 46 46 46 46  29 0a 50 52 4f 43 73 28  |FFFFFFFF).PROCs(|
00001430  63 6f 6c 29 0a 50 52 4f  43 73 28 74 68 29 0a 50  |col).PROCs(th).P|
00001440  52 4f 43 73 28 26 32 30  31 30 30 30 34 32 29 0a  |ROCs(&20100042).|
00001450  50 52 4f 43 73 28 32 29  0a 50 52 4f 43 73 28 58  |PROCs(2).PROCs(X|
00001460  31 29 0a 50 52 4f 43 73  28 59 31 29 0a 50 52 4f  |1).PROCs(Y1).PRO|
00001470  43 73 28 38 29 0a 50 52  4f 43 73 28 58 32 29 0a  |Cs(8).PROCs(X2).|
00001480  50 52 4f 43 73 28 59 32  29 0a 50 52 4f 43 73 28  |PROCs(Y2).PROCs(|
00001490  30 29 0a 63 2b 3d 31 20  0a 45 4e 44 50 52 4f 43  |0).c+=1 .ENDPROC|
000014a0  0a a4 0a 0a 43 72 65 61  74 65 47 72 69 64 0a 2a  |....CreateGrid.*|
000014b0  2a 2a 0a 30 0a 20 20 0a  20 20 52 45 4d 20 53 65  |**.0.  .  REM Se|
000014c0  6e 64 20 64 75 6d 6d 79  20 47 72 6f 75 70 20 64  |nd dummy Group d|
000014d0  61 74 61 20 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |ata ------------|
000014e0  0a 20 20 67 72 6f 75 70  70 74 72 25 3d 50 54 52  |.  groupptr%=PTR|
000014f0  23 6f 75 74 66 69 6c 65  25 0a 20 20 46 4f 52 20  |#outfile%.  FOR |
00001500  49 3d 31 20 54 4f 20 33  36 0a 20 20 20 20 42 50  |I=1 TO 36.    BP|
00001510  55 54 23 6f 75 74 66 69  6c 65 25 2c 33 32 0a 20  |UT#outfile%,32. |
00001520  20 4e 45 58 54 0a 20 20  66 69 72 73 74 3d 54 52  | NEXT.  first=TR|
00001530  55 45 3a 63 3d 30 0a 20  20 0a 20 20 52 45 4d 20  |UE:c=0.  .  REM |
00001540  53 65 6e 64 20 74 68 65  20 6c 69 6e 65 73 20 68  |Send the lines h|
00001550  65 72 65 20 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |ere ------------|
00001560  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00001570  2d 2d 2d 2d 2d 0a 20 20  46 4f 52 20 59 3d 30 20  |-----.  FOR Y=0 |
00001580  54 4f 20 33 38 0a 20 20  20 20 50 52 4f 43 43 72  |TO 38.    PROCCr|
00001590  65 61 74 65 4c 69 6e 65  28 31 30 30 2c 36 34 2b  |eateLine(100,64+|
000015a0  59 2a 33 35 2c 31 39 39  38 2c 36 34 2b 59 2a 33  |Y*35,1998,64+Y*3|
000015b0  35 2c 30 2c 26 34 34 34  34 34 34 30 30 29 0a 20  |5,0,&44444400). |
000015c0  20 4e 45 58 54 0a 0a 20  20 50 52 4f 43 43 72 65  | NEXT..  PROCCre|
000015d0  61 74 65 4c 69 6e 65 28  31 30 30 2c 36 34 2c 31  |ateLine(100,64,1|
000015e0  30 30 2c 36 34 2b 33 38  2a 33 35 2c 32 2e 35 2c  |00,64+38*35,2.5,|
000015f0  30 29 0a 20 20 50 52 4f  43 43 72 65 61 74 65 4c  |0).  PROCCreateL|
00001600  69 6e 65 28 31 39 39 38  2c 36 34 2c 31 39 39 38  |ine(1998,64,1998|
00001610  2c 36 34 2b 33 38 2a 33  35 2c 32 2e 35 2c 30 29  |,64+38*35,2.5,0)|
00001620  0a 20 20 46 4f 52 20 59  3d 30 20 54 4f 20 31 32  |.  FOR Y=0 TO 12|
00001630  0a 20 20 20 20 50 52 4f  43 43 72 65 61 74 65 4c  |.    PROCCreateL|
00001640  69 6e 65 28 31 37 33 2b  59 2a 31 34 36 2c 36 34  |ine(173+Y*146,64|
00001650  2c 31 37 33 2b 59 2a 31  34 36 2c 36 34 2b 33 38  |,173+Y*146,64+38|
00001660  2a 33 35 2c 31 2e 35 2c  30 29 0a 20 20 4e 45 58  |*35,1.5,0).  NEX|
00001670  54 0a 20 20 50 52 4f 43  43 72 65 61 74 65 4c 69  |T.  PROCCreateLi|
00001680  6e 65 28 31 30 30 2c 36  34 2c 31 39 39 38 2c 36  |ne(100,64,1998,6|
00001690  34 2c 32 2e 35 2c 30 29  0a 20 20 50 52 4f 43 43  |4,2.5,0).  PROCC|
000016a0  72 65 61 74 65 4c 69 6e  65 28 31 30 30 2c 36 34  |reateLine(100,64|
000016b0  2b 33 38 2a 33 35 2c 31  39 39 38 2c 36 34 2b 33  |+38*35,1998,64+3|
000016c0  38 2a 33 35 2c 32 2e 35  2c 30 29 0a 20 20 46 4f  |8*35,2.5,0).  FO|
000016d0  52 20 59 3d 30 20 54 4f  20 35 0a 20 20 20 20 50  |R Y=0 TO 5.    P|
000016e0  52 4f 43 43 72 65 61 74  65 4c 69 6e 65 28 31 30  |ROCCreateLine(10|
000016f0  30 2c 31 33 34 2b 37 2a  33 35 2a 59 2c 31 39 39  |0,134+7*35*Y,199|
00001700  38 2c 31 33 34 2b 37 2a  33 35 2a 59 2c 31 2e 35  |8,134+7*35*Y,1.5|
00001710  2c 30 29 0a 20 20 4e 45  58 54 0a 20 20 52 45 4d  |,0).  NEXT.  REM|
00001720  20 4e 6f 77 20 67 6f 20  62 61 63 6b 20 61 6e 64  | Now go back and|
00001730  20 73 65 6e 64 20 67 72  6f 75 70 20 64 61 74 61  | send group data|
00001740  0a 20 20 50 25 3d 50 54  52 23 6f 75 74 66 69 6c  |.  P%=PTR#outfil|
00001750  65 25 3a 50 54 52 23 6f  75 74 66 69 6c 65 25 3d  |e%:PTR#outfile%=|
00001760  67 72 6f 75 70 70 74 72  25 0a 20 20 50 52 4f 43  |groupptr%.  PROC|
00001770  73 28 36 29 0a 20 20 50  52 4f 43 73 28 50 25 2d  |s(6).  PROCs(P%-|
00001780  67 72 6f 75 70 70 74 72  25 29 0a 20 20 50 52 4f  |groupptr%).  PRO|
00001790  43 73 28 58 62 6d 69 6e  29 0a 20 20 50 52 4f 43  |Cs(Xbmin).  PROC|
000017a0  73 28 59 62 6d 69 6e 29  0a 20 20 50 52 4f 43 73  |s(Ybmin).  PROCs|
000017b0  28 58 74 6d 61 78 29 0a  20 20 50 52 4f 43 73 28  |(Xtmax).  PROCs(|
000017c0  59 74 6d 61 78 29 0a 20  20 50 54 52 23 6f 75 74  |Ytmax).  PTR#out|
000017d0  66 69 6c 65 25 3d 50 25  0a 20 20 49 46 20 66 69  |file%=P%.  IF fi|
000017e0  72 73 74 31 20 54 48 45  4e 0a 20 20 20 20 58 6d  |rst1 THEN.    Xm|
000017f0  69 6e 3d 58 62 6d 69 6e  3a 59 6d 69 6e 3d 59 62  |in=Xbmin:Ymin=Yb|
00001800  6d 69 6e 3a 58 6d 61 78  3d 58 74 6d 61 78 3a 59  |min:Xmax=Xtmax:Y|
00001810  6d 61 78 3d 59 74 6d 61  78 3a 66 69 72 73 74 31  |max=Ytmax:first1|
00001820  3d 46 41 4c 53 45 0a 20  20 45 4c 53 45 0a 20 20  |=FALSE.  ELSE.  |
00001830  20 20 49 46 20 58 6d 69  6e 3e 58 62 6d 69 6e 20  |  IF Xmin>Xbmin |
00001840  54 48 45 4e 20 58 6d 69  6e 3d 58 62 6d 69 6e 0a  |THEN Xmin=Xbmin.|
00001850  20 20 20 20 49 46 20 59  6d 69 6e 3e 59 62 6d 69  |    IF Ymin>Ybmi|
00001860  6e 20 54 48 45 4e 20 59  6d 69 6e 3d 59 62 6d 69  |n THEN Ymin=Ybmi|
00001870  6e 0a 20 20 20 20 49 46  20 58 6d 61 78 3c 58 74  |n.    IF Xmax<Xt|
00001880  6d 61 78 20 54 48 45 4e  20 58 6d 61 78 3d 58 74  |max THEN Xmax=Xt|
00001890  6d 61 78 0a 20 20 20 20  49 46 20 59 6d 61 78 3c  |max.    IF Ymax<|
000018a0  59 74 6d 61 78 20 54 48  45 4e 20 59 6d 61 78 3d  |Ytmax THEN Ymax=|
000018b0  59 74 6d 61 78 0a 20 20  45 4e 44 49 46 0a 20 0a  |Ytmax.  ENDIF. .|
000018c0  45 4e 44 50 52 4f 43 0a  a4 0a 0a 77 69 6e 5f 6b  |ENDPROC....win_k|
000018d0  6c 69 6b 0a 77 69 6e 64  6f 77 25 2c 69 63 6f 6e  |lik.window%,icon|
000018e0  25 2c 62 75 74 74 6f 6e  25 0a 31 30 0a 20 20 49  |%,button%.10.  I|
000018f0  46 20 77 69 6e 64 6f 77  25 3d 46 6c 65 78 69 50  |F window%=FlexiP|
00001900  6c 61 6e 20 54 48 45 4e  0a 20 20 20 20 79 65 61  |lan THEN.    yea|
00001910  72 24 3d 52 45 41 44 49  43 4f 4e 28 77 69 6e 64  |r$=READICON(wind|
00001920  6f 77 25 2c 34 29 0a 20  20 20 20 49 46 20 79 65  |ow%,4).    IF ye|
00001930  61 72 24 3d 22 22 20 54  48 45 4e 20 79 65 61 72  |ar$="" THEN year|
00001940  24 3d 22 30 22 0a 20 20  20 20 20 20 79 65 61 72  |$="0".      year|
00001950  25 3d 45 56 41 4c 28 79  65 61 72 24 29 0a 20 20  |%=EVAL(year$).  |
00001960  20 20 45 4e 44 49 46 0a  20 20 20 20 43 41 53 45  |  ENDIF.    CASE|
00001970  20 69 63 6f 6e 25 20 4f  46 0a 20 20 20 20 57 48  | icon% OF.    WH|
00001980  45 4e 20 30 3a 0a 20 20  20 20 20 20 4d 4f 55 53  |EN 0:.      MOUS|
00001990  45 28 6d 78 25 2c 20 6d  79 25 2c 20 6d 62 25 2c  |E(mx%, my%, mb%,|
000019a0  20 77 69 6e 64 6f 77 2c  20 69 63 6f 6e 29 0a 20  | window, icon). |
000019b0  20 20 20 20 20 53 45 54  49 43 4f 4e 28 73 61 76  |     SETICON(sav|
000019c0  65 61 73 25 2c 20 31 2c  20 22 50 6c 61 6e 5f 22  |eas%, 1, "Plan_"|
000019d0  2b 79 65 61 72 24 29 0a  20 20 20 20 20 20 43 4c  |+year$).      CL|
000019e0  4f 53 45 57 49 4e 44 4f  57 28 46 6c 65 78 69 50  |OSEWINDOW(FlexiP|
000019f0  6c 61 6e 29 0a 20 20 20  20 20 20 4d 4f 56 45 57  |lan).      MOVEW|
00001a00  49 4e 44 4f 57 28 73 61  76 65 61 73 25 2c 20 6d  |INDOW(saveas%, m|
00001a10  78 25 2d 31 35 30 2c 6d  79 25 2d 35 30 29 0a 20  |x%-150,my%-50). |
00001a20  20 20 20 20 20 4f 50 45  4e 57 49 4e 44 4f 57 28  |     OPENWINDOW(|
00001a30  73 61 76 65 61 73 25 29  0a 20 20 20 20 57 48 45  |saveas%).    WHE|
00001a40  4e 20 31 3a 0a 20 20 20  20 20 20 43 4c 4f 53 45  |N 1:.      CLOSE|
00001a50  57 49 4e 44 4f 57 28 46  6c 65 78 69 50 6c 61 6e  |WINDOW(FlexiPlan|
00001a60  29 0a 20 20 20 20 57 48  45 4e 20 32 3a 0a 20 20  |).    WHEN 2:.  |
00001a70  20 20 20 20 79 65 61 72  25 20 2d 3d 31 0a 20 20  |    year% -=1.  |
00001a80  20 20 20 20 79 65 61 72  24 3d 53 54 52 24 28 79  |    year$=STR$(y|
00001a90  65 61 72 25 29 0a 20 20  20 20 20 20 53 45 54 49  |ear%).      SETI|
00001aa0  43 4f 4e 28 77 69 6e 64  6f 77 25 2c 20 34 2c 20  |CON(window%, 4, |
00001ab0  79 65 61 72 24 29 0a 20  20 20 20 57 48 45 4e 20  |year$).    WHEN |
00001ac0  33 3a 0a 20 20 20 20 20  20 79 65 61 72 25 20 2b  |3:.      year% +|
00001ad0  3d 31 0a 20 20 20 20 20  20 79 65 61 72 24 3d 53  |=1.      year$=S|
00001ae0  54 52 24 28 79 65 61 72  25 29 0a 20 20 20 20 20  |TR$(year%).     |
00001af0  20 53 45 54 49 43 4f 4e  28 77 69 6e 64 6f 77 25  | SETICON(window%|
00001b00  2c 20 34 2c 20 79 65 61  72 24 29 0a 20 20 20 20  |, 4, year$).    |
00001b10  45 4e 44 43 41 53 45 0a  20 20 20 20 49 46 20 79  |ENDCASE.    IF y|
00001b20  65 61 72 25 3c 6d 69 6e  79 65 61 72 25 20 54 48  |ear%<minyear% TH|
00001b30  45 4e 0a 20 20 20 20 20  20 79 65 61 72 25 3d 6d  |EN.      year%=m|
00001b40  69 6e 79 65 61 72 25 0a  20 20 20 20 20 20 79 65  |inyear%.      ye|
00001b50  61 72 24 3d 53 54 52 24  28 6d 69 6e 79 65 61 72  |ar$=STR$(minyear|
00001b60  25 29 0a 20 20 20 20 20  20 53 45 54 49 43 4f 4e  |%).      SETICON|
00001b70  28 46 6c 65 78 69 50 6c  61 6e 2c 20 34 2c 20 79  |(FlexiPlan, 4, y|
00001b80  65 61 72 24 29 0a 20 20  20 20 20 20 57 41 52 4e  |ear$).      WARN|
00001b90  49 4e 47 28 22 43 61 6e  27 74 20 68 61 76 65 20  |ING("Can't have |
00001ba0  79 65 61 72 73 20 6c 65  73 73 20 74 68 61 6e 20  |years less than |
00001bb0  22 2b 53 54 52 24 28 6d  69 6e 79 65 61 72 25 29  |"+STR$(minyear%)|
00001bc0  2c 20 22 46 6c 65 78 69  50 6c 61 6e 22 29 0a 20  |, "FlexiPlan"). |
00001bd0  20 20 20 45 4e 44 49 46  0a 20 20 45 4e 44 49 46  |   ENDIF.  ENDIF|
00001be0  0a 20 20 20 0a 45 4e 44  50 52 4f 43 0a a4 0a 40  |.   .ENDPROC...@|
00001bf0  0a 0a                                             |..|
00001bf2