1 ! TIMER v6.04 11/28/00 DATA read @ 1550. Version info @ 650,1050,5300. Er ror Trapping @ 500. timer file loaded @1526-1530 2 GOTO 100 ! Program starts at line 100. Line 110 se ts XB Defaults 3 ! 150 ! Defaults 4 ! 200 ! Default Sequence 5 ! 400 ! Initialize 6 ! 500 ! Error 7 ! 550 ! More Defaults 8 ! 650 ! Author display 9 ! 700 ! Prescan 10 ! 950 ! Intro Screen 11 ! 1100 ! Clock Options 12 ! 1550 ! Timer Data Read 13 ! 1700 ! Screen, timer clock reset 14 ! 1800 ! Timing loop - leap in @2050 15 ! 2650 ! halt 16 ! 2800 ! drain 17 ! 3350 ! fast 18 ! 3500 ! run menu 19 ! 4150 ! run menu display 20 ! 4200 ! 5 second warning 21 ! 4250 ! exb clock run choices 22 ! 4650 ! 15 second speech 23 ! 4850 ! gosub wait loop 24 ! 4900 ! kill screen 25 ! 4950 ! lite screen 26 ! 5050 ! timer sounds 27 ! 5200 ! jump to new step 28 ! 5250 ! main menu 29 ! 5400 ! rapid start 30 ! 5500 ! menu list 31 ! 5950 ! create 32 ! 6350 ! timer lister 33 ! 6450 ! edit timer 34 ! 6900 ! timer launch menu 35 ! 7450 ! timer sequence start 37 ! 8250 ! Clear clock face Called from 980 38 ! 8300 ! default prompts 39 ! 8600 ! error handling, but for what? 40 ! 8650 ! error handling 41 ! 8700 ! load timer file 42 ! 8900 ! Save timer file 43 ! 9000 ! gosub sequence display 44 ! 9050 ! odd, old key handling routine, but still partial ly used? 45 ! 9400 ! call dir 46 ! 11150 ! call cost 47 ! 30000 ! call clock for TI XB 48 ! NOTE: ! To allow re-run removed CALL INIT -line 450. LOAD does INIT 50 ! 100 CALL VERSION(VERS):: IF VERS<120 THEN VER$="TI XB" ELSE VER $="SXB" 110 IF VERS<>120 THEN L=168 ELSE L=160 125 CALL CLEAR 150 DIM A$(20):: DIM B$(20),E(20):: TSQ=1 :: D=11 :: CLK=1 :: T SQ$="SEQUENCE" :: CLK$="OFF-XB" ! work variables/defaults 190 ! DATA built-in process,read at 1550 200 DATA Presoak,Develop,Rinse1,Rinse2,Rinse3 250 DATA Color,Clear,Bleach,Wash1,Wash2,Wash3 300 DATA .75,1.45,.75,.75,.75 350 DATA 8.5,.75,3.5,.75,.75,.75 400 ! INITIALIZE 450 CALL LOAD(-31806,16):: CALL LOAD(-31878,0):: CALL CHAR(64," 7E81BDA1A1BD817E" ):: ON WARNING NEXT 500 ! ON ERROR 8650 550 ! DEFAULTS 600 CALL CLEAR :: FR=1 :: B=16 :: DC=5 :: DR=450 :: YN$="Y" :: ACB=0 :: PROG$="D SK1.SEQUENCE" :: GOTO 1000 650 DISPLAY AT(21,0):"~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @ 11/28/00 by Ed Gerken": : "Box 747 Hill City SD 57745" :: RETURN 700 ! PRESCAN 750 RETURN :: CALL KEY :: CALL DELSPRITE :: GOSUB :: CALL ERR(A W,BW,CW,DW):: CAL L CLOCK :: CALL CLKOFF 800 CALL COLOR :: CALL MAGNIFY(2):: CALL SAY :: CALL SCREEN :: CALL SOUND :: CAL L SPGET :: CALL SPRITE :: IM$=STR$(K):: RUN :: X,C,AC,G$,V,H$,Y ,S,T,W,Z,R,KOR,CL KCHOICE 850 MI$,D,AB,U,C$,D$,AA,E$,F$,@,J,H,F,I,G,B,K,Q,O,N,A,L,P,BLK,W HT 900 !@P- 950 ! intro screen 1000 GOSUB 1750 :: GOSUB 650 1050 DISPLAY AT(4,0):"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TIMER 6.04 ~~ 11/28/00 ~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~" 1060 CALL GCHAR(1,29,T):: IF T=58 THEN GOTO 1510 ! checks for c olon to skip e/a clock if already loaded 1075 IF VERS<120 THEN DISPLAY AT(16,0):"~~ TI's Extended BASIC ~~": :" ~~ Te sting EA Clock ~~" :: VERS=130 :: VER$="EDXB" ! GOTO 1550 ! ski p clock opts 1100 FOR CLKCHOICE=1 TO 20 :: DISPLAY AT(9,1):"CLOCK?": :" 1=C ontinous 2=Reset ": :" 3=Sequence 4=None > 4" :: DISPLAY AT(13,27):"4" ! ex b clock choices 1150 CALL KEY(3,A,Q):: IF Q<>0 THEN CLK=A-48 :: GOTO 1225 1200 DISPLAY AT(13,27):" " :: NEXT CLKCHOICE :: CLK=4 1225 IF CLK=-35 THEN CLK=4 1250 DISPLAY AT(13,25):">";CLK :: IF CLK<0 OR CLK>4 AND CLK<>34 THEN CLK=4 :: CA LL CLKOFF 1300 IF CLK=4 THEN CLK$=" Off" 1350 IF CLK=1 THEN CALL CLOCK :: CLK$=" Cont." 1400 IF CLK=3 THEN CALL CLOCK :: CLK$=" Seq." 1450 IF CLK=34 THEN CALL CLOCK :: CLK=1 :: CLK$="Cont." :: GOTO 1510 1500 IF CLK=2 THEN CALL CLOCK :: CLK$=" Reset" 1510 FOR CLKCHOICE=1 TO 25 :: DISPLAY AT(8,1):"LOAD FILE?": :" 1=DSK1.SEQUENCE ": :" 2=DSK1.ARISTA2": :" 3=DEFAULT > 3" :: DISPL AY AT(14,27):"3" ! Load timer file 1515 CALL KEY(3,A,Q):: IF Q<>0 THEN TSQ=A-48 :: GOTO 1520 1517 DISPLAY AT(14,27):" " :: NEXT CLKCHOICE :: TSQ=3 1520 IF TSQ=-35 THEN TSQ=3 1522 DISPLAY AT(14,25):">";TSQ :: IF TSQ<0 OR TSQ>3 AND TSQ<>34 THEN TSQ=3 :: TS Q$="DEFAULT" :: GOTO 1550 1524 IF TSQ=3 THEN TSQ$=" Default" 1526 IF TSQ=1 THEN TSQ$=" Sequence" :: PROG$="DSK1.SEQUENCE" :: GOTO 8750 1528 IF TSQ=2 THEN TSQ$=" Arista2" :: PROG$="DSK1.ARISTA2" :: G OTO 8750 1530 IF TSQ=34 THEN TSQ=1 :: TSQ$=" Sequence" :: PROG$="DSK1.SE QUENCE" :: GOTO 8 750 1550 FOR AA=1 TO 11 :: READ B$(AA):: NEXT AA ! built-in sequenc e read 1600 FOR AA=1 TO 11 :: READ E(AA):: NEXT AA 1650 GOTO 5250 1700 ! COLORS, CLEAR CLOCK VARIABLES 1750 CALL SCREEN(DC):: FOR W=1 TO 14 :: CALL COLOR(W,B,DC):: NE XT W :: @=1 :: F= G+48 :: H=I+48 :: J=K+48 :: RETURN 1800 ! TIMING LOOP 1850 CALL SOUND(400,110,5,330,5,1220,4):: CALL SOUND(400,110,7, 330,5,1220,4):: C ALL MAGNIFY(2) 1900 I,K,G=0 :: F=G+48 :: H=I+48 :: J=K+48 :: CALL SPRITE(#1,F, B,90,80,#4,58,B,9 0,100,#2,H,B,90,120,#3,J,B,90,150):: GOSUB 4150 1940 IF CLK=2 AND VERS=130 THEN CALL LINK("STARTT") 1950 IF CLK=2 AND VERS=120 THEN CALL CLOCK 2000 FOR N=0 TO O :: FOR P=1 TO L :: NEXT P :: IF O-N=15 THEN G OSUB 4650 2050 CALL KEY(3,A,Q):: IF Q<>0 THEN 3500 2100 IF O-N<5 THEN GOSUB 4200 2150 CALL KEY(3,A,Q):: IF Q<>0 THEN 3500 2200 K=K+1 :: CALL DELSPRITE(#4):: IF K=5 THEN GOSUB 5100 2250 CALL KEY(3,A,Q):: IF Q<>0 THEN 3500 2300 IF K>9 THEN GOSUB 5050 2350 CALL KEY(3,A,Q):: IF Q<>0 THEN 3500 2400 IF I>5 THEN GOSUB 5150 2450 CALL KEY(3,A,Q):: IF Q<>0 THEN 3500 2500 F=G+48 :: H=I+48 :: J=K+48 :: CALL SPRITE(#1,F,B,90,80,#4, 58,B,90,100,#2,H, B,90,120,#3,J,B,90,150) 2550 CALL KEY(3,A,Q):: IF Q<>0 THEN 3500 2600 NEXT N :: N=0 :: RETURN 2650 ! HALT 2700 CALL SOUND(60,500,20,1000,24,250,24,-4,17):: DISPLAY AT(9, 0):"HALTED PRESS X TO RESTART" :: CALL KEY(0,A,Q):: DISPLAY AT(9,0):" " :: IF A= 88 THEN 2200 2750 GOTO 2700 2800 DISPLAY AT(15,0):"DRAIN - 10 SEC" ! Drain sequence 2850 CALL KEY(3,A,Q):: IF A=84 THEN 3300 2900 CALL SAY("DONE+WITH",D$,,C$):: CALL KEY(3,A,Q):: IF A=84 T HEN 3300 2950 FOR W=1 TO DR :: NEXT W 3000 CALL KEY(3,A,Q):: IF A=84 THEN 3300 3050 CALL SAY("NEXT+IS",E$,,F$):: CALL KEY(3,A,Q):: IF A=84 THE N 3300 3100 FOR W=1 TO DR :: NEXT W 3150 CALL KEY(3,A,Q):: IF A=84 THEN 3300 3200 CALL SAY("FIVE+FOUR+THREE+TWO+ONE"):: CALL KEY(3,A,Q):: IF A=84 THEN 3300 : : FOR W=1 TO DR :: NEXT W 3250 CALL KEY(3,A,Q):: IF A=84 THEN 3300 3300 FOR W=12 TO 15 :: DISPLAY AT(W,0):" " :: NEXT W :: RETURN 3350 N=N+2 :: K=K+2 :: IF K>9 THEN K=0 :: I=I+1 :: IF N>O THEN RETURN ! fast 3400 IF I>5 THEN I=0 :: G=G+1 3450 F=G+48 :: H=I+48 :: J=K+48 :: CALL SPRITE(#1,F,B,90,80,#4, 58,B,90,100,#2,H, B,90,120,#3,J,B,90,150):: GOTO 2100 3500 IF A=72 THEN 2700 ! Halt ! choices while timing 3550 IF A=74 THEN 5200 ! JUMP 3600 IF A=83 THEN RETURN ! Skip 3650 IF A=67 THEN 4250 ! Clock 3700 IF A=76 THEN GOSUB 4950 !Lite 3750 IF A=75 THEN GOSUB 4900 !Kill 3800 IF A=76 OR A=75 THEN 2200 3850 IF A=82 THEN 1900 ! Restart 3900 IF A=81 THEN 8250 ! Q Main menu 3950 IF A=77 THEN 5300 ! Main menu 4000 IF A=70 THEN 3350 ! Fast 4050 IF A>56 OR A<49 THEN CALL SOUND(100,750,4):: GOSUB 4150 :: GOTO 2500 4100 CALL DELSPRITE(ALL):: ON A-48 GOTO 6900,8700,8900,6350,825 0,5800,5850,8300 :: GOTO 2200 ! 1-8 OPTIONS 4150 DISPLAY AT(22,0):" }Reset }Skip }Fast }Halt }Menu }Ta lk }Jump }Quit }Kill }Lite }Clock";CLK$ :: RETURN ! timing menu 4200 CALL SOUND(100,330,4):: RETURN 4250 CALL SOUND(100,750,4):: IF VERS<120 THEN CLK$=" -N/A-" :: GOSUB 4150 :: CAL L SOUND(100,450,6):: GOTO 2000 4275 CLK=CLK+1 :: IF CLK>4 THEN CLK=1 ! time loop clock choices 4300 IF CLK=1 THEN CLK$=" Cont." 4350 IF CLK=2 THEN CLK$=" Reset" 4400 IF CLK=3 THEN CLK$=" Seq." 4450 IF CLK=4 THEN CLK$=" Off" 4460 IF CLK=4 AND VERS=130 THEN 4610 ! EA clock off 4500 IF CLK=4 AND VERS=120 THEN 4600 4550 GOSUB 4150 :: GOTO 2000 4600 CALL CLKOFF :: GOSUB 4150 :: GOTO 2000 4610 CALL LINK("STOP"):: GOSUB 4150 :: GOTO 2000 4650 CALL KEY(3,A,Q):: IF A=84 THEN RETURN ! 15 second speech 4700 CALL SAY("THIS+IS",D$,,C$):: N=N+5 :: K=K+5 :: CALL KEY(3, A,Q):: IF A=84 TH EN RETURN 4750 CALL SAY("NEXT+IS",E$,,F$):: RETURN :: CALL SPGET("COLOR", E$):: CALL SPGET( "STEP",F$):: GOTO 3850 :: CALL SPGET("PRINT",E$):: CALL A :: CA LL SPGET("SECOND" ,F$):: GOTO 3850 :: CALL SPGET("GO",D$) 4800 CALL SPGET("ONE",C$):: CALL SPGET("GO",E$):: CALL SPGET("T WO",F$):: GOTO 38 50 :: D$=E$ :: C$=F$ :: CALL SPGET("THREE",F$):: GOTO 3850 :: D $=E$ :: C$=F$ :: CALL SPGET("PRINT",E$):: CALL SPGET("DONE",F$):: GOTO 3850 4850 FOR W=1 TO DR :: NEXT W :: DR=450 ! wait loop 4900 CALL SCREEN(2):: FOR BLK=1 TO 14 :: CALL COLOR(BLK,2,2):: NEXT BLK :: RETUR N ! kill 4950 IF B>15 THEN B=1 ! lite 5000 CALL SCREEN(DC):: B=B+1 :: FOR WHT=1 TO 14 :: CALL COLOR(W HT,B,DC):: NEXT W HT :: RETURN 5050 CALL SOUND(100,110,0):: I=I+1 :: K=0 :: RETURN ! timer sou nds 5100 CALL SOUND(75,1250,5):: RETURN 5150 CALL SOUND(350,330,3,660,3,1220,3):: G=G+1 :: I=0 :: RETUR N 5200 DISPLAY AT(22,0):"Jump to what step? ":@;" to ";D;"? ";AA: " " :: ACCEPT AT( 23,15)SIZE(-2):@ :: GOSUB 4150 :: GOTO 7450 ! jump 5250 CALL CLEAR :: GOSUB 5400 :: CALL SAY("TIME"):: ! main menu 5300 CALL CLEAR :: GOSUB 650 :: DISPLAY AT(1,0):"TIMER V6.04 ";VER$:"~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~" :: GOSUB 5400 :: CALL DELSPRITE(ALL):: 5325 @=1 5350 GOTO 5500 5400 CALL KEY(3,A,Q):: IF Q=0 THEN RETURN ! rapid start 5450 GOSUB 650 :: GOTO 5550 :: RETURN 5500 ! PROGRAMABLE STARTS HERE 5550 CALL DELSPRITE(ALL):: DISPLAY AT(4,4):"1> Create Sequence" : :" 2> Load Se quence": :" 3> Save Sequence": :" 4> Start Timer" 5555 DISPLAY AT(12,4):"5> Main Menu": :" 6> Disk Catalog": :" 7> Print Cost Estimator": :" 8> Defaults" 5600 CALL KEY(3,A,Q):: IF Q=0 THEN 5600 5650 IF A=82 THEN 6400 5700 IF A-48<1 OR A-48>8 THEN CALL SOUND(100,750,4):: GOTO 5600 5750 ON A-48 GOTO 5950,8700,8900,6350,5300,5800,5850,8300 5800 CALL CLEAR :: CALL DIR(KOR):: GOTO 5300 5850 CALL CLEAR :: CALL COST :: GOTO 5300 5900 GOSUB 9050 :: ON ERROR 6200 5950 CALL CLEAR :: DISPLAY AT(23,0):"Total Number of Steps?" :: ACCEPT AT(23,23) SIZE(3):D :: IF D>18 THEN DISPLAY AT(23,0):"Max of 18 Steps, So rry!" :: GOSUB 48 50 :: GOTO 5950 ! create 6000 FOR Q=1 TO 150 :: NEXT Q :: DISPLAY AT(23,0):"Clear Old Pr ocess?" 6050 CALL KEY(3,A,Q):: IF Q=0 THEN 6050 6100 IF A=89 THEN 6150 ELSE 6200 6150 DISPLAY AT(23,0):"Clearing..." :: FOR AA=1 TO 18 :: B$(AA) =" " :: E(A A)=0 :: A$(AA)=" " :: NEXT AA 6200 FOR AA=1 TO D :: DISPLAY AT(23,0):"Name of Step";AA:B$(AA) :: ACCEPT AT(24,0 )SIZE(-7):B$(AA):: DISPLAY AT(2+AA,0):B$(AA) 6250 DISPLAY AT(23,0):"Minutes in Step";AA;"? ":E(AA):: ACCEPT AT(24,2)VALIDATE( DIGIT,".")SIZE(-5):A$(AA):: IF A$(AA)="" THEN 6250 6300 E(AA)=VAL(A$(AA)):: GOSUB 9000 :: NEXT AA 6350 IF AB>D THEN D=AB-1 ! sequence list 6400 CALL CLEAR :: DISPLAY AT(1,0):PROG$ :: FOR AA=1 TO D :: CA LL KEY(3,A,Q):: I F A=82 THEN 7450 :: GOSUB 9000 :: NEXT AA 6450 DISPLAY AT(23,0):"Correct? (y|n|r|m|j)":" " :: CALL KEY(3, A,Q):: IF A=74 TH EN 5200 :: IF A=89 THEN 6900 ! Y !Edit sequence 6500 IF A=77 THEN 5300 ! M 6550 IF A=82 THEN 7450 ! R 6600 IF A=88 AND N78 THEN 6450 ! N 6700 DISPLAY AT(21,0): : :"Which Step is Wrong? " :: ACCEPT AT( 24,0):AB :: IF AB >18 THEN DISPLAY AT(23,0):"Limit 18, please" :: FOR Q=1 TO 100 :: NEXT Q :: GOTO 6700 6750 DISPLAY AT(23,0):"New Name Step ";AB;" ":B$(AB):: ACCEPT A T(24,0)SIZE(-7):B $(AB):: DISPLAY AT(23,0):"New Time for Step ";AB:E(AB) 6800 IF AB>D THEN D=AB 6850 ACCEPT AT(24,2)SIZE(-5):E(AB):: AA=AB :: GOSUB 9000 :: GOT O 6450 6900 DISPLAY AT(22,0):"R-start":"M-menu":"S-re-program any step s" ! sequence men u 6950 CALL KEY(3,A,Q):: IF Q=0 OR A>88 THEN 6950 ! >X 7000 IF A=82 THEN 7450 ! R 7025 IF A=74 THEN 5200 7050 IF A=77 THEN 5300 ! M 7100 IF A=88 AND N8 OR A-48<1 THEN 6950 7350 ON ERROR 8650 :: GOSUB 650 :: DISPLAY AT(20,0):" " :: GOTO 6900 7400 FR=1 ! :: DISPLAY AT(1,0):PROG$ :: FOR AA=1 TO D :: CALL K EY(3,A,Q) :: IF A =82 THEN 1110 :: GOSUB 1410 :: NEXT AA :: GOTO 910 ! most of th is line not used? ?? 7450 CALL CLEAR :: DISPLAY AT(2,0):"Timer is Programmed":"Start Now" :: CALL SAY ("START"):: DISPLAY AT(3,0):" " :: FOR AA=@ TO D :: H$=STR$(AA) :: CALL SPGET("ST EP",D$):: CALL SPGET(H$,C$)! timer start 7500 IF E(AA)=0 THEN NEXT AA 7550 E$=D$ :: IF AAD THEN D=AB-1 7650 CALL SPGET(H$,F$):: DISPLAY AT(4,0):"Step";AA;B$(AA);E(AA) ;"min" :: IF AA=D THEN CALL SPGET("LAST",D$):: CALL SPGET("STEP",C$):: CALL SPGE T("PRINT",E$):: C ALL SPGET("DONE",F$) 7700 CALL SAY("THIS+IS",D$,,C$):: IF AA=D THEN DISPLAY AT(6,0): "** Final Step ** ": :" " 7750 DISPLAY AT(2,0):"In Progress..." :: IF AA=D THEN 8050 7800 IF AA0 THEN DISPLAY AT(8,0):"Step";AA+1;B$(AA+FR); E(AA+FR);"min" :: GOTO 8050 7950 IF E(AA+FR)=0 THEN FR=FR+1 :: GOTO 7900 8000 IF CLK=3 AND AA=1 THEN CALL CLOCK 8050 O=E(AA)*60 :: GOSUB 1850 :: DISPLAY AT(2,0):"Step";AA;"Com pleted" :: GOSUB 2800 :: NEXT AA :: @=1 :: DISPLAY AT(2,0):"** Sequence Complete d": :" ":" ":" " :: CALL DELSPRITE(ALL) 8100 FOR AA=1 TO D :: GOSUB 9000 :: NEXT AA :: GOTO 6900 8150 ! EMPTY Old call to Fast - unused? 8200 RETURN 8250 CALL CLEAR :: CALL DELSPRITE(ALL):: GOTO 5300 ! Quit Menu called from 3900. Not yet implemented. 8300 DISPLAY AT(20,0):" ** TIMER DEFAULTS **":" ~~~~~~~~~~ ~~~~~~~~~~" ! duh ! defaults 8350 DISPLAY AT(22,0):"Foreground Color ";B:"Background Color ";DC:" " 8400 ACCEPT AT(22,20)SIZE(-2):B :: ACCEPT AT(23,20)SIZE(-2):DC :: IF B>16 OR DC> 16 THEN CALL SOUND(100,330,4):: GOTO 8400 8450 DISPLAY AT(22,0):"Drain Time Delay ";DR:"Timer Speed Adju st";L 8500 ACCEPT AT(22,20)SIZE(-3):DR :: ACCEPT AT(23,20)SIZE(-3):L :: IF DR<0 OR L<0 THEN CALL SOUND(100,330,4):: GOTO 8500 8550 DISPLAY AT(20,0):"Correct? Y" :: ACCEPT AT(20,10)SIZE(-1): YN$ :: DISPLAY AT (20,0):" " :: IF YN$="y" OR YN$="Y" THEN 8600 ELSE 8350 8600 ON ERROR 5300 :: GOSUB 1750 :: IF N>=O THEN RETURN ELSE GO SUB 650 :: GOTO 2 050 ! not sure from where called. to help in using defaults whi le running? 8650 DISPLAY AT(18,0):"Error in Processing...":"Check equipment & defaults" :: R UN ! Actual main error line 8700 DISPLAY AT(22,0):"Load Filename?": :PROG$ :: ACCEPT AT(24, 01)SIZE(-26):PROG $ ! Load time file 8750 ON ERROR 8850 8800 OPEN #1:PROG$,INPUT ,INTERNAL,RELATIVE 80 :: INPUT #1:D :: FOR AB=1 TO D :: INPUT #1:AA,B$(AB),E(AB):: NEXT AB :: CLOSE #1 :: GOTO 6350 8850 CALL CLEAR :: PRINT :: CALL ERR(AW,BW,CW,DW):: CALL CLEAR :: PRINT "Disk Er ror, re-running" :: RUN 8900 DISPLAY AT(22,0):"Save Filename?": :PROG$ :: ACCEPT AT(24, 01)SIZE(-26):PROG $ ! save time file 8950 OPEN #1:PROG$,INTERNAL,RELATIVE 80 :: PRINT #1:D :: FOR AA =1 TO D :: PRINT #1:AA,B$(AA),E(AA):: NEXT AA :: CLOSE #1 :: GOTO 6350 9000 DISPLAY AT(AA+2,0):AA;TAB(5);B$(AA):: DISPLAY AT(AA+2,13): USING "#####.##": E(AA):: DISPLAY AT(AA+2,22):"min" :: RETURN ! sequence display 9050 !r IF KOR=82 THEN GOTO 1090 !! note these lines not used, but a few still a re, with odd code (-51,etc.) 9100 !l IF KOR=76 THEN GOSUB 710 9150 !k IF KOR=75 THEN GOSUB 700 9200 !x IF KOR=88 THEN GOTO 1050 9250 IF KOR=77 THEN 5300 9300 IF KOR-48>5 OR KOR-48<1 THEN 5500 9350 ON KOR-51 GOTO 5500,8250 :: DISPLAY AT(10,0):"WRONG KEY": : : :: GOTO 5300 9400 !@P+ 9450 SUB DIR(KOR)! catalog 9500 ON ERROR 11050 :: CALL CLEAR 9550 DIM TYPE$(5) 9600 TYPE$(1)="DIS/FIX" 9650 TYPE$(2)="DIS/VAR" 9700 TYPE$(3)="INT/FIX" 9750 TYPE$(4)="INT/VAR" 9800 TYPE$(5)="PROGRAM" 9850 DISPLAY AT(22,1):"Disk (1-3)? 4-Return ":"Any Key-Pause / Space-Resume" :: CALL KEY(3,A,WOW):: IF WOW=0 THEN 9850 :: A=A-48 9900 IF A=0 OR A=-35 THEN SUBEXIT 9950 IF A=4 THEN SUBEXIT 10000 IF A<1 OR A>3 THEN 9850 10050 OPEN #1:"DSK"&STR$(A)&".",INPUT ,RELATIVE,INTERNAL 10100 INPUT #1:A$,J,J,K 10150 DISPLAY "DSK";STR$(A);"-DISKNAME= ";A$:"AVAILABLE= ";K;"U SED= ";J-K 10200 DISPLAY :" FILENAME SIZE TYPE P":"---------- ---- ---------- -"; 10250 FOR LOOP=1 TO 127 10300 INPUT #1:A$,A,J,K 10350 IF LEN(A$)=0 THEN 10750 10400 DISPLAY :A$;TAB(12);J;TAB(17);TYPE$(ABS(A)); 10410 CALL KEY(3,KOR,WOW):: IF WOW=0 THEN 10450 ELSE 10420 10420 CALL KEY(3,KOR,WOW):: IF KOR=32 THEN 10450 ELSE 10420 10450 IF ABS(A)=5 THEN 10600 10500 B$=" "&STR$(K) 10550 DISPLAY SEG$(B$,LEN(B$)-2,3); 10600 IF A>0 THEN 10700 10650 DISPLAY TAB(28);"Y"; 10700 NEXT LOOP 10750 CLOSE #1 10800 PRINT : :" Dir / Enter" 10850 CALL KEY(3,KOR,WOW):: IF WOW=0 THEN 10850 10900 IF KOR=68 THEN DISPLAY AT(23,0):"" :: GOTO 9850 10950 IF KOR=13 THEN SUBEXIT 10960 GOTO 10850 11000 SUBEXIT 11050 CALL ERR(AW,BW,CW,DW):: CALL CLEAR :: A=1 :: PRINT "Disk Error, re-running " :: RUN 11100 SUBEND 11150 SUB COST 11200 ON WARNING NEXT 11250 PAPSIZE=1 :: PAPCOST=63.79 :: PNTSIZE=1 :: BOXCOUNT=100 11300 CHEMOZ=128 :: CHEMCOST=40.75 :: OZPER=1.5 :: USES=3 :: CH EMIX=.7 11350 CALL CLEAR 11400 DISPLAY AT(0,0):"** Print Cost **":"** Estimator 1.2 * *" :: DISPLAY AT( 23,0):"~~~~~~~~~~~~~~~~~~~~~~~~~~~~Uncut size in box. Exit=0" 11450 DISPLAY AT(19,0):" ":" " :: DISPLAY AT(4,0):"Paper Size?" ;PAPSIZE:" 1> 8x1 0":" 2> 11x14" :: ACCEPT AT(4,13)SIZE(-1):PAPSIZE 11475 IF PAPSIZE=0 THEN SUBEXIT 11480 DISPLAY AT(24,0):"Enter the cost+shipping+tax" 11500 DISPLAY AT(8,0):"Paper Cost?":PAPCOST :: ACCEPT AT(9,2)SI ZE(-5):PAPCOST 11525 DISPLAY AT(24,0):"Size of enlargement" 11550 DISPLAY AT(11,0):"Print Size?";PNTSIZE:" 1> 5x7 ":" 2> 8x 10":" 3> 11x14" : : ACCEPT AT(11,13)SIZE(-1):PNTSIZE 11575 DISPLAY AT(24,0):"Number of sheets in box" 11600 DISPLAY AT(16,0):"# Uncut/Box";BOXCOUNT :: ACCEPT AT(16,1 3)SIZE(-3):BOXCOU NT :: IF BOXCOUNT<=0 THEN 11900 11650 IF PAPSIZE=1 AND PNTSIZE=2 THEN DIVVY=1 :: OZPER=3 :: GOT O 11950 11700 IF PAPSIZE=2 AND PNTSIZE=3 THEN DIVVY=1 :: OZPER=6 :: GOT O 11950 11750 IF PAPSIZE=1 AND PNTSIZE=1 THEN DIVVY=2 :: OZPER=1.5 :: G OTO 11950 11800 IF PAPSIZE=2 AND PNTSIZE=2 THEN DIVVY=2 :: OZPER=3 :: GOT O 11950 11850 IF PAPSIZE=2 AND PNTSIZE=1 THEN DIVVY=4 :: OZPER=1.5 :: G OTO 11950 11900 DISPLAY AT(19,0):"Can't get there":"from here!" :: GOTO 1 1400 11950 PERPNT=BOXCOUNT*DIVVY :: PNTCOST=PAPCOST/PERPNT 12000 DISPLAY AT(19,0):"-------------":" Paper Cost ":" $";(INT (PNTCOST*100))/10 0 :: DISPLAY AT(24,0):"Cost per unprocessed print" 12005 WWT=850 :: FOR W=1 TO WWT :: NEXT W 12010 DISPLAY AT(24,0):"Unmixed size of chemistry" 12075 DISPLAY AT(24,0):"1=full, .5=diluted 50%, ..." 12100 DISPLAY AT(4,17):"% Mix" :: DISPLAY AT(5,17):CHEMIX :: AC CEPT AT(5,18)SIZE (-4):CHEMIX :: CHEMOZ=INT(CHEMOZ/CHEMIX):: DISPLAY AT(4,17):"Ch em Oz" :: DISPLAY AT(5,17):CHEMOZ 12125 DISPLAY AT(24,0):"Enter the cost+shipping+tax" 12150 DISPLAY AT(7,17):"Chem Cost?" :: DISPLAY AT(8,17):CHEMCOS T :: ACCEPT AT(8, 18)SIZE(-6):CHEMCOST 12175 DISPLAY AT(24,0):"How much chemistry per print" 12200 DISPLAY AT(10,17):"Oz per Prnt?" :: DISPLAY AT(11,17):OZP ER :: ACCEPT AT(1 1,18)SIZE(-4):OZPER 12225 DISPLAY AT(24,0):"Times you reuse the chemical" 12250 DISPLAY AT(13,17):"# Uses?";USES :: ACCEPT AT(13,25)SIZE( -3):USES 12300 CHEMSHOT=(CHEMOZ/OZPER)*USES :: CHEMPNT=CHEMCOST/CHEMSHOT 12350 DISPLAY AT(15,17):"------------" :: DISPLAY AT(16,18):"Ch em Cost" :: DISPL AY AT(17,17):" $";(INT(CHEMPNT*100))/100 12400 DISPLAY AT(19,17):"------------" :: DISPLAY AT(20,18):"TO TAL COST" :: DISP LAY AT(21,18):"$";(INT((CHEMPNT+PNTCOST)*100))/100 12425 DISPLAY AT(24,0):"Go again? y/n" :: DISPLAY AT(24,0):"Go again y/n" 12450 CALL KEY(3,ACA,KAQ):: IF KAQ=0 THEN 12425 12500 IF ACA=89 THEN CALL CLEAR :: GOTO 11400 12550 IF ACA=77 THEN CALL CLEAR :: SUBEXIT 12555 IF ACA=78 THEN CALL CLEAR :: SUBEXIT 12600 GOTO 12425 12650 SUBEND 30000 ! TI XB Clock 30010 SUB CLOCK 30020 CALL GCHAR(1,29,T):: IF T=58 THEN SUBEXIT ! colon 30030 CALL LOAD("DSK1.CLOCKO") 30040 CALL CLEAR :: CALL LINK("STARTT") 30050 SUBEND