home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib28a.dsk
/
APRIL.1986
/
MCS.PROJECTOR.bas
< prev
Wrap
BASIC Source File
|
2023-02-26
|
4KB
|
69 lines
10 REM **********************
20 REM * MCS.PROJECTOR *
30 REM * BY MIKE LINKOVICH *
40 REM * COPYRIGHT (C) 1986 *
50 REM * BY MICROSPARC, INC *
60 REM * CONCORD, MA 01742 *
70 REM **********************
80 IF PEEK(104) < >16 THEN POKE 103,129: POKE 104,16: POKE 4224,0: PRINT CHR$(4)"RUN MCS.PROJECTOR"
90 PRINT CHR$(4)"BLOAD MCS.BIN"
100 LOWMEM = 97: IF PEEK(48896) < >76 THEN HIMEM: 16384
110 MAXMEM = 149: IF PEEK(48896) = 76 THEN MAXMEM = 143
120 POKE 8,MAXMEM +1
130 DRW = 2940:SCAN = 2990:MD = 2957:D$ = CHR$(4):AUXMV = 3268:MOVE = 3287
140 PLAYER = 2151:PZ = 2236:RE = 3228
150 B = MAXMEM: ONERR GOTO 640
160 TEXT : HOME : HTAB 5: PRINT "MCS PROJECTOR BY MIKE LINKOVICH": PRINT "** COPYRIGHT 1986 BY MICROSPARC, INC **": POKE 34,3
170 VTAB 24: INPUT "MOVIE - FLM.";F$: IF F$ < >"?" GOTO 180
172 HOME : IF PEEK(48896) = 76 THEN PRINT D$"CAT": GOTO 170
174 PRINT D$"CATALOG": GOTO 170
180 ON ( LEN(F$) = 0) GOTO 250: GOSUB 460
190 HOME : VTAB 5: INPUT "SPEED (1-255) - ";DL: ON (DL <1 OR D >255) GOTO 190:DL = 256 -DL
200 VTAB 6: INPUT "DIRECTION (F=FORWARDS B=BACKWARDS) - ";DN$
202 IF DN$ < >"F" AND DN$ < > CHR$(102) AND DN$ < >"B" AND DN$ < > CHR$(98) THEN 200
204 DN = 1: IF DN$ = "F" OR DN$ = CHR$(102) THEN DN = 0
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
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
230 HPLOT 110,119 TO 183,119: HPLOT 115,119 TO 115,140: HPLOT 177,119 TO 177,140
240 GOSUB 300: TEXT : ON G GOTO 190,160
250 TEXT : HOME : END
260 REM MEM MOVES
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
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
290 REM PLAYER
300 POKE 252,70: POKE 253,111: POKE 254,23: POKE 255,18
310 POKE MD,234: POKE MD +1,234: POKE DRW +1,0
320 IF DN THEN 380
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
340 POKE PZ,96: POKE PZ -11,238: IF AM <B +1 THEN POKE 750,AM +1
350 CALL PLAYER
360 IF PEEK( -16384) >127 THEN 440
370 GOTO 330
380 POKE 765,DL: POKE 759,0: POKE 750,LOWMEM: IF AM <B +1 THEN POKE 751,AM
390 IF AM >B THEN POKE 751,B: POKE 759,7: POKE 764,AM -(MAXMEM -7)
400 POKE PZ -11,206: POKE PZ,234: IF AM <B +1 THEN CALL PZ +1
410 IF AM >B THEN CALL PZ -54
420 IF PEEK( -16384) >127 THEN 440
430 GOTO 380
440 G = ( PEEK( -16384) = 155) +1: POKE -16368,0: RETURN
450 REM LOAD
460 PRINT : PRINT D$"VERIFY FLM."F$: PRINT D$"OPEN FLM."F$: PRINT D$"READ FLM."F$
470 INPUT G
480 IF PEEK(48896) = 76 THEN GOSUB 550: GOTO 540
490 POKE RE +18,LOWMEM +1: IF G <B +2 THEN POKE 751,G
500 IF G >B +1 THEN POKE 751,B +1
510 CALL RE
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
530 PRINT : PRINT D$"CLOSE FLM."F$
540 AM = G -1: RETURN
550 PRINT D$"CLOSE": IF G >B +1 THEN 590
560 PRINT D$"BLOAD FLM."F$",A"(LOWMEM +1) *256",B4,E"G *256",TTXT": CALL 4128
570 RETURN
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
590 PRINT D$"BLOAD FLM."F$",A"(LOWMEM +1) *256",B$,E"(B +1) *256", TTXT": CALL 4128
600 POKE 751,LOWMEM +1: FOR C = B +1 TO G -1
610 PRINT D$"BLOAD FLM."F$",A"LOWMEM *256",B"(C -(LOWMEM +1)) *256 +4",L256,TTXT": CALL 4164
620 AD = C: GOSUB 270: NEXT
630 AD = LOWMEM +1: GOTO 570
640 TEXT : HOME : NORMAL : VTAB 10: PRINT "ERROR #" PEEK(222): CALL -3228
650 PRINT : PRINT "PRESS <RETURN> TO CONTINUE";: INPUT A$: GOTO 100