270 HOME : VTAB 12: PRINT "PRINTER SLOT": VTAB 13: PRINT "(0 FOR NONE)"
280 & LINE(1,0,0,15,12;PR%): IF PR% <0 OR PR% >7 THEN & BUZZ(20,10): GOTO 280
290 IF PR% = 0 THEN PR% = -1
300 IF PR% >0 THEN POKE 770,PR%: REM SET PRINTER SLOT
310 POKE 771,0: REM DISABLE LOWER-CASE FUNCTION
320 REM USE SUBROUTINE FOR &BUZZ
330 P = 100:T = 1: GOSUB 100: IF PR% = -1 THEN 390: REM SKIP & SCREEN IF NO PRINTER
340 REM &SCREEN
350 PRINT : PRINT :T$ = " &SCREEN ": GOSUB 190
360 PRINT : PRINT : PRINT "DO YOU WISH TO SEND THE SCREEN CONTENTS": PRINT "TO THE PRINTER? (YOU MUST HAVE A": PRINT "STANDARD APPLE OR EPSON PARALLEL": PRINT "INTERFACE CARD)"
370 PRINT "Y/N? ";: GET K$: PRINT : IF K$ = "Y" THEN & SCREEN(PR%)
380 IF K$ < >"N" THEN & BUZZ(P,T): GOTO 370
390 HOME : VTAB 5:T$ = " &INPT ": GOSUB 190
400 PRINT : PRINT "WITH '&INPT' YOU MAY INPUT ANY CHARACTER"
410 PRINT "ENTER ANY STRING:": & INPTST$
420 PRINT : PRINT "YOU ENTERED:": PRINT ST$
430 VTAB 22: PRINT "PRESS ANY KEY TO CONTINUE": WAIT -16384,128: POKE -16368,0
440 REM &LINE
450 HOME : VTAB 5:T$ = " &LINE ": GOSUB 190
460 PRINT : PRINT "TO REALLY CONTROL INPUT, USE THE &LINE": PRINT "STATEMENT. YOU CAN CHOOSE THE FIELD": PRINT "LENGTH, NUMBER OF DECIMAL PLACES, INPUT": PRINT "CHARACTER TYPE, AND TAB POSITIONS."
470 VTAB 13
480 PRINT "SELECT:": PRINT "INPUT TYPE (N=NUMERIC/S=STRING)"
490 & LINE(1,0,1,39,14;I$): PRINT : IF I$ < >"N" AND I$ < >"S" THEN & BUZZ(P,T): GOTO 490
500 I = (I$ = "S"): IF I THEN O = 1: PRINT : GOTO 540
510 PRINT "OUTPUT TYPE (N/S)"
520 & LINE(1,0,1,39,15;I$): PRINT : IF I$ < >"N" AND I$ < >"S" THEN & BUZZ(P,T): GOTO 520
530 O = (I$ = "S")
540 PRINT "FIELD LENGTH"
550 & LINE(3,0,0,30,16;F): PRINT : IF F <1 OR F >254 THEN & BUZZ(P,T): GOTO 550
560 D = 0: IF I THEN PRINT : GOTO 600: REM IF STRING INPUT
570 REM IN NUMERIC INPUT
580 PRINT "# DECIMAL PLACES"
590 & LINE(3,0,0,30,17;D): PRINT : IF D <0 OR D >F -1 THEN & BUZZ(P,T): GOTO 590
600 PRINT "HTAB"
620 & LINE(2,0,0,30,18;H): PRINT : IF H <1 OR H >40 THEN & BUZZ(P,T): GOTO 620
630 PRINT "VTAB"
640 & LINE(2,0,0,30,19;V): PRINT : IF V <1 OR V >24 THEN & BUZZ(P,T): GOTO 640
650 REM GENERATE INPUT LINE
660 HOME : IF O THEN & LINE(F,D,I,H,V;OV$)
670 IF NOT O THEN & LINE(F,D,I,H,V;OV)
680 PRINT : PRINT : PRINT "YOU ENTERED:"
690 REM PRINT STRING
700 IF O THEN PRINT OV$
710 IF NOT O THEN PRINT OV
720 VTAB 22: PRINT "PRESS ANY KEY TO CONTINUE": WAIT -16384,128: POKE -16368,0
730 REM &PRNTUSNG
740 HOME : VTAB 5:T$ = " &PRNTUSNG ": GOSUB 190
750 PRINT : PRINT
760 PRINT "OUTPUT CAN BE FORMATTED WITH &PRNTUSNG": PRINT "BY USING A FORMAT STRING CONSISTING OF": PRINT "THE SYMBOLS: # , .": PRINT : PRINT "ENTER A NUMBER TO SEE HOW THIS FORMAT": PRINT "WOULD OUTPUT: #,###.##"
770 PRINT : PRINT
780 F$ = "#,###.##"
790 PRINT "ENTER NUMBER: (<RETURN> TO QUIT)"
800 & LINE(12,0,1,1,18;N$):N = VAL(N$): IF N$ = "" THEN 850
820 VTAB 23: PRINT "PRESS ANY KEY TO CONTINUE": WAIT -16384,128: POKE -16368,0
830 VTAB 14: CALL -958: GOTO 770
840 REM &SET, &RSET, AND &FLAG
850 HOME : VTAB 5:T$ = " &SET, &RSET, AND &FLAG ": GOSUB 190
860 PRINT : PRINT "USE THESE THREE COMMANDS TO OPERATE ON": PRINT "BITS. FOR EXAMPLE THE INTEGER VARIABLE": PRINT "A% IS GIVEN A STARTING VALUE OF 375.": PRINT "CHANGE BITS AND WATCH IS CHANGE VALUE."
870 A% = 375
880 VTAB 13: HTAB 1: CALL -958: PRINT "A% = ";A%
890 FOR I = 1 TO 16: & FLAG(A%,I;B): PRINT B;: NEXT : PRINT
900 HTAB 1: VTAB 20: PRINT "BIT TO CHANGE (1-16):"
910 PRINT "(0 TO QUIT)"
920 & LINE(2,0,0,22,20;I)
930 IF I = 0 THEN 980
940 IF I <1 OR I >16 THEN & BUZZ(20,10): GOTO 900
950 & FLAG(A%,I;B)
960 IF B = 1 THEN & RSET(A%,I): GOTO 880
970 & SET(A%,I): GOTO 880
980 REM &COM AND &CHAIN
990 HOME : VTAB 5:T$ = " &COM AND &CHAIN ": GOSUB 190
1000 PRINT : PRINT "WATCH AS THIS PROGRAM CHAINS TO PART 2": PRINT "AND PRESERVES THE VALUE FOR THE PRINTER": PRINT "SLOT IN THE VARIABLE PR%": PRINT : PRINT "PRESENT VALUE OF PR%:";PR%: IF PR% = -1 THEN PRINT "(NO PRINTER)"
1010 VTAB 22: PRINT "PRESS ANY KEY TO CONTINUE": WAIT -16384,128: POKE -16368,0
1020 & COM:PR%,T: REM SAVE PR%,P AND T
1030 REM CHAIN TO PART 2
1040 ONERR GOTO 1070
1050 REM CHAIN TO PART 2, IGNORING VOLUME, SAME SLOT & DRIVE, & MOVE LOMEM UPWARD
1060 & CHAIN(1030,"CHARGER.DEMO2",0,0,0,16384)
1070 REM ERROR HANDLER
1080 & FIX: REM CLEAN UP STACK
1090 IF PEEK(222) = 8 THEN PRINT "I/O ERROR": PRINT "PRESS ANY KEY TO TRY AGAIN": WAIT -16384,128: GOTO 1060