home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib28a.dsk / APRIL.1986 / MCS.PROJECTOR.bas < prev   
BASIC Source File  |  2023-02-26  |  4KB  |  69 lines

  1. 10  REM  **********************
  2. 20  REM  * MCS.PROJECTOR      *
  3. 30  REM  * BY MIKE LINKOVICH  *
  4. 40  REM  * COPYRIGHT (C) 1986 *
  5. 50  REM  * BY MICROSPARC, INC *
  6. 60  REM  * CONCORD, MA  01742 *
  7. 70  REM  **********************
  8. 80  IF  PEEK(104) < >16  THEN  POKE 103,129: POKE 104,16: POKE 4224,0: PRINT  CHR$(4)"RUN MCS.PROJECTOR"
  9. 90  PRINT  CHR$(4)"BLOAD MCS.BIN"
  10. 100 LOWMEM = 97: IF  PEEK(48896) < >76  THEN  HIMEM: 16384
  11. 110 MAXMEM = 149: IF  PEEK(48896) = 76  THEN MAXMEM = 143
  12. 120  POKE 8,MAXMEM +1
  13. 130 DRW = 2940:SCAN = 2990:MD = 2957:D$ =  CHR$(4):AUXMV = 3268:MOVE = 3287
  14. 140 PLAYER = 2151:PZ = 2236:RE = 3228
  15. 150 B = MAXMEM: ONERR  GOTO 640
  16. 160  TEXT : HOME : HTAB 5: PRINT "MCS PROJECTOR BY MIKE LINKOVICH": PRINT "** COPYRIGHT 1986 BY MICROSPARC, INC **": POKE 34,3
  17. 170  VTAB 24: INPUT "MOVIE - FLM.";F$: IF F$ < >"?" GOTO 180
  18. 172  HOME : IF  PEEK(48896) = 76  THEN  PRINT D$"CAT": GOTO 170
  19. 174  PRINT D$"CATALOG": GOTO 170
  20. 180  ON ( LEN(F$) = 0) GOTO 250: GOSUB 460
  21. 190  HOME : VTAB 5: INPUT "SPEED (1-255) - ";DL: ON (DL <1  OR D >255) GOTO 190:DL = 256 -DL
  22. 200  VTAB 6: INPUT "DIRECTION (F=FORWARDS B=BACKWARDS) - ";DN$
  23. 202  IF DN$ < >"F"  AND DN$ < > CHR$(102)  AND DN$ < >"B"  AND DN$ < > CHR$(98)  THEN 200
  24. 204 DN = 1: IF DN$ = "F"  OR DN$ =  CHR$(102)  THEN DN = 0
  25. 210  HGR2 : HCOLOR= 7: HPLOT 123,67 TO 170,67 TO 170,114 TO 123,114 TO 123,67: HPLOT 122,67 TO 122,114: HPLOT 171,67 TO 171,114: CALL 3060
  26. 220  HPLOT 120,64 TO 173,64 TO 173,117 TO 120,117 TO 120,64: HPLOT 140,64 TO 120,40: HPLOT 153,64 TO 173,40
  27. 230  HPLOT 110,119 TO 183,119: HPLOT 115,119 TO 115,140: HPLOT 177,119 TO 177,140
  28. 240  GOSUB 300: TEXT : ON G GOTO 190,160
  29. 250  TEXT : HOME : END 
  30. 260  REM  MEM MOVES
  31. 270  POKE 60,0: POKE 61,LOWMEM: POKE 62,255: POKE 63,LOWMEM: POKE 66,0: POKE 67,AD -(MAXMEM -7): POKE AUXMV,56: CALL AUXMV: RETURN : REM  M->A
  32. 280  POKE 60,0: POKE 61,AD -(MAXMEM -7): POKE 62,255: POKE 63,AD -(MAXMEM -7): POKE 66,0: POKE 67,LOWMEM: POKE AUXMV,24: CALL AUXMV: RETURN : REM  A->M
  33. 290  REM  PLAYER
  34. 300  POKE 252,70: POKE 253,111: POKE 254,23: POKE 255,18
  35. 310  POKE MD,234: POKE MD +1,234: POKE DRW +1,0
  36. 320  IF DN  THEN 380
  37. 330  POKE 751,LOWMEM +1: POKE 764,8: POKE 765,DL: POKE 759,0: IF AM >B  THEN  POKE 759,AM -(MAXMEM -8): POKE 750,B +1
  38. 340  POKE PZ,96: POKE PZ -11,238: IF AM <B +1  THEN  POKE 750,AM +1
  39. 350  CALL PLAYER
  40. 360  IF  PEEK( -16384) >127  THEN 440
  41. 370  GOTO 330
  42. 380  POKE 765,DL: POKE 759,0: POKE 750,LOWMEM: IF AM <B +1  THEN  POKE 751,AM
  43. 390  IF AM >B  THEN  POKE 751,B: POKE 759,7: POKE 764,AM -(MAXMEM -7)
  44. 400  POKE PZ -11,206: POKE PZ,234: IF AM <B +1  THEN  CALL PZ +1
  45. 410  IF AM >B  THEN  CALL PZ -54
  46. 420  IF  PEEK( -16384) >127  THEN 440
  47. 430  GOTO 380
  48. 440 G = ( PEEK( -16384) = 155) +1: POKE  -16368,0: RETURN 
  49. 450  REM  LOAD
  50. 460  PRINT : PRINT D$"VERIFY FLM."F$: PRINT D$"OPEN FLM."F$: PRINT D$"READ FLM."F$
  51. 470  INPUT G
  52. 480  IF  PEEK(48896) = 76  THEN  GOSUB 550: GOTO 540
  53. 490  POKE RE +18,LOWMEM +1: IF G <B +2  THEN  POKE 751,G
  54. 500  IF G >B +1  THEN  POKE 751,B +1
  55. 510  CALL RE
  56. 520  ON (G <B +2  OR MX = B) GOTO 530: POKE 751,LOWMEM +1: FOR C = B +1 TO G -1: POKE RE +18,LOWMEM: CALL RE:AD = C: GOSUB 270: NEXT 
  57. 530  PRINT : PRINT D$"CLOSE FLM."F$
  58. 540 AM = G -1: RETURN 
  59. 550  PRINT D$"CLOSE": IF G >B +1  THEN 590
  60. 560  PRINT D$"BLOAD FLM."F$",A"(LOWMEM +1) *256",B4,E"G *256",TTXT": CALL 4128
  61. 570  RETURN 
  62. 580  POKE 251,14: POKE DRW +1,56: POKE 252,100: POKE 253,111: POKE 254,HR: POKE 255,HL: CALL DRW: XDRAW S AT X,Y: RETURN 
  63. 590  PRINT D$"BLOAD FLM."F$",A"(LOWMEM +1) *256",B$,E"(B +1) *256",            TTXT": CALL 4128
  64. 600  POKE 751,LOWMEM +1: FOR C = B +1 TO G -1
  65. 610  PRINT D$"BLOAD FLM."F$",A"LOWMEM *256",B"(C -(LOWMEM +1)) *256 +4",L256,TTXT": CALL 4164
  66. 620 AD = C: GOSUB 270: NEXT 
  67. 630 AD = LOWMEM +1: GOTO 570
  68. 640  TEXT : HOME : NORMAL : VTAB 10: PRINT "ERROR #" PEEK(222): CALL  -3228
  69. 650  PRINT : PRINT "PRESS <RETURN> TO CONTINUE";: INPUT A$: GOTO 100