home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib19a.dsk
/
APRIL.1984
/
LIFT.OFF.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
6KB
|
91 lines
20 REM ************************
30 REM * LIFT.OFF *
40 REM * BY STEVEN WONG *
50 REM * *
60 REM * COPYRIGHT (C) 1984 *
70 REM * BY MICROSPARC, INC *
80 REM * LINCOLN, MA. 01773 *
90 REM ************************
100 LOMEM: 32768: TEXT : HOME : GOTO 870
110 PRINT RIGHT$("00" + STR$(J),3);: RETURN
120 POKE -16304,0: POKE -16297,0: RETURN
130 HOME : PRINT D$"CATALOG": PRINT : PRINT : GOTO 150
140 CALL BL: HTAB 1: PRINT "DISK ERROR #" PEEK(222);
150 PRINT ". . . PRESS A KEY": CALL BL
160 POKE KR,0: WAIT KB,128: POKE KR,0: RETURN
170 I = FRE(0):I$ = "":K = POS(0) +1
180 GET A$: IF A$ <S$ AND A$ < >R$ AND A$ < >B$ THEN 180
190 PRINT A$;: IF A$ = R$ THEN 240
200 I = PEEK(SP) - PEEK(SP): IF A$ < >B$ THEN I$ = I$ +A$: GOTO 230
210 IF LEN(I$) <2 THEN HTAB K: PRINT S$;: HTAB K: GOTO 170
220 PRINT S$B$;:I$ = LEFT$(I$, LEN(I$) -1): GOTO 180
230 IF LEN(I$) <16 THEN 180
240 I = VAL(I$):J$ = LEFT$(I$,1): RETURN
250 POKE MS,0:K = 0:MC = 0: CALL 774: HOME : VTAB 22: FOR I = 1 TO 40: PRINT "=";: NEXT
260 VTAB 23: PRINT M4$;: VTAB 23: HTAB 3: FLASH : PRINT M1$: POKE 50,63: VTAB 24
270 PRINT "A=ON S=OFF I-J-K-M @=MENU ESC=SCREE";: POKE 2039,14: SCALE= 1: ROT= 0: GOSUB 120: NORMAL
280 VTAB 21: HTAB 14: PRINT "X=";:J = X: GOSUB 110: HTAB 23: PRINT "Y=";:J = Y: GOSUB 110
290 I = PEEK(KB): XDRAW 1 AT X,Y:I = I -128: XDRAW 1: IF I <0 THEN 290
300 POKE KR,0: IF I < >69 AND I < >81 AND I < >87 THEN 350
310 VTAB 23: HTAB 1: PRINT M4$;: VTAB 23: FLASH : IF I = 81 THEN MC = 0: HTAB 3: PRINT M1$: GOTO 340
320 IF I = 87 THEN MC = 1: HTAB 15: PRINT M2$: GOTO 340
330 IF I = 69 THEN MC = 2: HTAB 30: PRINT M3$;
340 NORMAL : GOTO 380
350 Z = PEEK(SP) - PEEK(SP):X = X +(I = 75) -(I -74):X = X +((X <0) -(X >279)) *280
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
370 IF NOT MC THEN IF I = 65 OR I = 83 THEN HCOLOR= 3 *(I = 65): HPLOT X,Y
380 IF MC THEN HCOLOR= 3 *(MC = 1): HPLOT X,Y
390 IF I < >64 THEN 280
400 I = FRE(0): POKE 216,0: POKE 230,32: POKE 233,3: TEXT : HOME : FOR J = 1 TO 3 STEP 2: VTAB J
410 FOR I = 1 TO 40: PRINT "-";: NEXT I,J: PRINT "COPYRIGHT (C) 1984 BY MICROSPARC, INC."
420 INVERSE : VTAB 2: PRINT SPC( 7)"LIFT OFF BY STEVEN WONG" SPC( 7): NORMAL
430 VTAB 10: PRINT "(1) LOAD SCREEN": PRINT "(2) EDITOR": PRINT "(3) BOX IN SHAPE": PRINT "(4) QUIT"
440 CALL BL: VTAB 15: CALL BH: PRINT : HTAB 5: PRINT "YOUR CHOICE --> ";: GOSUB 170: IF NOT I OR I >4 THEN 440
450 ON I GOTO 470,250,510
460 HOME : END
470 VTAB 20: PRINT "FILE NAME? ";: GOSUB 170: IF I$ = "" THEN GOSUB 130: GOTO 400
480 ONERR GOTO 500
490 PRINT D$"BLOAD "I$",A$2000": POKE 216,0: GOTO 250
500 VTAB 20: GOSUB 140: GOTO 440
510 CALL 774:A = 0:B = 0:C = 279:D = 191: GOSUB 120:L2 = 1630:L = 0: GOTO 560
520 J = C -A: ROT= 0: IF C <256 THEN FOR Z = 1 TO 100: NEXT
530 IF J >254 THEN SCALE= C -255 +1: XDRAW 1 AT 255,B: XDRAW 1 AT 255,D:J = 254 -A
540 SCALE= J +1: XDRAW 1 AT A,B: XDRAW 1 AT A,D: ROT= 16: SCALE= D -B -1
550 XDRAW 1 AT A,B +1: XDRAW 1 AT C,B +1: ROT= 0: RETURN
560 POKE FS,0: FOR K = 1 TO 7:Z = PEEK(SP): GOSUB 520: NEXT : GOSUB 160: POKE MS,0
570 HOME : VTAB 21: PRINT " TOP = ";:J = B: GOSUB 110: PRINT : PRINT " BOTTOM = ";:J = D: GOSUB 110
580 PRINT : PRINT " LEFT = ";:J = A: GOSUB 110: PRINT : PRINT " RIGHT = ";:J = C: GOSUB 110: POKE L2,96
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
600 IF K = 64 THEN GOSUB 520: GOTO 400
610 IF K = 19 THEN 740
620 IF K < >13 THEN 590
630 POKE L2,160: VTAB 21 +L: HTAB 18: CALL BL: PRINT "ENTER? ";: GOSUB 170: IF J$ = " " OR I$ = "" THEN 570
640 HOME : GOSUB 520: ON L +1 GOTO 650,670,690,710
650 IF I <0 OR I >189 OR I +2 >D THEN 730
660 B = I: GOTO 560
670 IF I <2 OR I >191 OR I -2 <B THEN 730
680 D = I: GOTO 560
690 IF I <0 OR I >276 OR I +3 >C THEN 730
700 A = I: GOTO 560
710 IF I <3 OR I >279 OR I -3 <(A) THEN 730
720 C = I: GOTO 560
730 HOME : VTAB 22: PRINT "ERROR";: GOSUB 150: GOSUB 520: GOTO 570
740 HOME : VTAB 22: IF (D -B) *(C -A) >8000 THEN PRINT "SHAPE IS TOO LARGE";: GOSUB 150: GOTO 570
750 PRINT "NEGATIVE SHAPE? ";: GOSUB 170: POKE 239,4 *(J$ = "Y"): GOSUB 520: POKE 249,B: POKE 250,D: POKE 237,B
760 A = A +1:J = INT(A/256):I = A -J *256: POKE 251,I: POKE 252,J: POKE 235,I: POKE 236,J
770 C = C -1:J = INT(C/256):I = C -J *256: POKE 253,I: POKE 254,J
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
790 HOME : HGR2 : XDRAW 1 AT A,B +1: GOSUB 160:J = PEEK(8103) + PEEK(8104) *256 -24575
800 TEXT : HOME : VTAB 8: PRINT "SAVE SHAPE? ";: GOSUB 170: IF J$ < >"Y" THEN 400
810 VTAB 11: CALL BH: PRINT "NAME? ";: GOSUB 170: IF I$ = "" THEN 800
820 ONERR GOTO 860
830 PRINT D$"BSAVE SHAPE."I$",A24576,L"J: HOME
840 VTAB 8: PRINT "NAME: SHAPE."I$: VTAB 11: PRINT "ADDRESS SAVED: 24576"
850 VTAB 14: PRINT "LENGTH OF SHAPE: "J" BYTES": VTAB 17: GOSUB 150: PRINT : GOSUB 130: GOTO 400
860 VTAB 14: GOSUB 140: GOTO 800
870 D$ = CHR$(4): IF PEEK(7900) < >169 OR PEEK(8000) < >208 THEN PRINT D$"BLOAD LIFT.OFF.ML"
880 POKE 232,0: IF PEEK(768) < >1 OR PEEK(790) < >200 THEN FOR I = 768 TO 798: READ J: POKE I,J: NEXT
890 R$ = CHR$(13):B$ = CHR$(8):S$ = CHR$(32):X = 139:Y = 95:BH = -958:BL = -198
900 KB = -16384:KR = -16368:SP = -16336:FS = -16302:MS = -16301:SP = -16336
910 M1$ = "REGULAR":M2$ = "LOCKS PLOT":M3$ = "LOCKS ERASE":M4$ = "Q=" +M1$ +" W=" +M2$ +" E=" +M3$: GOTO 400
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