Player-Missile Drawing Editor

E. H. Foerster

You can toss out your graph paper and your binary to decimal conversion tables. The P/M Drawing Editor lets you design players and missiles on-screen with a joystick. Because of automatic program adjustments, you can easily visualize players of any size, including double players or combining two players into one. When you're done, you can view the player "in action," and even automatically generate a BASIC routine for using the players and missiles in your own programs. It will run in 16K.

Would you like to write a Player-Missile (P/M) program, but are intimidated by the need to convert your drawn player on graph paper to numerical image data? With the program in this article, you can draw your P/M object using the joystick and then let your computer do the work of converting the image to numerical data for your favorite P/M movement routine.

This program will actually perform the task of writing the DATA statements containing the P/M image using a program-writing program. The complete capabilities along with explanations are included in the instructions for the program. Only limited instructions and no REMark statements are included in the program to permit its use in a 16K machine. For those interested in the details, a program outline along with a listing of variables is included.

Using The Editor

Let's walk through a simple example of the use of the Editor. Set up a player with double line resolution, size one, and eight lines long. Place the cursor at the top right corner of the drawing easel, press "D" for draw-to, move the cursor to bottom left and push the trigger button. Bingo, you have drawn a player consisting of a diagonal line. Press "S" for stop and, when the menu is displayed, press "L" for list.

The computer now displays your player as numerical data. Notice that each number represents the bit value of the P/M pixel as you move down the player, line-by-line. To see your player in P/M graphics mode : press "V" for view and, in a few seconds, your player appears in P/M graphics.

Would you like to see your object in single line resolution and at size four? Follow the instructions in the text window and, with a few keystrokes, the changes have been accomplished. Suppose you want to make changes to the image. Just a few keystrokes and you are back to the drawing easel. However, now the easel is different from the original, in size and shape, reflecting the changes made. The program allows complete freedom when going from one area to another. This allows you to make as many changes as needed before you record your final image data on tape. You can add or delete lines at the top or bottom and a fill routine will fill in an area.

Experiment by combining up to four players, changing the parameters of size and resolution, and you will soon have a better understanding of the meaning and interrelations of these parameters.

One unique tool used in the program is the SGN function and logical operators for converting the STICK(0) readings to X, Y coordinates. The actual examples in the program may be a little obscure. The routine is as follows:

10 S = STICK(0)
20 IF S < 12 THEN X = X + SGN(8 - S) : X = X + (X < XMIN) - (X > XMAX) : S = S + (X < 8) * 4 + 4
30 IF S < 15 THEN Y = Y + SGN(13.5 - S) : Y = Y + (Y < YMIN) - (Y > YMAX)

You may not believe it, but these three lines read all nine joystick positions, convert the reading to new X, Y coordinates, and adjust these coordinates to the limits expressed by the X and Y MAX and MIN values. For those not familiar with logical statements, the value in parentheses of a comparison or equality evaluates to a one if true and zero if not true. Such statements can frequently reduce two lines of code using IF statements to a single line of code.

A note of caution if you are planning on using the "Player Missile Graphics Made Easy," by Sak and Meier in COMPUTE!, February 1981, #21. The program is designed for use with single line resolution. Addresses for players in P/M memory are indexed by page number. However, in double line resolution, memory for players two and four starts at half-page intervals and cannot be accessed. The P/M drawing Editor program gets around this limitation by extending the lengths of players one and three to include players two and four respectively. This, however, works only when adjacent players are moved together.

The LPRINT in line 1580 in the program writing subroutine serves a similar purpose to the use of LPRINT before a CSAVE.

Before this statement was included, only one player could be recorded on tape. Subsequent players would give error messages when they were later entered.

