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!
|
-
Entry name:Project Planner
-
Category:Other
-
Publisher/Developer:ANTIC Publishing, INC., Flop 1
-
Year:1987







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:? "00" 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$="hhhhhhh`" 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
References
Listing downloads
Copyright holder