Random hardware
Random software
Random game
  • Entry name:
     Project Planner 
  • Category:
    Other
  • Publisher/Developer:
    ANTIC Publishing, INC., Flop 1
  • Year:
    1987
  • Code:
    David Schwener
  • Media format:
    Diskette
  • Programming language:
    Atari BASIC
Project Planner Project Planner Project Planner Project Planner Project Planner Project Planner Project Planner
Listing 1
1 REM *******************************
2 REM *PRACTICAL PROGRAMMING CONYEST*
3 REM * >>> WINNER <<< *
4 REM *CRITICAL PATH PROJECT MANAGER*
6 REM * BY DAVID SCHWENER *
8 REM * (C)1987,​ ANTIC PUBLISHING *
9 REM *******************************
10 GOTO 4830
20 IF LAST=Q0 THEN POSITION 16,​Q10:​? "":​GOTO 310
30 GOSUB 320:​POKE 82,​12:​?:​POSITION 12,​Q9:​WIDTH=15:​LENGTH=Q4:​CMD=Q0:​GOSUB 690:​POKE 82,​Q0
40 POKE 712,​66:​POSITION 14,​Q10:​? "":​POSITION 13,​11:​? "":​CALC=Q1
50 A(Q1,​Q3)=A(Q1,​Q1):​IF LAST=Q1 THEN 300
60 FOR I=Q2 TO LAST
70 IF A(I,​Q1) THEN A(I,​Q3)=A(I,​Q1):​GOTO 160
80 FLAG=Q0:​DUR=-1
90 FOR J=Q5 TO Q9
100 FOR K=Q1 TO I-Q1:​IF A(I,​J)=A(K,​Q0) THEN POP:​GOTO 120
110 NEXT K:​GOTO 130
120 IF A(K,​Q2)+A(K,​Q3)>DUR THEN DUR=A(K,​Q2)+A(K,​Q3):​FLAG=K
130 NEXT J
140 IF FLAG=Q0 THEN A(I,​Q3)=Q0:​GOTO 160
150 A(I,​Q3)=A(FLAG,​Q3)+A(FLAG,​Q2)
160 NEXT I
170 A(LAST+Q1,​Q3)=A(LAST,​Q3):​A(LAST+Q1,​Q2)=Q0
180 A(LAST+Q1,​Q4)=A(LAST+Q1,​Q3)
190 FOR I=LAST TO Q1 STEP -1
200 DUR=9999:​FLAG=Q1
210 FOR J=I+Q1 TO LAST
220 FOR K=Q5 TO Q9
230 IF A(J,​K)=A(I,​Q0) THEN POP:​GOTO 250
234 REM
240 NEXT K:​GOTO 260
250 IF A(J,​Q4)-A(I,​Q2)<DUR THEN DUR=A(J,​Q4)-A(I,​Q2):​FLAG=J
260 NEXT J
270 IF FLAG=Q1 THEN FLAG=I+Q1
280 A(I,​Q4)=A(FLAG,​Q4)-A(I,​Q2):​IF A(I,​Q4)<A(I,​Q3) THEN A(I,​Q4)=A(I,​Q3)
290 NEXT I
300 GOSUB 360
310 RETURN
320 SCRN1=PEEK(88)+PEEK(89)*256
330 SCRN2=SCRN1-1024:​GOSUB 5300
340 A=USR(ADR(MOVE$),​SCRN1,​SCRN2,​980)
350 RETURN
360 POSITION Q0,​Q0:​? " ";
370 A=USR(ADR(MOVE$),​SCRN2,​SCRN1,​980)
380 RETURN
390 POKE 764,​255:​POKE 694,​Q0:​GOSUB 5300
400 GET #Q1,​A
410 RETURN
420 W=Q1:​G$=""
430 GOSUB 390
440 IF A=126 AND W>Q1 THEN ? CHR$(126);".";:​G$(W-Q1,​W-Q1)=CHR$(32):​W=W-Q1:​GOTO 430
450 IF W>SIZE THEN 470
460 IF A>31 AND A<123 THEN G$(W,​W)=CHR$(A):​? CHR$(A);:​W=W+Q1:​GOTO 430
470 IF A=155 OR A=27 THEN RETURN
480 GOTO 430
490 W=Q1:​G$=""
500 GOSUB 390
510 IF A=126 AND W>Q1 THEN ? CHR$(126);".";:​G$(W-Q1,​W-Q1)=CHR$(32):​W=W-Q1:​GOTO 500
520 IF W>SIZE THEN 540
530 IF A>47 AND A<58 THEN G$(W,​W)=CHR$(A):​? CHR$(A);:​W=W+Q1:​GOTO 500
540 IF (A=155 AND W>Q1) OR A=27 THEN RETURN
550 GOTO 500
560 IF LEN(G$)<Q8 THEN 2060
570 DATE$=G$
580 MONTH=VAL(DATE$(Q1,​Q2)):​IF MONTH<Q1 OR MONTH>12 THEN 2060
590 DAY=VAL(DATE$(Q4,​Q5)):​IF DAY<Q1 OR DAY>31 THEN 2060
600 YEAR=VAL(DATE$(Q7,​Q8))+1900
610 Z1=YEAR-INT(Q1/(MONTH+Q1)+0.7000000000000001)
620 Z2=(MONTH+Q1)+12*INT(Q1/(MONTH+Q1)+0.7000000000000001)
630 Z3=INT(Z1*365.25):​Z4=INT(Z2*30.6001):​Z5=Z3+Z4+DAY:​WD=Z5-Q7*INT(Z5/Q7)
640 RETURN
650 YR=INT((Z5-122.1)/365.25)
660 MN=INT((Z5-INT(365.25*YR))/30.6001)
670 DAY=Z5-INT(365.25*YR)-INT(30.6001*MN):​MONTH=MN-Q1-12*(MN>13):​YEAR=YR+Q1*(MONTH<Q3):​WD=Z5-Q7*INT(Z5/Q7)
680 RETURN
690 YY=PEEK(84)
700 ? "";BORDER$(Q1,​WIDTH-Q2);""
710 IF CMD>Q0 THEN POSITION X,​YY:​? "";BLANK$(Q1,​CMD);""
720 FOR I=Q1 TO LENGTH-Q2
730 ? "";BLANK$(Q1,​WIDTH-Q2);""
740 NEXT I
750 ? "";BORDER$(Q1,​WIDTH-Q2);""
760 RETURN
770 TRAP 5270
780 GRAPHICS Q0:​POKE 82,​Q0:​POKE 752,​Q1
790 POKE 710,​Q2:​POKE 709,​Q2:​GOSUB 5300
800 POSITION Q2,​Q0:​? LOGO$
810 POKE 82,​Q8:​?
820 ? "";BLANK$(Q1,​22);""
830 ? "";SPACE$(Q1,​22);""
840 ? " Vyberte si z Meny:​ "
850 ? "";SPACE$(Q1,​22);""
860 ? "";BLANK$(Q1,​22);""
870 ?
880 ? "";BORDER1$(Q1,​22);""
890 ? "| 1.Load/Save (Disk) |"
900 ? "| 2.Zadani Projektu |"
910 ? "| 3.Gantt diagram |"
920 ? "| 4.Vytisteni zpravy |"
930 ? "";BORDER1$(Q1,​22);""
940 ?:​? " Co to bude?"
950 POKE 709,​Q10
960 GOSUB 390:​A=A-48:​IF A<Q0 THEN 960
970 ON A GOTO 990,​1630,​2330,​3670
980 GOTO 960
990 GRAPHICS Q0:​POKE 82,​Q0:​POKE 752,​Q1:​POKE 83,​39:​POKE 710,​18:​POKE 709,​18
1000 GOSUB 5300:​POSITION Q2,​Q0:​? LOGO$
1010 POKE 82,​Q8:​?
1020 ? "";BLANK$(Q1,​21);""
1030 ? "";SPACE$(Q1,​21);""
1040 ? " Load/Save Projektu "
1050 ? "";SPACE$(Q1,​21);""
1060 ? "";BLANK$(Q1,​21);""
1070 ?
1080 ? " ";BORDER1$(Q1,​17);""
1090 ? " | 1.Load (.PRJ) |"
1100 ? " | 2.Save |"
1110 ? " | 3.Obsah Disku |"
1120 ? " | 4.Zpet do Menu |"
1130 ? " ";BORDER1$(Q1,​17);""
1140 ?:​? " Co to bude?"
1150 POKE 709,​Q10
1160 GOSUB 390:​A=A-48:​IF A<Q0 THEN 1160
1170 ON A GOTO 1190,​1190,​1190,​770
1180 GOTO 1160
1190 Y=A:​GOSUB 320
1200 FNAME$=""
1210 FNAME$(Q1,​Q3)="D :​"
1220 POKE 82,​3:​POSITION Q3,​Y+12:​WIDTH=35:​LENGTH=Q3:​CMD=Q9:​X=14:​GOSUB 690
1230 POSITION Q4,​Y+13:​? "";FIELD$(Q1,​Q1);LEFT$(Q1,​Q1);:​SIZE=Q1:​GOSUB 490
1240 IF A=27 THEN 1590
1250 I=VAL(G$):​IF I<Q0 OR I>Q8 THEN 1230
1260 FNAME$(Q2,​Q2)=STR$(I)
1270 IF Y=Q3 THEN 1520
1280 POSITION Q4,​Y+13:​? "";FNAME$(Q1,​Q3);FIELD$(Q1,​Q8);"";LEFT$(Q1,​12);:​SIZE=Q8:​GOSUB 420
1290 IF A=27 THEN 1590
1300 FNAME$(LEN(FNAME$)+Q1)=G$
1310 FNAME$(LEN(FNAME$)+Q1)=".PRJ"
1320 IF Y=Q2 THEN 1420
1330 TRAP 1600:​CLOSE #Q2:​OPEN #Q2,​Q4,​Q0,​FNAME$
1340 INPUT #Q2;LAST
1350 FOR I=Q1 TO LAST:​FOR J=Q0 TO Q9:​INPUT #Q2;K:​A(I,​J)=K
1360 NEXT J:​INPUT #Q2;TNAME$:​PROJECT$(I*25+Q1,​I*25+25)=TNAME$
1370 NEXT I
1380 INPUT #Q2;TNAME$:​PROJECT$(Q1,​25)=TNAME$:​INPUT #Q2;PSTART:​INPUT #Q2;SCALE
1390 FOR I=Q0 TO Q6
1400 INPUT #Q2;J:​WORK(I)=J:​NEXT I
1410 CALC=Q1:​GOSUB 4110:​GOTO 1510
1420 IF NOT CALC THEN GOSUB 20
1430 TRAP 1600:​CLOSE #Q2:​OPEN #Q2,​Q8,​Q0,​FNAME$
1440 PRINT #Q2;LAST
1450 FOR I=Q1 TO LAST:​FOR J=Q0 TO Q9:​K=A(I,​J):​PRINT #Q2;K
1460 NEXT J:​TNAME$=PROJECT$(I*25+Q1,​I*25+25):​PRINT #Q2;TNAME$
1470 NEXT I
1480 TNAME$=PROJECT$(Q1,​25):​PRINT #Q2;TNAME$:​PRINT #Q2;PSTART:​PRINT #Q2;SCALE
1490 FOR I=Q0 TO Q6
1500 J=WORK(I):​PRINT #Q2;J:​NEXT I
1510 CLOSE #Q2:​GOTO 770
1520 FNAME$(LEN(FNAME$)+Q1)="*.PRJ"
1530 ? "":​? "DIRECTORY OF DRIVE ";FNAME$(Q2,​Q2);" PROJECTS":​?
1540 TRAP 1600:​CLOSE #Q2:​OPEN #Q2,​Q6,​Q0,​FNAME$
1550 TRAP 1570:​FOR I=Q1 TO 64
1560 INPUT #Q2,​FNAME$:​? FNAME$:​NEXT I
1570 CLOSE #Q2
1580 ?:​? "PRESS ANY KEY TO CONTINUE":​GOSUB 390
1590 GOSUB 360:​GOTO 1160
1600 POKE 82,​12:​?:​POSITION 12,​15:​WIDTH=15:​LENGTH=Q4:​CMD=Q0:​GOSUB 690:​POKE 82,​Q0
1610 POSITION 14,​16:​? "";PEEK(195):​POSITION 13,​17:​? ""
1620 GOSUB 390:​GOSUB 360:​GOTO 1160
1630 GRAPHICS Q0:​POKE 752,​Q1:​POKE 710,​34:​POKE 709,​34
1640 POKE 82,​Q0:​POKE 83,​39
1650 GOSUB 5300:​POSITION Q2,​Q0:​? LOGO$
1660 ? BORDER1$(Q1,​40);
1670 POSITION Q6,​Q5:​? INFO$(Q1,​24);INFO1$(25,​28)
1680 ? BORDER1$(Q1,​40);
1690 POSITION Q7,​Q6:​? "":​POSITION 31,​Q6:​? ""
1700 ? " | Volba  a  + RETURN|"
1710 ? " ";BORDER1$(Q1,​23);""
1720 POKE 82,​Q8:​?
1730 ? "";BLANK$(Q1,​21);""
1740 ? "";SPACE$(Q1,​21);""
1750 ? " Zadani Projektu "
1760 ? "";SPACE$(Q1,​21);""
1770 ? "";BLANK$(Q1,​21);""
1780 POKE 82,​Q0:​POKE 709,​Q10
1790 ?
1800 ? "Nazev Projektu:​";PROJECT$(Q1,​25):​?
1810 IF PSTART=Q0 THEN ? "":​?:​GOTO 1850
1820 Z5=PSTART:​GOSUB 650
1830 ? "Datum STARTU:​";
1840 ? WEEKDAY$(WD*Q9+Q1,​WD*Q9+Q9);" ";MONTH$(MONTH*Q3-Q2,​MONTH*Q3);" ";DAY;",​";YEAR;" ":​?
1850 ? "Meritko stup.:​";SCALE$(SCALE*Q5+Q1,​SCALE*Q5+Q5);" ":​?
1860 ? "Pracovni dny:​";
1870 ? SPACE$(Q1,​25);LEFT$(Q1,​25);
1880 IF SCALE<>Q0 THEN 1920
1890 FOR I=Q0 TO Q6
1900 IF WORK(I)=Q1 THEN ? WEEKDAY$(I*Q9+Q1,​I*Q9+Q2);" ";
1910 NEXT I
1920 X=30
1930 GOSUB 390
1940 IF A=155 THEN Y=X/Q6:​ON Y GOTO 2000,​2050,​2100,​2170,​2300
1950 IF CHR$(A)="+" THEN X=X-Q6:​IF X<Q6 THEN X=30
1960 IF CHR$(A)="*" THEN X=X+Q6:​IF X>30 THEN X=Q6
1970 POSITION Q6,​Q5:​? INFO$
1980 POSITION X,​Q5:​? INFO1$(X-Q5,​(X-Q5)+Q4)
1990 GOTO 1930
2000 GOSUB 320:​POKE 82,​Q5:​?:​POSITION Q5,​Q6:​WIDTH=30:​LENGTH=Q7:​CMD=Q3:​GOSUB 690
2010 POSITION Q9,​Q8:​? ""
2020 POSITION Q8,​Q10:​? FIELD$(Q1,​25);LEFT$(Q1,​25);:​SIZE=25:​GOSUB 420
2030 IF A=27 THEN 2320
2040 PROJECT$(Q1,​25)=SPACE$(Q1,​25):​PROJECT$(Q1,​LEN(G$))=G$:​GOTO 2320
2050 GOSUB 320:​POKE 82,​11:​?:​POSITION 11,​Q6:​WIDTH=28:​LENGTH=Q7:​CMD=Q3:​GOSUB 690
2060 POSITION 15,​Q8:​? ""
2070 POSITION 20,​Q10:​? "../../..";LEFT$(Q1,​Q8);:​SIZE=Q8:​GOSUB 420
2080 IF A=27 THEN 2320
2090 GOSUB 560:​PSTART=Z5:​GOTO 2320
2100 GOSUB 320:​POKE 82,​17:​?:​POSITION 17,​Q6:​WIDTH=12:​LENGTH=12:​CMD=Q3:​GOSUB 690
2110 POSITION 18,​Q8:​? "":​POSITION 18,​Q9:​? ""
2120 POSITION 20,​11:​? "":​POSITION 20,​12:​? "":​POSITION 20,​13:​? "":​POSITION 20,​15:​? "";
2130 ? FIELD$(Q1,​Q1);LEFT$(Q1,​Q1);:​SIZE=Q1:​GOSUB 490
2140 IF A=27 THEN 2320
2150 SCALE=VAL(G$):​IF SCALE<Q0 OR SCALE>Q2 THEN 2120
2160 GOTO 2320
2170 GOSUB 320:​POKE 82,​23:​?:​POSITION 23,​Q6:​WIDTH=11:​LENGTH=16:​CMD=Q3:​GOSUB 690
2180 POSITION 24,​Q8:​? "":​POSITION 24,​Q9:​? ""
2190 FOR I=Q0 TO Q6
2200 POSITION 26,​11+I:​? CHR$(177+I);"";CHR$(ASC(WEEKDAY$(I*Q9+Q1,​I*Q9+Q1))+128*(WORK(I)=Q0));
2210 ? CHR$(ASC(WEEKDAY$(I*Q9+Q2,​I*Q9+Q2))+128*(WORK(I)=Q0))
2220 NEXT I:​POSITION 26,​18:​? ""
2230 POSITION 26,​20:​? "";:​? FIELD$(Q1,​Q1);LEFT$(Q1,​Q1);:​SIZE=Q1:​GOSUB 490
2240 IF A=27 THEN 2320
2250 I=VAL(G$)
2260 IF I=Q0 THEN 2320
2270 IF I<Q1 OR I>Q7 THEN 2180
2280 WORK(I-Q1)=WORK(I-Q1)+Q1:​IF WORK(I-Q1)=Q2 THEN WORK(I-Q1)=Q0
2290 GOTO 2180
2300 IF PSTART=Q0 THEN 2320
2310 GOSUB 4110:​GOTO 770
2320 GOSUB 360:​GOTO 1640
2330 IF PSTART=Q0 THEN 1630
2340 Z5=PSTART:​GOSUB 650
2350 GRAPHICS Q0:​POKE 82,​Q0:​POKE 752,​Q1:​POKE 83,​39:​POKE 710,​194:​POKE 709,​194
2360 GOSUB 5300:​POSITION Q2,​Q0:​? LOGO$
2370 POKE 82,​12:​POSITION 12,​Q0
2380 ? "|";BLANK$(Q1,​12);"|Datum"
2390 ? "| Gantt | STARTu:​"
2400 ? "| Diagram |";WEEKDAY$(WD*Q9+Q1,​WD*Q9+Q9)
2410 ? "|";BLANK$(Q1,​12);"|";MONTH$(MONTH*Q3-Q2,​MONTH*Q3);" ";DAY;",​";YEAR
2420 POKE 82,​Q0:​?
2430 FOR I=Q4 TO Q6 STEP Q2
2440 POSITION Q0,​I:​? BORDER1$(Q1,​40);:​NEXT I
2450 POSITION 12,​Q4:​? "":​POSITION 27,​Q4:​? ""
2460 POSITION Q3,​Q5:​? GANTT1$(Q1,​Q3);GANTT$(Q4,​35);
2470 POKE 709,​Q10
2480 GOSUB 4240
2490 POKE 712,​Q0
2500 X=Q3
2510 GOSUB 390
2520 IF A=155 THEN Y=INT(X/Q5)+Q1:​ON Y GOTO 2580,​2580,​2580,​2580,​3490,​3650,​770
2530 IF CHR$(A)="+" THEN X=X-Q5:​IF X<Q3 THEN X=33
2540 IF CHR$(A)="*" THEN X=X+Q5:​IF X>35 THEN X=Q3
2550 POSITION Q3,​Q5:​? GANTT$
2560 POSITION X,​Q5:​? GANTT1$(X-Q2,​X);
2570 GOTO 2510
2580 GOSUB 320:​POKE 82,​Q2:​POSITION 0,​0:​?:​POSITION Q2,​Q6:​WIDTH=36:​LENGTH=Q9:​CMD=Q1:​GOSUB 690
2590 INS=Q0:​IF Y=Q2 THEN INS=Q1
2600 CHANGE=Q0:​IF Y=Q3 THEN CHANGE=Q1
2610 LET DELETE=Q0:​IF Y=Q4 THEN CHANGE=Q1:​LET DELETE=Q1
2620 POSITION Q3,​Q7:​? "00"
2630 ID=Q0:​START=Q0:​DUR=Q0:​FOR I=Q0 TO Q4:​B(I)=Q0:​NEXT I:​TNAME$=""
2640 POSITION Q3,​Q9:​? "";SPACE$(Q1,​25)
2650 POSITION Q3,​11:​? ""
2660 POSITION Q2,​12:​? "";BORDER$(Q1,​11);""
2670 POSITION Q3,​13:​? ""
2680 POSITION 14,​14:​? ""
2690 POSITION Q7,​Q7:​? FIELD$(Q1,​Q3);LEFT$(Q1,​Q3);:​SIZE=Q3:​GOSUB 490
2700 IF A=27 THEN 3390
2710 ID=VAL(G$):​POSITION Q7,​Q7:​? BLANK$(Q1,​Q3);LEFT$(Q1,​Q3);ID
2720 IF ID=Q0 THEN 2690
2730 IF LAST=Q0 THEN FLAG=Q1:​GOTO 2870
2740 FOR FLAG=Q1 TO LAST+(CHANGE=Q1)
2750 IF ID=A(FLAG,​Q0) THEN POP:​GOTO 2790
2760 IF ID<A(FLAG,​Q0) AND NOT CHANGE THEN POP:​GOTO 2800
2770 NEXT FLAG:​IF CHANGE THEN POSITION Q2,​13:​? ">>> ID# NOT FOUND! PRESS ANY KEY <<<":​GOSUB 390:​GOTO 3390
2780 GOTO 2800
2790 IF NOT CHANGE THEN POSITION Q2,​13:​? " >>> ID# EXISTS! PRESS ANY KEY <<< ":​GOSUB 390:​GOTO 3390
2800 IF NOT INS AND NOT CHANGE THEN 2870
2810 IF INS THEN 2850
2820 START=A(FLAG,​Q1):​DUR=A(FLAG,​Q2)
2830 TNAME$=PROJECT$(FLAG*25+Q1,​FLAG*25+25)
2840 POSITION 19,​Q7:​? START:​POSITION 34,​Q7:​? DUR:​POSITION Q10,​Q9:​? TNAME$
2850 FOR I=Q5 TO Q9:​B(I-Q5)=A(FLAG,​I):​POSITION Q4*I-Q2,​11:​? B(I-Q5):​NEXT I
2860 IF DELETE THEN 3400
2870 POSITION 15,​13:​? "":​GOSUB 390:​IF A>90 THEN A=A-32
2880 IF A=27 THEN 3390
2890 IF A<>83 THEN 2950
2900 POSITION 19,​Q7:​? FIELD$(Q1,​Q3);LEFT$(Q1,​Q3);:​SIZE=Q3:​GOSUB 490
2910 IF A=27 THEN 3390
2920 START=VAL(G$)
2930 POSITION 19,​Q7:​? BLANK$(Q1,​Q3);LEFT$(Q1,​Q3);START
2940 GOTO 2870
2950 IF A<>68 THEN 3010
2960 POSITION 34,​Q7:​? FIELD$(Q1,​Q3);LEFT$(Q1,​Q3);:​SIZE=Q3:​GOSUB 490
2970 IF A=27 THEN 3390
2980 DUR=VAL(G$)
2990 POSITION 34,​Q7:​? BLANK$(Q1,​Q3);LEFT$(Q1,​Q3);DUR
3000 GOTO 2870
3010 IF A<>78 THEN 3070
3020 POSITION Q10,​Q9:​? FIELD$(Q1,​25);LEFT$(Q1,​25);:​SIZE=25:​GOSUB 420
3030 IF A=27 THEN 3390
3040 TNAME$=G$
3050 POSITION Q10,​Q9:​? TNAME$;BLANK$(Q1,​26-LEN(TNAME$));
3060 GOTO 2870
3070 IF A<>90 THEN 3220
3080 POKE 712,​66
3090 IF CHANGE THEN 3150
3100 POKE 712,​68
3110 IF FLAG>LAST THEN 3140
3120 FOR I=LAST TO FLAG STEP -1:​FOR J=Q0 TO Q9:​A(I+Q1,​J)=A(I,​J):​NEXT J
3130 PROJECT$((I+Q1)*25+Q1,​(I+Q1)*25+25)=PROJECT$(I*25+Q1,​I*25+25):​NEXT I
3140 LAST=LAST+Q1
3150 A(FLAG,​Q0)=ID:​A(FLAG,​Q1)=START:​A(FLAG,​Q2)=DUR:​PROJECT$(FLAG*25+Q1,​FLAG*25+25)=SPACE$(Q1,​25)
3160 PROJECT$(FLAG*25+Q1,​FLAG*25+25)=TNAME$
3170 FOR I=Q0 TO Q4:​A(FLAG,​I+Q5)=B(I):​NEXT I
3180 IF NOT INS THEN 3210
3190 FOR I=Q5 TO Q9:​IF A(FLAG+Q1,​I)=Q0 THEN A(FLAG+Q1,​I)=ID:​POP:​GOTO 3210
3200 NEXT I
3210 GOSUB 360:​CALC=Q0:​GOTO 3380
3220 IF A<>80 THEN 2870
3230 POSITION 19,​Q10:​? ""
3240 POSITION Q3,​11:​? ""
3250 POSITION 15,​13:​? "RETURN"
3260 GOSUB 390:​IF A>90 AND A<>155 THEN A=A-32
3270 IF A<>155 THEN 3300
3280 POSITION Q3,​11:​? "";:​POSITION 19,​Q10:​? BLANK$(Q1,​18);
3290 GOTO 2870
3300 IF A=27 THEN 3390
3310 IF A<65 OR A>69 THEN 3260
3320 P=A
3330 POSITION 18+4*(P-65),​11:​? FIELD$(Q1,​Q3);LEFT$(Q1,​Q3);:​SIZE=Q3:​GOSUB 490
3340 IF VAL(G$)>ID THEN 3330
3350 B(P-65)=VAL(G$)
3360 POSITION 18+Q4*(P-65),​11:​? BLANK$(Q1,​Q3);LEFT$(Q1,​Q3);B(P-65)
3370 GOTO 3260
3380 GOTO 2420
3390 GOSUB 361:​X=(Y-Q1)*Q5+Q3:​GOTO 2510
3400 POSITION 15,​13:​? ""
3410 GOSUB 390
3420 IF A=27 OR A=78 OR A=110 THEN 3390
3430 IF A<>89 AND A<>121 THEN 3410
3440 GOSUB 360:​POKE 712,​64
3450 FOR I=FLAG TO LAST:​FOR J=Q0 TO Q9:​A(I,​J)=A(I+Q1,​J):​NEXT J
3460 PROJECT$(I*25+Q1,​I*25+25)=PROJECT$((I+Q1)*25+Q1,​(I+Q1)*25+25):​NEXT I
3470 LAST=LAST-Q1
3480 CALC=Q0:​POKE 712,​Q0:​GOTO 3380
3490 GOSUB 320:​POKE 82,​21:​POSITION 0,​0:​?:​POSITION 21,​Q6:​WIDTH=17:​LENGTH=Q9:​CMD=Q1:​GOSUB 690
3500 POSITION 23,​Q7:​? "":​POSITION 22,​Q9:​? "":​POSITION 22,​Q10:​? ""
3510 POSITION 26,​11:​? "":​POSITION 24,​13:​? "Esc"
3520 GOSUB 390
3530 IF A=27 THEN 3390
3540 IF A=72 OR A=104 THEN OFFSET=Q1:​SCL=Q0:​GOTO 3640
3550 IF A<>68 AND A<>100 AND A<>78 AND A<>110 AND A<>82 AND A<>114 AND A<>76 AND A<>108 THEN 3520
3560 A1=A
3570 POSITION 24,​13:​? "";
3580 POSITION 33,​13:​? FIELD$(Q1,​Q2);LEFT$(Q1,​Q2);:​SIZE=Q2:​GOSUB 490
3590 M=VAL(G$)
3600 OFFSET=OFFSET+M*(A1=68 OR A1=100)-M*(A1=85 OR A1=117):​IF OFFSET<Q1 THEN OFFSET=Q1
3610 IF OFFSET>50 THEN OFFSET=50
3620 SCL=SCL+M*(A1=82 OR A1=114)-M*(A1=76 OR A1=108):​IF SCL<Q0 THEN SCL=Q0
3630 IF SCL>94 THEN SCL=94
3640 GOSUB 360:​GOTO 3380
3650 GOSUB 20
3660 GOTO 2420
3670 IF NOT CALC THEN GOSUB 20
3680 GRAPHICS Q0:​POKE 82,​Q0:​POKE 752,​Q1:​POKE 83,​39:​POKE 710,​146:​POKE 709,​146
3690 POSITION Q2,​Q0:​? LOGO$:​GOSUB 5300
3700 POKE 82,​Q8:​?
3710 ? "";BLANK$(Q1,​22);""
3720 ? "";SPACE$(Q1,​22);""
3730 ? " Vytisteni zpravy "
3740 ? "";SPACE$(Q1,​22);""
3750 ? "";BLANK$(Q1,​22);""
3760 ?
3770 ? "";BORDER1$(Q1,​22);""
3780 ? "| Format tisku |"
3790 ? "| |"
3800 ? "| |"
3810 ? "| 80 col 132 col |"
3820 ? "";BORDER1$(Q1,​22);""
3830 POKE 709,​Q10
3840 A=Q0:​GOTO 3870
3850 GOSUB 390
3860 IF CHR$(A)="+" OR CHR$(A)="*" THEN SMALL=SMALL+Q1:​IF SMALL=Q2 THEN SMALL=Q0
3870 IF SMALL=Q1 THEN POSITION 11,​14:​? "Normal "
3880 IF SMALL=Q0 THEN POSITION 11,​14:​? " Zhusteny "
3890 IF A=27 THEN 770
3900 IF A=155 THEN 3920
3910 GOTO 3850
3920 PRT=Q1:​POKE 82,​Q10:​?:​POSITION Q10,​15:​WIDTH=20:​LENGTH=Q5:​CMD=Q0:​GOSUB 690
3930 POSITION 11,​16:​? "":​POSITION 11,​18:​? "":​GOSUB 390:​IF A=27 THEN 770
3940 CLOSE #Q3:​OPEN #Q3,​Q8,​Q0,​"P:​"
3950 RW=80:​TL=25:​X=Q0:​XX=Q0:​SCL=Q0:​OFFSET=Q1
3960 FOR PAGE=Q1 TO 100
3970 SCL=SCL+X
3980 X=12+13*SMALL
3990 XX=X*(PAGE-Q1)+X-Q1
4000 ? #Q3;"";CHR$(18):​IF SMALL=Q1 THEN RW=132:​? #Q3;"";CHR$(15);
4010 ? #Q3:​? #Q3:​? #Q3:​? #Q3
4020 GOSUB 4240
4030 ? #Q3:​? #Q3;"LEGENDA:​ XXXX Kriticka cesta ---- Slack Time"
4040 ? #Q3;" >>>> Neni kriticka cesta * Milniky "
4050 J=Q9+LAST+Q4:​FOR I=J TO 66:​? #Q3:​NEXT I
4060 IF A(LAST,​Q2)+A(LAST,​Q3)<XX+Q1 THEN POP:​GOTO 4080
4070 NEXT PAGE
4080 CLOSE #Q3:​OPEN #Q3,​Q8,​Q0,​"S:​"
4090 SCL=Q0:​PRT=Q0:​PAGE=Q1
4100 GOTO 770
4110 FLAG=Q1
4120 POKE 82,​12:​?:​POSITION 12,​Q9:​WIDTH=15:​LENGTH=Q4:​CMD=Q0:​GOSUB 690:​POKE 82,​Q0
4130 POSITION 14,​10:​? "":​POSITION 13,​11:​? ""
4140 Z5=PSTART:​GOSUB 650
4150 MON=MONTH:​DATE1$(FLAG*Q4-Q3,​FLAG*Q4-Q1)=MONTH$(MON*3-2,​MON*3):​DATE1$(FLAG*Q4,​FLAG*Q4)=" "
4160 IF DAY<10 THEN DATE2$(FLAG*Q4-Q3,​FLAG*Q4-Q3)="0"
4170 DATE2$(FLAG*Q4-Q3+(DAY<10),​FLAG*Q4-Q2)=STR$(DAY):​DATE2$(FLAG*Q4-Q1,​FLAG*Q4)=" "
4180 STP=Q1+6*(SCALE=Q1)+27*(SCALE=Q2):​Z5=Z5+STP:​FLAG=FLAG+Q1
4182 POSITION 13,​10:​? CHR$(2*(FLAG/2=INT(FLAG/2))+188)
4183 POSITION 25,​10:​? CHR$(190-2*(FLAG/2=INT(FLAG/2)))
4190 IF FLAG>A(LAST,​Q2)+A(LAST,​Q3)+100 THEN 4230
4200 GOSUB 650:​IF WORK(WD)=Q0 THEN FLAG=FLAG-Q1:​GOTO 4180
4210 IF MON<>MONTH THEN 4150
4220 DATE1$(FLAG*Q4-Q3,​FLAG*Q4)=" ":​GOTO 4160
4230 RETURN
4240 IF LAST=Q0 THEN RETURN
4250 POSITION Q2,​Q7:​? #Q3;PROJECT$(Q1,​15+10*PRT)
4260 POKE 712,​244:​GOSUB 5300
4270 POSITION 15,​Q7:​IF PRT THEN ? #Q3;SPACE$(Q1,​30);
4280 I=Q0:​IF DATE1$(SCL*Q4+Q1,​SCL*Q4+Q3)<>" " THEN 4330
4290 FOR I=SCL*Q4+Q1 TO Q1 STEP -4
4300 IF DATE1$(I,​I)<>" " THEN 4320
4310 NEXT I
4320 POP:​DATE1$(SCL*Q4+Q1,​SCL*Q4+Q3)=DATE1$(I,​I+Q2)
4330 ? #Q3;DATE1$(SCL*Q4+Q1,​Q4*(SCL+(Q6+PRT*(Q6+13*SMALL)))):​IF I<>Q0 THEN DATE1$(SCL*Q4+Q1,​SCL*Q4+Q3)=" "
4340 POSITION 15,​Q8:​IF PRT THEN ? #Q3;SPACE$(Q1,​30);
4350 ? #Q3;DATE2$(SCL*Q4+Q1,​Q4*(SCL+(Q6+PRT*(Q6+13*SMALL))))
4360 IF NOT PRT THEN POSITION Q0,​Q9:​? "  ";
4370 IF PRT THEN ? #Q3;"ID#";SPACE$(Q1,​12);"TASK";SPACE$(Q1,​11);
4380 FOR I=SCL TO SCL+Q5+PRT*(Q6+13*SMALL)
4390 IF I>99 THEN ? #Q3;CHR$(INT(I/100)+176-128*PRT);
4400 IF I>Q9 THEN I1=I-INT(I/100)*100:​? #Q3;CHR$(INT(I1/Q10)+176-128*PRT);
4410 I1=I-INT(I/100)*100-INT(I/Q10)*Q10:​? #Q3;CHR$(I1+176-128*PRT);
4420 ? #Q3;CHR$(160-128*PRT);:​IF I<100 THEN ? #Q3;CHR$(160-128*PRT);:​IF I<Q10 THEN ? #Q3;CHR$(160-128*PRT);
4430 NEXT I:​? #Q3;CHR$(160-128*PRT);:​IF PRT THEN ? #Q3;" "
4440 IF NOT PRT THEN 4480
4450 ? #Q3;"--- ";
4460 TEMP$(Q1)="-":​TEMP$(24)="-":​TEMP$(Q2)=TEMP$:​? #Q3;TEMP$;" ";
4470 TEMP$(Q1)="-":​TEMP$(RW-32)="-":​TEMP$(Q2)=TEMP$:​? #Q3;TEMP$
4480 BOT=OFFSET+12
4490 IF LAST<OFFSET+12 THEN BOT=LAST
4500 IF PRT THEN BOT=LAST
4510 FOR I=OFFSET TO BOT
4520 MASK$=". ":​MASK$(129)=". ":​MASK$(5)=MASK$
4530 ? #Q3;A(I,​Q0);" ";
4540 IF A(I,​Q0)<100 THEN ? #Q3;" ";:​IF A(I,​Q0)<Q10 THEN ? #Q3;" ";
4550 ? #Q3;PROJECT$(I*25+Q1,​I*25+Q10+15*PRT);" ";
4560 ID=A(I,​Q0):​START=A(I,​Q1):​DUR=A(I,​Q2):​ES=A(I,​Q3):​LC=A(I,​Q4)
4570 SCR=SCL+Q7+PRT*(Q6+13*SMALL)
4580 IF ES>=SCR OR ES+DUR<=SCL THEN 4710
4590 IF DUR=Q0 THEN MASK$((ES-SCL)*Q4+Q1,​(ES-SCL)*Q4+Q1)=CHR$(42):​GOTO 4710
4600 T1=SCL:​IF ES>SCL THEN T1=ES
4610 T2=SCR:​IF SCR>ES+DUR THEN T2=ES+DUR
4620 FOR J=T1-SCL TO T2-SCL-Q1
4630 FOR K=Q1 TO Q4
4640 MASK$((J*Q4)+K,​(J*Q4)+K)=CHR$(88-26*(LC>ES)):​NEXT K:​NEXT J
4650 IF LC<=ES THEN 4710
4660 T1=SCL:​IF ES+DUR>SCL THEN T1=ES+DUR
4670 T2=SCR:​IF SCR>LC+DUR THEN T2=LC+DUR
4680 FOR J=T1-SCL TO T2-SCL-Q1
4690 FOR K=Q1 TO Q4
4700 MASK$((J*Q4)+K,​(J*Q4)+K)=CHR$(45):​NEXT K:​NEXT J
4710 ? #Q3;MASK$(Q1,​25+PRT*(24+52*SMALL));:​IF PRT THEN ? #Q3;" "
4720 NEXT I
4730 IF PRT THEN 4820
4740 MASK$=". ":​MASK$(129)=". ":​MASK$(5)=MASK$
4750 IF LAST+Q1>OFFSET+12 THEN 4800
4760 FOR I=LAST+Q1 TO OFFSET+12
4770 ? #Q3;SPACE$(Q1,​15+14*PRT);
4780 ? #Q3;MASK$(Q1,​25);
4790 NEXT I
4800 POSITION 17,​23:​? " ";
4810 IF NOT CALC THEN POSITION 17,​23:​? "";
4820 RETURN
4830 Q1=1:​Q2=Q1+Q1:​Q3=Q1+Q2:​Q4=Q1+Q3:​Q5=Q1+Q4:​Q6=Q1+Q5:​Q7=Q1+Q6:​Q8=Q1+Q7:​Q9=Q1+Q8:​Q10=Q1+Q9
4840 CLOSE #Q3:​OPEN #Q3,​Q8,​Q0,​"S:​"
4845 BRK=(PEEK(53279)<>5)
4850 POKE 710,​Q0:​POKE 712,​148:​POKE 752,​Q1:​POKE 709,​Q0
4860 DIM LOGO$(75):​LOGO$=""
4870 POSITION 14,​Q3:​? "Intializing":​POSITION 14,​Q5:​? "Step 1 of 3":​POSITION 15,​Q9:​? LOGO$
4875 POSITION 6,​20:​? ""
4880 POSITION 11,​18:​? "by David Schwener":​POKE 709,​Q10:​OFFSET=Q1:​PAGE=Q1
4890 DIM A(50,​Q9),​PROJECT$(1275),​B(Q4)
4900 DIM DATE1$(500),​DATE2$(500)
4910 DIM FIELD$(25),​LEFT$(25),​G$(25),​WEEKDAY$(63),​DATE$(8),​MOVE$(39),​MONTH$(36),​FNAME$(17),​TNAME$(25)
4920 DIM TEMP$(150),​TEMP1$(150),​BLANK$(250),​BORDER$(40),​BORDER1$(40),​SCALE$(15)
4930 DIM SPACE$(250),​MASK$(132)
4940 DIM INFO$(78),​INFO1$(78),​GANTT$(35),​GANTT1$(35),​WORK(Q6)
4950 FIELD$=".":​FIELD$(25)=".":​FIELD$(2)=FIELD$
4960 BORDER$="":​BORDER$(40)="":​BORDER$(2)=BORDER$
4970 BORDER1$="":​BORDER1$(40)="":​BORDER1$(2)=BORDER1$
4980 LEFT$="":​LEFT$(25)="":​LEFT$(2)=LEFT$
4990 BLANK$="":​BLANK$(250)="":​BLANK$(2)=BLANK$
5000 SPACE$=" ":​SPACE$(250)=" ":​SPACE$(2)=SPACE$
5010 PROJECT$=" ":​PROJECT$(1000)=" ":​PROJECT$(2)=PROJECT$:​WEEKDAY$=PROJECT$:​G$=PROJECT$:​TEMP$=PROJECT$
5020 TEMP1$=PROJECT$:​GOSUB 5300
5030 SCALE$="Den TydenMesic"
5040 DATA Patek,​Sobota,​Nedele,​Pondeli,​Utery,​Streda,​Ctvrtek
5050 FOR I=Q0 TO Q6:​READ G$
5060 WEEKDAY$(I*Q9+Q1,​I*Q9+LEN(G$)+Q1)=G$:​NEXT I
5070 FOR I=Q3 TO Q6:​WORK(I)=Q1:​NEXT I:​FOR I=Q1 TO Q2:​WORK(I)=Q0:​NEXT I:​WORK(Q0)=Q1
5100 LET MOVE$="hhhhhhh`"
5110 DATA Led.,​Unor,​Bre.,​Dub.,​Kve.,​Cer.,​Cec.,​Srp.,​Zari,​Rij.,​Lis.,​Pro.
5120 POSITION 19,​5:​? "2"
5130 FOR I=Q0 TO 11:​READ G$
5140 MONTH$(I*Q3+Q1,​I*Q3+Q3)=G$:​NEXT I
5150 OPEN #Q1,​Q4,​Q0,​"K:​"
5160 TEMP$="Nazev Start Stup. V.dny Exit "
5170 GOSUB 5230:​INFO$=TEMP$:​INFO1$=TEMP1$
5180 TEMP$="Add Ins Chg Del Scr Cal End "
5190 GOSUB 5230:​GANTT$=TEMP$:​GANTT1$=TEMP1$
5200 POSITION 19,​5:​? "3"
5210 FOR I=Q0 TO 50:​FOR J=Q0 TO Q9:​A(I,​J)=Q0:​NEXT J:​NEXT I:​A(Q0,​Q0)=9999
5220 GOTO 770
5230 FOR I=1 TO LEN(TEMP$)
5240 TEMP1$(I,​I)=CHR$(ASC(TEMP$(I,​I))+128)
5250 NEXT I
5260 RETURN
5270 POKE 82,​12:​?:​POSITION 12,​15:​WIDTH=15:​LENGTH=Q4:​CMD=Q0:​GOSUB 690:​POKE 82,​Q0
5280 POSITION 14,​16:​? "";PEEK(195):​POSITION 13,​17:​? ""
5290 GOSUB 390:​OFFSET=Q1:​SCL=Q0:​GOTO 770
5300 IF BRK THEN POKE 16,​112:​POKE 53774,​112
5310 RETURN	

This is non-commercial site, its content is based on Atari 8-bit home computer contents and references.
If you feel your rights are violated by showing/using any part of contents of your product represented on this page, please contact me immediatelly so I can remove it!