Player-Missile Drawing Editor Instructions

  1. INITIAL QUESTIONS
    1. INPUT Resolution: See table for explanation. Resolution for all players and missiles must be the same for any one program.
    2. INPUT Player or Missile: A player is eight P/M pixels (bits) wide; a missile is two P/M pixels wide.
    3. INPUT number of players: There are four players available, each eight P/M pixels wide. Any number of players may be placed side by side and moved together. Thus, four players combined will give 32 P/M pixels across.
    4. INPUT Size: See table for explanation. This parameter can be changed later in the program.
    5. INPUT number of vertical lines. See table for explanation. Lines can be added or deleted later in program.
  2. DRAWING EASEL
    • The drawing easel will appear as a green area. The drawn player appears as an orange area. The cursor is indicated by a lighter colored green or orange area. To change color, press joystick trigger. To move cursor, use joystick.
    • Keyboard Options
    • (0-9) Controls speed of cursor movement. 0 = fast, 9 = slow, 2 = initial speed.
    • (D)raw to: Draw line from current cursor position. Move cursor to new position. Press trigger button to draw line between two positions.
    • (F)ill: Used to fill an area. The area must be bounded by orange on all four sides. Place cursor below highest green space and, if possible, above lowest green space. Press F. For odd-shaped areas the routine may have to be repeated.
    • (L)ines: Add or delete vertical lines at top or bottom of drawing easel.
    • (S)top: Stop drawing. If the drawing is large, there may be a considerable wait while the diagram is converted to numerical data.
  3. OPTION MENU
    • (V)iew: observe player(s) in P/M graphics. Move player using joystick. During View you may press:
    • (S)ize to change size of player,
    • (C)olor to change color of player. Horizontal movement of joystick changes color. Vertical movement of joystick changes intensity. Color number and intensity are displayed as changes are made.
    • (R)esolution to change resolution.
    • (L)ist: Get listing of image data for player(s).
    • (E)dit: Return to drawing easel. If size or resolution was changed during view, then drawing easel is modified accordingly. If size limitations are exceeded, then size is reduced to two.
    • (S)ave: Save image numerical data on tape. Insert blank tape in recorder. Press RECORD and PLAY. Answer question for player number. If this is the first player, then answer zero. If previous players were saved, enter next player number. For example: if first drawing was two players wide, they were player zero and one. You, therefore, enter two for this player number. Data will be transferred to tape using print statements. The recorder will start and stop during this procedure.
    • (D)raw new player: Used to erase current player and start new player.
  4. USE OF RECORDED DATA
    • Recorded data will be entered into the computer using the ENTER command. This data may be merged with a resident program. DATA statements will be written starting at line 31,000.
    1. If the program is not going to be merged with a resident program, then type NEW and press RETURN.
    2. Place tape in recorder.
    3. Press PLAY.

      For each player or group of players:

    4. Type ENTER "C" and press RETURN twice.
    5. READY will appear twice on screen before playback is complete.
    6. Now LIST your entry.
Table 1.
TABLE OF GRAPHICS POINT SIZE FOR PM GRAPHICS
Resolution Size P/M Pixel Size*
Vertical Horizontal
Double Line(1) 1 2 2
Double Line(1) 2 2 4
Double Line(1) 4 2 8
Single Line(2) 1 1 2
Single Line(2) 2 1 4
Single Line(2) 4 1 8
*Measured in Graphics Mode 8 pixel size (the text mode cursor is eight pixels high and eight pixels wide).

Table 2. Program Outline.

10-20 Initializes and defines constants.
30-120 Inputs parameters and draws initial easel.
130-160 Drawing loop.
170-190 Checks RE * NP * SI limit.
200-230 Calculates parameters for easel and draws easel.
250-290 Moves cursor.
290 Changes cursor to normal green or orange.
300-350 Loops for keyboard input during draw.
400-420 Gets keyboard entry.
450-560 Draw-to routine.
600-670 Fill routine.
700-730 Stops.
750-870 Adds or deletes lines.
900-980 Menu.
1000-1210 Views in P/M graphics.
1220 POKEs X position and size.
1230 Stops P/M View.
1240 POKEs Color.
1250-1280 Changes size.
1300-1390 Changes color.
1400-1450 Edits.
1450-1480 LISTs player data.
1500-1610 Programs writing program for tape.

