home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib19a.dsk / APRIL.1984 / LIFT.OFF.bas < prev    next >
BASIC Source File  |  2023-02-26  |  6KB  |  91 lines

  1. 20  REM  ************************
  2. 30  REM  *       LIFT.OFF       *
  3. 40  REM  *    BY STEVEN WONG    *
  4. 50  REM  *                      *
  5. 60  REM  *  COPYRIGHT (C) 1984  *
  6. 70  REM  *  BY MICROSPARC, INC  *
  7. 80  REM  *  LINCOLN, MA. 01773  *
  8. 90  REM  ************************
  9. 100  LOMEM: 32768: TEXT : HOME : GOTO 870
  10. 110  PRINT  RIGHT$("00" + STR$(J),3);: RETURN 
  11. 120  POKE  -16304,0: POKE  -16297,0: RETURN 
  12. 130  HOME : PRINT D$"CATALOG": PRINT : PRINT : GOTO 150
  13. 140  CALL BL: HTAB 1: PRINT "DISK ERROR #" PEEK(222);
  14. 150  PRINT ". . . PRESS A KEY": CALL BL
  15. 160  POKE KR,0: WAIT KB,128: POKE KR,0: RETURN 
  16. 170 I =  FRE(0):I$ = "":K =  POS(0) +1
  17. 180  GET A$: IF A$ <S$  AND A$ < >R$  AND A$ < >B$  THEN 180
  18. 190  PRINT A$;: IF A$ = R$  THEN 240
  19. 200 I =  PEEK(SP) - PEEK(SP): IF A$ < >B$  THEN I$ = I$ +A$: GOTO 230
  20. 210  IF  LEN(I$) <2  THEN  HTAB K: PRINT S$;: HTAB K: GOTO 170
  21. 220  PRINT S$B$;:I$ =  LEFT$(I$, LEN(I$) -1): GOTO 180
  22. 230  IF  LEN(I$) <16  THEN 180
  23. 240 I =  VAL(I$):J$ =  LEFT$(I$,1): RETURN 
  24. 250  POKE MS,0:K = 0:MC = 0: CALL 774: HOME : VTAB 22: FOR I = 1 TO 40: PRINT "=";: NEXT 
  25. 260  VTAB 23: PRINT M4$;: VTAB 23: HTAB 3: FLASH : PRINT M1$: POKE 50,63: VTAB 24
  26. 270  PRINT "A=ON  S=OFF  I-J-K-M  @=MENU  ESC=SCREE";: POKE 2039,14: SCALE= 1: ROT= 0: GOSUB 120: NORMAL 
  27. 280  VTAB 21: HTAB 14: PRINT "X=";:J = X: GOSUB 110: HTAB 23: PRINT "Y=";:J = Y: GOSUB 110
  28. 290 I =  PEEK(KB): XDRAW 1 AT X,Y:I = I -128: XDRAW 1: IF I <0  THEN 290
  29. 300  POKE KR,0: IF I < >69  AND I < >81  AND I < >87  THEN 350
  30. 310  VTAB 23: HTAB 1: PRINT M4$;: VTAB 23: FLASH : IF I = 81  THEN MC = 0: HTAB 3: PRINT M1$: GOTO 340
  31. 320  IF I = 87  THEN MC = 1: HTAB 15: PRINT M2$: GOTO 340
  32. 330  IF I = 69  THEN MC = 2: HTAB 30: PRINT M3$;
  33. 340  NORMAL : GOTO 380
  34. 350 Z =  PEEK(SP) - PEEK(SP):X = X +(I = 75) -(I -74):X = X +((X <0) -(X >279)) *280
  35. 360 Y = Y +(I = 77) -(I = 73):Y = Y +((Y <0) -(Y >191)) *192: IF I = 27  THEN K =   NOT (K): POKE MS -K,0
  36. 370  IF   NOT MC  THEN  IF I = 65  OR I = 83  THEN  HCOLOR= 3 *(I = 65): HPLOT X,Y
  37. 380  IF MC  THEN  HCOLOR= 3 *(MC = 1): HPLOT X,Y
  38. 390  IF I < >64  THEN 280
  39. 400 I =  FRE(0): POKE 216,0: POKE 230,32: POKE 233,3: TEXT : HOME : FOR J = 1 TO 3  STEP 2: VTAB J
  40. 410  FOR I = 1 TO 40: PRINT "-";: NEXT I,J: PRINT "COPYRIGHT (C) 1984 BY MICROSPARC, INC."
  41. 420  INVERSE : VTAB 2: PRINT  SPC( 7)"LIFT OFF    BY STEVEN WONG" SPC( 7): NORMAL 
  42. 430  VTAB 10: PRINT "(1) LOAD SCREEN": PRINT "(2) EDITOR": PRINT "(3) BOX IN SHAPE": PRINT "(4) QUIT"
  43. 440  CALL BL: VTAB 15: CALL BH: PRINT : HTAB 5: PRINT "YOUR CHOICE --> ";: GOSUB 170: IF   NOT I  OR I >4  THEN 440
  44. 450  ON I GOTO 470,250,510
  45. 460  HOME : END 
  46. 470  VTAB 20: PRINT "FILE NAME? ";: GOSUB 170: IF I$ = ""  THEN  GOSUB 130: GOTO 400
  47. 480  ONERR  GOTO 500
  48. 490  PRINT D$"BLOAD "I$",A$2000": POKE 216,0: GOTO 250
  49. 500  VTAB 20: GOSUB 140: GOTO 440
  50. 510  CALL 774:A = 0:B = 0:C = 279:D = 191: GOSUB 120:L2 = 1630:L = 0: GOTO 560
  51. 520 J = C -A: ROT= 0: IF C <256  THEN  FOR Z = 1 TO 100: NEXT 
  52. 530  IF J >254  THEN  SCALE= C -255 +1: XDRAW 1 AT 255,B: XDRAW 1 AT 255,D:J = 254 -A
  53. 540  SCALE= J +1: XDRAW 1 AT A,B: XDRAW 1 AT A,D: ROT= 16: SCALE= D -B -1
  54. 550  XDRAW 1 AT A,B +1: XDRAW 1 AT C,B +1: ROT= 0: RETURN 
  55. 560  POKE FS,0: FOR K = 1 TO 7:Z =  PEEK(SP): GOSUB 520: NEXT : GOSUB 160: POKE MS,0
  56. 570  HOME : VTAB 21: PRINT " TOP    = ";:J = B: GOSUB 110: PRINT : PRINT " BOTTOM = ";:J = D: GOSUB 110
  57. 580  PRINT : PRINT " LEFT   = ";:J = A: GOSUB 110: PRINT : PRINT " RIGHT  = ";:J = C: GOSUB 110: POKE L2,96
  58. 590  GOSUB 160:K =  PEEK(KB): IF K = 32  THEN L = (L +1) *(L <3):L1 = 1630 +L *128: POKE L1,96: POKE L2,160:L2 = L1
  59. 600  IF K = 64  THEN  GOSUB 520: GOTO 400
  60. 610  IF K = 19  THEN 740
  61. 620  IF K < >13  THEN 590
  62. 630  POKE L2,160: VTAB 21 +L: HTAB 18: CALL BL: PRINT "ENTER? ";: GOSUB 170: IF J$ = " "  OR I$ = ""  THEN 570
  63. 640  HOME : GOSUB 520: ON L +1 GOTO 650,670,690,710
  64. 650  IF I <0  OR I >189  OR I +2 >D  THEN 730
  65. 660 B = I: GOTO 560
  66. 670  IF I <2  OR I >191  OR I -2 <B  THEN 730
  67. 680 D = I: GOTO 560
  68. 690  IF I <0  OR I >276  OR I +3 >C  THEN 730
  69. 700 A = I: GOTO 560
  70. 710  IF I <3  OR I >279  OR I -3 <(A)  THEN 730
  71. 720 C = I: GOTO 560
  72. 730  HOME : VTAB 22: PRINT "ERROR";: GOSUB 150: GOSUB 520: GOTO 570
  73. 740  HOME : VTAB 22: IF (D -B) *(C -A) >8000  THEN  PRINT "SHAPE IS TOO LARGE";: GOSUB 150: GOTO 570
  74. 750  PRINT "NEGATIVE SHAPE? ";: GOSUB 170: POKE 239,4 *(J$ = "Y"): GOSUB 520: POKE 249,B: POKE 250,D: POKE 237,B
  75. 760 A = A +1:J =  INT(A/256):I = A -J *256: POKE 251,I: POKE 252,J: POKE 235,I: POKE 236,J
  76. 770 C = C -1:J =  INT(C/256):I = C -J *256: POKE 253,I: POKE 254,J
  77. 780  HGR2 : POKE 230,96: CALL 62450: POKE 24576,1: POKE 24578,4: POKE 230,32: CALL 7900: POKE 233,96: SCALE= 1: ROT= 0
  78. 790  HOME : HGR2 : XDRAW 1 AT A,B +1: GOSUB 160:J =  PEEK(8103) + PEEK(8104) *256 -24575
  79. 800  TEXT : HOME : VTAB 8: PRINT "SAVE SHAPE? ";: GOSUB 170: IF J$ < >"Y"  THEN 400
  80. 810  VTAB 11: CALL BH: PRINT "NAME? ";: GOSUB 170: IF I$ = ""  THEN 800
  81. 820  ONERR  GOTO 860
  82. 830  PRINT D$"BSAVE SHAPE."I$",A24576,L"J: HOME 
  83. 840  VTAB 8: PRINT "NAME: SHAPE."I$: VTAB 11: PRINT "ADDRESS SAVED: 24576"
  84. 850  VTAB 14: PRINT "LENGTH OF SHAPE: "J" BYTES": VTAB 17: GOSUB 150: PRINT : GOSUB 130: GOTO 400
  85. 860  VTAB 14: GOSUB 140: GOTO 800
  86. 870 D$ =  CHR$(4): IF  PEEK(7900) < >169  OR  PEEK(8000) < >208  THEN  PRINT D$"BLOAD LIFT.OFF.ML"
  87. 880  POKE 232,0: IF  PEEK(768) < >1  OR  PEEK(790) < >200  THEN  FOR I = 768 TO 798: READ J: POKE I,J: NEXT 
  88. 890 R$ =  CHR$(13):B$ =  CHR$(8):S$ =  CHR$(32):X = 139:Y = 95:BH =  -958:BL =  -198
  89. 900 KB =  -16384:KR =  -16368:SP =  -16336:FS =  -16302:MS =  -16301:SP =  -16336
  90. 910 M1$ = "REGULAR":M2$ = "LOCKS PLOT":M3$ = "LOCKS ERASE":M4$ = "Q=" +M1$ +"    W=" +M2$ +"   E=" +M3$: GOTO 400
  91. 920  DATA  1,0,4,0,29,0,169,0,133,6,168,169,32,133,7,170,177,6,41,127,145,6,200,208,247,230,7,202,208,242,96