home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib24b.dsk / CHARGER.DEMO.bas < prev    next >
BASIC Source File  |  2023-02-26  |  6KB  |  109 lines

  1. 10  REM  ************************
  2. 20  REM  *    CHARGER.DEMO      *
  3. 30  REM  *   BY W.T. BRIDGMAN   *
  4. 40  REM  *  COPYRIGHT (C) 1985  *
  5. 50  REM  *  BY MICROSPARC, INC  *
  6. 60  REM  *  CONCORD, MA. 01742  *
  7. 70  REM  ************************
  8. 80  TEXT : HOME : GOTO 210: REM  SKIP SUBROUTINE
  9. 90  REM  SUBROUTINE TO ENTER BUZZ VALUES
  10. 100  HOME : VTAB 5:T$ = " &BUZZ ": GOSUB 190
  11. 110  VTAB 8: PRINT "PRESENT PITCH:";P: PRINT "PRESENT DURATION:";T: PRINT "PRESENT BUZZ SOUNDS LIKE THIS.": & BUZZ(P,T)
  12. 120  PRINT : PRINT "OKAY? (Y/N)";: GET K$: PRINT : IF K$ = "Y"  THEN  RETURN 
  13. 130  PRINT : PRINT "SELECT NEW PITCH"
  14. 140  & LINE(3,0,0,30,14;P): PRINT : IF P <0  OR P >255  THEN  & BUZZ(20,10): GOTO 140
  15. 150  PRINT "SELECT NEW DURATION (0-255)"
  16. 160  & LINE(3,0,0,30,15;T): PRINT : IF T <0  OR T >255  THEN  & BUZZ(20,10): GOTO 160
  17. 170  VTAB 12: CALL  -958: GOTO 100
  18. 180  REM  SUBROUTINE TO PRINT INVERSE TITLE
  19. 190  INVERSE : PRINT T$: NORMAL 
  20. 200  RETURN 
  21. 210  REM  MAIN ENTRY POINT
  22. 220  VTAB 5: HTAB 3: PRINT "APPLESOFT SUPERCHARGER DEMONSTRATION": PRINT : HTAB 12: PRINT "BY W.T. BRIDGEMAN": VTAB 12: HTAB 15: PRINT "PLEASE WAIT...": VTAB 22: PRINT "** COPYRIGHT 1985 BY MICROSPARC, INC, **"
  23. 230  REM  LOAD & INITIALIZE AMPERSAND PACKAGE
  24. 240  PRINT  CHR$(4);"BLOAD SUPERCHARGER.OBJ0": CALL 777
  25. 250  PRINT  CHR$(4);"BLOAD SUPERCHARGER.OBJ1"
  26. 260  REM  SET PRINTER SLOT
  27. 270  HOME : VTAB 12: PRINT "PRINTER SLOT": VTAB 13: PRINT "(0 FOR NONE)"
  28. 280  & LINE(1,0,0,15,12;PR%): IF PR% <0  OR PR% >7  THEN  & BUZZ(20,10): GOTO 280
  29. 290  IF PR% = 0  THEN PR% =  -1
  30. 300  IF PR% >0  THEN  POKE 770,PR%: REM  SET PRINTER SLOT
  31. 310  POKE 771,0: REM  DISABLE LOWER-CASE FUNCTION
  32. 320  REM  USE SUBROUTINE FOR &BUZZ
  33. 330 P = 100:T = 1: GOSUB 100: IF PR% =  -1  THEN 390: REM  SKIP & SCREEN IF NO PRINTER
  34. 340  REM  &SCREEN
  35. 350  PRINT : PRINT :T$ = " &SCREEN ": GOSUB 190
  36. 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)"
  37. 370  PRINT "Y/N? ";: GET K$: PRINT : IF K$ = "Y"  THEN  & SCREEN(PR%)
  38. 380  IF K$ < >"N"  THEN  & BUZZ(P,T): GOTO 370
  39. 390  HOME : VTAB 5:T$ = " &INPT ": GOSUB 190
  40. 400  PRINT : PRINT "WITH '&INPT' YOU MAY INPUT ANY CHARACTER"
  41. 410  PRINT "ENTER ANY STRING:": & INPTST$
  42. 420  PRINT : PRINT "YOU ENTERED:": PRINT ST$
  43. 430  VTAB 22: PRINT "PRESS ANY KEY TO CONTINUE": WAIT  -16384,128: POKE  -16368,0
  44. 440  REM  &LINE
  45. 450  HOME : VTAB 5:T$ = " &LINE ": GOSUB 190
  46. 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."
  47. 470  VTAB 13
  48. 480  PRINT "SELECT:": PRINT "INPUT TYPE (N=NUMERIC/S=STRING)"
  49. 490  & LINE(1,0,1,39,14;I$): PRINT : IF I$ < >"N"  AND I$ < >"S"  THEN  & BUZZ(P,T): GOTO 490
  50. 500 I = (I$ = "S"): IF I  THEN O = 1: PRINT : GOTO 540
  51. 510  PRINT "OUTPUT TYPE (N/S)"
  52. 520  & LINE(1,0,1,39,15;I$): PRINT : IF I$ < >"N"  AND I$ < >"S"  THEN  & BUZZ(P,T): GOTO 520
  53. 530 O = (I$ = "S")
  54. 540  PRINT "FIELD LENGTH"
  55. 550  & LINE(3,0,0,30,16;F): PRINT : IF F <1  OR F >254  THEN  & BUZZ(P,T): GOTO 550
  56. 560 D = 0: IF I  THEN  PRINT : GOTO 600: REM  IF STRING INPUT
  57. 570  REM  IN NUMERIC INPUT
  58. 580  PRINT "# DECIMAL PLACES"
  59. 590  & LINE(3,0,0,30,17;D): PRINT : IF D <0  OR D >F -1  THEN  & BUZZ(P,T): GOTO 590
  60. 600  PRINT "HTAB"
  61. 620  & LINE(2,0,0,30,18;H): PRINT : IF H <1  OR H >40  THEN  & BUZZ(P,T): GOTO 620
  62. 630  PRINT "VTAB"
  63. 640  & LINE(2,0,0,30,19;V): PRINT : IF V <1  OR V >24  THEN  & BUZZ(P,T): GOTO 640
  64. 650  REM  GENERATE INPUT LINE
  65. 660  HOME : IF O  THEN  & LINE(F,D,I,H,V;OV$)
  66. 670  IF   NOT O  THEN  & LINE(F,D,I,H,V;OV)
  67. 680  PRINT : PRINT : PRINT "YOU ENTERED:"
  68. 690  REM  PRINT STRING
  69. 700  IF O  THEN  PRINT OV$
  70. 710  IF   NOT O  THEN  PRINT OV
  71. 720  VTAB 22: PRINT "PRESS ANY KEY TO CONTINUE": WAIT  -16384,128: POKE  -16368,0
  72. 730  REM  &PRNTUSNG
  73. 740  HOME : VTAB 5:T$ = " &PRNTUSNG ": GOSUB 190
  74. 750  PRINT : PRINT 
  75. 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: #,###.##"
  76. 770  PRINT : PRINT 
  77. 780 F$ = "#,###.##"
  78. 790  PRINT "ENTER NUMBER: (<RETURN> TO QUIT)"
  79. 800  & LINE(12,0,1,1,18;N$):N =  VAL(N$): IF N$ = ""  THEN 850
  80. 810  PRINT : PRINT : PRINT "OUTPUT:": & PRNTUSNG:F$,N
  81. 820  VTAB 23: PRINT "PRESS ANY KEY TO CONTINUE": WAIT  -16384,128: POKE  -16368,0
  82. 830  VTAB 14: CALL  -958: GOTO 770
  83. 840  REM  &SET, &RSET, AND &FLAG
  84. 850  HOME : VTAB 5:T$ = " &SET, &RSET, AND &FLAG ": GOSUB 190
  85. 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."
  86. 870 A% = 375
  87. 880  VTAB 13: HTAB 1: CALL  -958: PRINT "A% = ";A%
  88. 890  FOR I = 1 TO 16: & FLAG(A%,I;B): PRINT B;: NEXT : PRINT 
  89. 900  HTAB 1: VTAB 20: PRINT "BIT TO CHANGE (1-16):"
  90. 910  PRINT "(0 TO QUIT)"
  91. 920  & LINE(2,0,0,22,20;I)
  92. 930  IF I = 0  THEN 980
  93. 940  IF I <1  OR I >16  THEN  & BUZZ(20,10): GOTO 900
  94. 950  & FLAG(A%,I;B)
  95. 960  IF B = 1  THEN  & RSET(A%,I): GOTO 880
  96. 970  & SET(A%,I): GOTO 880
  97. 980  REM  &COM AND &CHAIN
  98. 990  HOME : VTAB 5:T$ = " &COM AND &CHAIN ": GOSUB 190
  99. 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)"
  100. 1010  VTAB 22: PRINT "PRESS ANY KEY TO CONTINUE": WAIT  -16384,128: POKE  -16368,0
  101. 1020  & COM:PR%,T: REM  SAVE PR%,P AND T
  102. 1030  REM  CHAIN TO PART 2
  103. 1040  ONERR  GOTO 1070
  104. 1050  REM  CHAIN TO PART 2, IGNORING VOLUME, SAME SLOT & DRIVE, & MOVE LOMEM UPWARD
  105. 1060  & CHAIN(1030,"CHARGER.DEMO2",0,0,0,16384)
  106. 1070  REM  ERROR HANDLER
  107. 1080  & FIX: REM  CLEAN UP STACK
  108. 1090  IF  PEEK(222) = 8  THEN  PRINT "I/O ERROR": PRINT "PRESS ANY KEY TO TRY AGAIN": WAIT  -16384,128: GOTO 1060
  109. 1100  PRINT "ERROR "; PEEK(222): END