Table 3. Constants Used In Program.

P/M = P/M page.
P/MB = P/M base address.
P(A) = Player A image data address.
PY(A) = Player A Y-position in player area.
PX(A) = Player A X-position.
PA = Pause for adjusting speed of cursor in drawing program.
LA = Line advance subroutine in program writing program.
CO = Color: 16 * Color no. + intensity.
PLX = Player 0 horizontal position register.
PLY = Player 0 vertical position register.
PLL = Player length register.
RE = Resolution.
MI = Missile flag.
NP = No. of players
SI = Horizontal P/M size.
VL = No. of vertical lines for player.
G = Graphics determinant.
XD = X draw-to dimension for each P/M pixel.
H = Horizontal determinant.
X1, Y1 = Temporary X and Y coordinates.
S = STICK(0)

PROGRAM. Player-Missile Drawing Editor.

10 DIM A$(1), P(3), PY(3), PX(3) : PA = 2 : LA = 1590 : CO = 24 : PLX = 53248 : PLY = 1780 : PLL = 1784
15 IF PEEK(1536)< >162 THEN GOSUB 9000
20 PM = PEEK(106) - 16 : PMB = PM * 256 : POKE 54279, PM : FOR A = 0 TO 3 : P(A) = PMB + A * 24 : NEXT A
30 GRAPHICS 0 : ? : ? "INPUT VERTICAL RESOLUTION : " :? " (1) = DOUBLE LINE RESOLUTION" : ? " (2) = SINGLE LINE RESOLUTION"
40 TRAP 30 : INPUT RE : IF RE > 2 OR RE < 1 THEN 30
50 ? : ? "DO YOU WANT TO DRAW (P)LAYER OR (7 SPACES) (M)ISSILE"; : INPUT A$ : IF A$< >"P" AND A$< >"M" THEN 50
60 IF A$ = "M" THEN MI = 1 : NP = 1 : GOTO 80
70 ? : ? "HOW MANY PLAYERS DO YOU WANT TO COMBINE TO FORM A PLAYER (1 - 4)" : TRAP 70 : INPUT NP : IF NP < 1 OR NP > 4 THEN 70
80 NP = NP - 1 : ? : ? "INPUT HORIZONTAL SIZE (1, 2 OR 4)" : TRAP 80 : INPUT SI : IF SI < 1 OR SI > 4 OR SI = 3 THEN 80
90 GOSUB 170
100 ? : ? "HOW MANY LINES DO YOU WANT FOR YOU R{3 SPACES} PLAYER (1 - 24)" : TRAP 100 : INPUT VL : IF VL < 1 OR VL > 24 THEN 100
110 GOSUB 200 : SETCOLOR 2, 12, 6 : COLOR 3 : X = 20 * G : Y = 10 * G - 1 : PLOT X, Y : DRAWTO X + XD, Y
120 IF STRIG(0) = 0 THEN POKE 710, 42 + (PEEK(710) = 42) * 156 : PLOT X, Y : DRAWTO X + XD, Y
130 S = STICK(0) : IF S < 15 THEN GOSUB 250
140 IF PEEK(53775) < 255 THEN 300
150 FOR A = 1 TO 25 * PA : NEXT A
160 GOTO 120
170 IF RE * (NP + 1) * SI < 17 THEN RETURN
180 GRAPHICS 0 : ? : ? "THIS PROGRAM CANNOT HANDLE 4 PLAYERS, SINGLE LINE RESOLUTION AND SIZE"
190 ? "GREATER THAN 2. THE SIZE WILL BE {5 SPACES}CHANGED TO 2." : SI = 2 : ? : ? "PRESS RETURN TO CONTINUE" : INPUT A$ : RETURN
200 XD1 = RE * SI : XD = XD1 - 1 : H = (NP + 1) * XD1 : IF MI THEN H = H / 4
210 G = 1 + ((H > 5) OR (VL > 20)) + 2 * ((H > 10) OR (VL > 40)) : GRAPHICS 19 + (G > 1) * G
220 YMIN = INT(10 * G - VL / 2) : YMAX = INT(10 * G + VL / 2 - 1) : XMIN = 20 * G - 4 * H : XMAX = 20 * G + 4 * H - 1 - XD
230 SETCOLOR 0, 2, 8 : SETCOLOR 1, 12, 4 : COLOR 2 : FOR Y = YMIN TO YMAX : PLOT XMIN, Y : DRAWTO XMA X + XD, Y : NEXT Y : RETURN
250 GOSUB 290
260 IF S < 12 THEN X = X + SGN(8 - S) * XD1 : X = X + (X < XMIN) * XD1 - (X > XMAX) * XD1 : S = S + (S < 8) * 4 + 4
270 IF S < 15 THEN Y = Y + SGN(13.5 - S) : Y = Y + (Y < YMIN) - (Y > YMAX)
280 LOCATE X, Y, A : POKE 710, PEEK(707 + A) + 2 : COLOR 3 : PLOT X, Y : DRAWTO X + XD, Y : RETURN
290 COLOR 1 + (PEEK(710) = 198) : PLOT X, Y : DRAWTO X + XD, Y : RETURN
300 GOSUB 400 : IF A = ASC("D") THEN 450
310 IF A = ASC("F") THEN 600
320 IF A = ASC("S") THEN GOSUB 700 : GOTO 900
330 IF A = ASC("L") THEN GOSUB 700 : GOTO 750
340 IF A < 58 AND A > 47 THEN PA = A - 47
350 GOTO 120
400 OPEN #1, 4, 0, "K :" : GET #1, A : CLOSE #1
410 IF PEEK(53775) < 255 THEN 410
420 RETURN
450 X 1 = X : Y 1 = Y
460 S = STICK(0) : IF S = 15 THEN 460
470 GOSUB 260
480 IF STRIG(0) = 0 THEN 510
490 S = STICK(0) : IF S < 15 THEN GOSUB 250
500 GOTO 480
510 COLOR 1 : X2 = X : Y2 = Y : Y3 = Y1 : A = XD1 * SGN(X2 - X1) : B = SGN(Y2 - Y1) : C = X2 - X1 + A : D = Y2 - Y1 + B
520 IF C = 0 OR D = 0 THEN FOR A = 0 TO XD : PLOT X1 + A, Y1 : DRAWTO X2 + A, Y2 : NEXT A : GOTO 570
530 FOR X = X1 TO X2 STEP A : FOR Y = Y3 TO Y2 STEP B : PLOT X, Y : DRAWTO X + XD, Y
540 IF (X - X1 + A) / C = (Y - Y1 + B) / D THEN Y = Y + B : GOTO 560
550 IF (X - X1 + A) / C > (Y - Y1 + B) / D THEN NEXT Y
560 Y3 = Y : NEXT X : X = X - A : Y = Y - B
570 GOSUB 280 : GOTO 120
600 X1 = X : COLOR 2 : PLOT X, Y : DRAWTO X + XD, Y : B = 670
610 GOSUB B : LOCATE X, Y - 1, A : IF A = 2 THEN Y = Y - 1 : GOTO 610
620 GOSUB B : LOCATE X - 1, Y, A : IF A = 2 THEN X = X - 1 : GOTO 620
630 GOSUB B : COLOR 1 : PLOT X, Y
640 GOSUB B : LOCATE X + 1, Y, A : IF A = 2 THEN X = X + 1 : PLOT X, Y : GOTO 640
650 X = X1 : Y = Y + 1 : GOSUB B : LOCATE X, Y, A : IF A = 2 THEN 620
660 GOSUB 280 : GOTO 130
670 IF X = XMAX OR X = XMIN OR Y = YMAX OR Y = YMIN THEN POP : GOSUB 280 : GOTO 120
680 RETURN
700 GOSUB 290 : FOR A = 0 TO NP : B = 0 : X1 = XMIN + 8 * A * PLL + A, VL + 128 : NEXT A : GOTO 1050 XD1 : FOR Y = YMIN TO YMIN + VL - 1
710 C = 128 : D = 0 : FOR X = X1 TO X1 + 7 * XD1 STEP XD1 : IF MI THEN FOR X = XMIN TO XMIN + XD1 STEP X D1
720 LOCATE X, Y, E : IF E = 1 THEN D = D + C
730 C = C / 2 : NEXT X : B = B + 1 : POKE P(A) + B, D : NEXT Y : NEXT A : RETURN
750 D = 0 : T = 0 : ? : ? "(A)DD OR (D)ELETE LINES" : INPUT A$ : IF A$ = "D" THEN D = 1 : GOTO 770
760 IF A$< >"A" THEN 750
770 ? : ? "AT (T)OP OR (B)OTTOM" : INPUT A$ : IF A$ = "T" THEN T = 1 : GOTO 790
780 IF A$< >"B" THEN 770
790 ? : ? "HOW MANY LINES" : TRAP 790 : INPUT C : IF D THEN C = C - (C - VL + 1) * (C >= VL ) : GOTO 840
800 IF VL + C > 24 THEN C = 24 - VL : ? : ? "EXCEEDED LIMIT" : ? : ? "WILL ADD ONLY " ; C ; " LINES" : ? : ? " PRESS RETURN " : INPUT A$
810 IF T THEN FOR A = 0 TO NP : FOR B = VL TO O STEP -1 : POKE P (A) + B + C, PEEK(P (A) + B) : NEXT B : NEXT A : GOSUB 860
820 VL = VL + C : IF NOT D AND NOT T THEN GOSUB 870
830 GOTO 1400
840 IF T THEN FOR A = 0 TO NP : FOR B = C TO VL : POKE P (A) + B - C, PEEK(P (A) + B) : NEXT B : NEXT A
850 FOR A = 0 TO NP : FOR B = VL - C + 1 TO VL : POKE P (A) + B, 0 : NEXT B : NEXT A : VL = VL - C : GOTO 1400
860 FOR A = 0 TO NP : FOR B = 1 TO C : POKE P(A) + B, 0 : NEXT B : NEXT A : RETURN
870 FOR A = 0 TO NP : FOR B = VL - C + 1 TO VL : POKE P (A) + B, 0 : NEXT B : NEXT A : RETURN
900 GRAPHICS 0 : ? : ? " DO YOU WANT TO : " : ? : ? " (V)IEW PLAYER IN PM GRAPHICS?" : ? " (R)ECORD DATA ? " : ? " (L)IST DATA ? "
910 ? " (E)DIT PLAYER ? " : ? " (B)EGIN WITH A NEW PLAYER ? " : ? " (S)TOP ? "
920 GOSUB 400 : IF A = ASC (" V ") THEN 1000
930 IF A = ASC (" R ") THEN 1500
940 IF A = ASC (" L ") THEN 1450
950 IF A = ASC (" E ") THEN GOSUB 170 : GOTO 1400
960 IF A = ASC (" B ") THEN RUN
970 IF A = ASC (" S ") THEN STOP
980 GOTO 900
1000 TRAP 40000 : GOSUB 1240
1010 GRAPHICS 7 : GRAPHICS 3 : POKE 559, 46 + 16 * (RE = 2) : POKE 53277, 3 : GOSUB 1220 : Y = 64 * RE - VL / 2
1020 FOR A = 1774 TO 1787 : POKE A, 0 : NEXT A
1030 IF RE = 1 AND NP > 0 THEN FOR A = 0 TO 1 : POKE
1040 FOR A = 0 TO NP : POKE PLL + A, VL : NEXT A
1050 PXM = 255 - NP * 8 * SI
1060 FOR A = 0 TO 3 : PY(A) = PMB + 512 * RE + 128 * RE * A : NEXT A
1070 FOR A = 0 TO NP : FOR B = 1 TO VL : POKE PY(A) + B, PEEK(P(A) + B) : NEXT B : NEXT A
1080 POKE 1788, PM + 2 * RE : Z = USR(1696)
1090 ? : ? "'RETURN' TO MAIN PROGRAM" : ? "'C' TO CHANGE COLOR" : ? "'S' TO CHANGE SIZE"
1100 ? "'R' TO CHANGE RESOLUTION FROM ";RE;" TO "; 3 - RE;
1110 S = STICK(0) : X = 0
1120 IF S < 12 THEN X = SGN(8 - S) : S = S + (S < 8) * 4 + 4 : X = X + (PX(0) + X < 0) - (PX(0) + X > PXM)
1130 FOR A = 0 TO NP : PX(A) = PX(A) + X : NEXT A
1140 IF S < 15 THEN Y = Y + SGN(13.5 - S) : Y = Y + (Y < 0) - (Y > 255 - VL)
1150 FOR A = 0 TO NP : POKE PLY + A, Y : POKE PLX + A, PX(A) : NEXT A
1160 IF PEEK(53775) = 255 THEN 1110
1170 GOSUB 400 : IF A = 155 THEN GOSUB 1230 : GOSUB 170 : GOTO 900
1180 IF A = ASC("S") THEN 1250
1190 IF A = ASC("C") THEN 1300
1200 IF A = ASC("R") THEN RE = 3 - RE : GOSUB 1230 : GOTO 1010
1210 GOTO 1110
1220 PX(0) = 128 - 4 * (NP + 1) * SI : FOR A = 0 TO NP : PX(A) = PX(0) + 8 * SI * A : POKE PLX + A, PX(A) : POKE 53256 + A, SI - 1 : NEXT A : RETURN
1230 FOR A = 0 TO 3 : POKE PLX + A, O : POKE PLY + A, O : NEXT A : RETURN
1240 FOR A = 704 TO 707 : POKE A, CO : NEXT A : RETURN
1250 ? "SIZE = "; SI : ? "PRESS 1, 2 OR 4 TO CHANGE SIZE" : ? "PRESS 'RETURN' TO GET OUT OF SIZE {5 SPACES} SUBROUTINE";
1260 GOSUB 400 : IF A = 155 THEN 1090
1270 IF A = 49 OR A = 50 OR A = 52 THEN SI = A - 48 : GOSUB 1220
1280 GOTO 1250
1300 A = INT(CO / 16) : B = CO - A * 16 : ? : ? "COLOR = "; A, "INTENSITY = "; B
1310 ? "MOVE JOYSTICK HORIZONTALLY TO CHANGE COLOR; VERTICALLY TO CHANGE INTENSITY"
1320 ? "PRESS RETURN TO EXIT SUBROUTINE";
1330 S = STICK(0) : IF PEEK(53775) < 255 THEN 1380
1340 IF S = 15 THEN 1330
1350 IF S = 7 OR S = 11 THEN A = A + SGN(8 - S) : A = A - (A > 15) * 16 + (A < 0) * 16
1360 IF S = 13 OR S = 14 THEN B = B - 2 * SGN(13.5 - S) : B = B - (B > 14) * 16 + (B < 0) * 16
1370 C0 = 16 * A + B : GOSUB 1240 : GOTO 1300
1380 GOSUB 400 : IF A = 155 THEN 1090
1390 GOTO 1300
1400 GOSUB 200 : COLOR 1 : FOR A = 0 TO NP : X = XMIN + A * XD1 * 8 : FOR Y = 1 TO VL
1410 B = PEEK(P(A) + Y) : C = 128 : FOR X1 = 0 TO 7 : IF MI THEN FOR X1 = 0 TO 1
1420 IF B >= C THEN B = B - C : GOSUB 1440
1430 C = C/2 : NEXT X1 : NEXT Y : NEXT A : X = 20 * G : Y = 10 * G - 1 : GOSUB 280 : GOTO 120
1440 PLOT X + X1 * XD1, YMIN + Y - 1 : DRAWTO X + X1 * XD1 + XD, YMIN + Y - 1 : RETURN
1450 GRAPHICS 0 : FOR A = 0 TO NP : ? : IF MI THEN ? "MISSILE" : GOTO 1470
1460 ? "PLAYER "; A
1470 FOR B = 1 TO VL : ? PEEK(P(A) + B); " , "; : NEXT B : ? "{BACK S}" : NEXT A
1480 ? : ? "PRESS RETURN TO RETURN TO PROGRAM" : GOSUB 400 : GOTO 900
1500 ? : ? "WHAT NO. IS THIS PLAYER, MISSILE OR 1STPLAYER OF GROUP" : TRAP 900 : INPUT PN
1510 ? : ? "PLACE BLANK TAPE IN RECORDER, PRESS PLAY, RECORD AND RETURN"
1520 OPEN #1, 8, 0, "C :" : FOR A = 1 TO 64 : ? #1; "R."; : NEXT A
1530 FOR A = 0 TO NP : LI = 31400 + (PN + A) * 100 : ? #1 : IF MI THEN 1600
1540 ? #1; LI; "REM * * PLAYER "; PN; " : RESOLUTION, PLAYER LENGTH, SIZE, COLOR. SUBSEQUENT LINE IS IMAGE DATA" : GOSUB LA
1550 ? #1; LI; "DATA "; RE; " , "; VL; " , "; SI; " , "; CO : GOSUB LA
1560 FOR B = 1 TO VL : IF B = 1 OR B = 26 THEN ? #1 : ? #1; LI; "DATA "; : GOSUB LA : GOTO 1580
1570 ? #1; " , ";
1580 ? #1; PEEK(P(A) + B); : NEXT B : NEXT A : CLOSE #1 : TRAP 900 : LPRINT : GOTO 900
1590 LI = LI + 10 : RETURN
1600 LI = 3100 + (PN + A) * 100 : ? #1; LI; "REM * * MISSILE "; PN; " : RESOLUTION, MISSILE LENGTH, SIZE. ";
1610 ? #1; "SUBSEQUENT LINE IS MISSILE DATA : GOS.LA"
1620 ? #1; LI; "DATA "; RE; " , "; VL; " , "; SI : GOSUB LA : GOTO 1560
9000 FOR I = 1536 TO 1706 : READ A : POKE I, A : NEXT I : RETURN
9010 DATA 162, 3, 189, 244, 6, 240, 89, 56, 221, 240, 6, 240, 83, 141, 254, 6, 106, 141
9020 DATA 255, 6, 142, 253, 6, 24, 169, 0, 109, 253, 6, 24, 109, 252, 6, 133, 204, 133
9030 DATA 206, 189, 240, 6, 133, 203, 173, 254, 6, 133, 205, 189, 248, 6, 170, 232, 46, 255
9040 DATA 6, 144, 16, 168, 177, 203, 145, 205, 169, 0, 145, 203, 136, 202, 208, 244, 76, 87
9050 DATA 6, 160, 0, 177, 203, 145, 205, 169, 0, 145, 203, 200, 202, 208, 244, 174, 253, 6
9060 DATA 173, 254, 6, 157, 240, 6, 189, 236, 6, 240, 48, 133, 203, 24, 138, 141, 253, 6
9070 DATA 109, 235, 6, 133, 204, 24, 173, 253, 6, 109, 252, 6, 133, 206, 189, 240, 6, 133
9080 DATA 205, 189, 248, 6, 170, 160, 0, 177, 203, 145, 205, 200, 202, 208, 248, 174, 253, 6
9090 DATA 169, 0, 157, 236, 6, 202, 48, 3, 76, 2, 6, 76, 98, 228, 0, 0, 104, 169
9100 DATA 7, 162, 6, 160, 0, 32, 92, 228, 96

Return to Table of Contents | Previous Section | Next Section