home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / cpmug / cpmug054.ark / DRAW.BAS < prev    next >
Encoding:
BASIC Source File  |  1984-04-29  |  2.8 KB  |  91 lines

  1. h10 ! ******************** DRAW ***********************
  2. 110 !                  BY MICHAEL RUF
  3. 120 !                     12/24/78
  4. 130 ! PROGRAM TO USE THE CROMEMCO DAZZLER TO PLAY A VIDEO GAME ON TV.
  5. 140 ! GAME-'TRAP'.  IN THE GAME, EACH PLAYER CONTROLS A BLOCK THAT
  6. 150 ! KEEPS TRAVELING IN THE DIRECTION REQUESTED BY THE JOYSTICK
  7. 160 ! CONTROLLERS (UP,DOWN,LEFT AND RIGHT). THE FIRST PLAYER TO TOUCH
  8. 170 ! HIS OR HIS OPPONENT'S TRACK OR TOUCH THE WALL LOSES THE MATCH
  9. 180 !
  10. 190 ! I.E. (CONCERNING COMMENTS. A DOUBLE DASH(--) IS A MAIN PART,
  11. 200 ! SINGLE DASH(-) IS WITHIN THAT PART).
  12. 210 !
  13. 220 ST=4096*7: ! MEMORY BEGINS AT 7000
  14. 230 !
  15. 240 ! -- ASSIGN COUNTERS
  16. 250 !
  17. 260 ! - ASSIGN PORTS
  18. 270 !
  19. 280 I1=25: ! ANALOG PORT 1, HEX ADDRESS 19
  20. 290 I2=26: ! ANALOG PORT 2, HEX ADDRESS 1A
  21. 320 !
  22. 330 ! -ASSIGN COLORS
  23. 340 !
  24. 360 S1=102: ! COLOR OF PLAYFIELD OR SCREEN
  25. 370 P=153:P0=8:  ! PLAYER'S COLOR (RED,HIGH INTENSITY)
  26. 382 !
  27. 385 D1=1: ! PLAYERS' STARTING DIRECTIONS
  28. 390 !
  29. 400 ! SUBROUTINE-- PRINT PLAYFIELD
  30. 410 !
  31. 420 ! FOR LOOP- FILL SCREEN WITH COLOR ASSIGNED (S1)
  32. 430 !
  33. 440 FOR S=ST TO ST+2047
  34. 450 POKE S,S1
  35. 460 NEXT S
  36. 470 !
  37. 1020 !
  38. 1030 ! -PLAYER ONE'S STARTING BLOCK
  39. 1040 !
  40. 1050 !        TOP HALF. IN PAGE 1 OF MEMORY
  41. 1060 !
  42. 1070 POKE ST+484,P:P1=ST+484:POKE ST+485,P:POKE ST+500,P:POKE ST+501,P
  43. 1080 !
  44. 1090 !        BOTTOM HALF. IN PAGE 3 OF MEMORY
  45. 1100 !
  46. 1110 POKE ST+1028,P:POKE ST+1029,P:POKE ST+1044,P:POKE ST+1045,P
  47. 1120 !
  48. 5000 !
  49. 5010 ! SUBROUTINE-- ACCEPT INPUT FROM JOYSTICKS AND CHANGE TO A DIRECTION
  50. 5020 !
  51. 5030 ! -PLAYER ONE'S INPUT
  52. 5040 !
  53. 5050 V1=INP(I1): ! VERTICAL
  54. 5060 H1=INP(I2): ! HORAZONTAL
  55. 5070 !
  56. 5120 !
  57. 5130 ! -CHANGE INPUT TO DIRECTION
  58. 5140 !
  59. 5150 IF V1>X1 THEN IF V1>50 THEN D1=2 ELSE IF V1<-78 THEN D1=4
  60. 5160 IF H1>V1 THEN IF H1>50 THEN D1=1 ELSE IF H1<-78 THEN D1=3
  61. 6000 !
  62. 6010 ! SUBROUTINE-- MOVE PLAYERS
  63. 6020 !
  64. 6024 ! -ESTABLISH PLAYER ONE'S POSITION
  65. 6026 !
  66. 6030 IF D1=1 THEN P3=P1+2:IF (P1+1-ST)/15=INT((P1+1-ST)/15) THEN P3=P3+497
  67. 6040 IF D1=2 THEN P3=P1-64:IF P1<=ST+1026 AND P3>ST+1026 OR P1<ST+1536 AND P3>ST+1536 THEN P3=P3-528
  68. 6050 IF D1=3 THEN P3=P1-2:IF (P1-ST)/16=INT((P1-ST)/16) THEN P3=P1-498
  69. 6060 IF D1=4 THEN P3=P1+64:IF P1<=ST+511 AND P3>ST+511 OR P1<=ST+1023 AND P3>ST+1023 THEN P3=P3+528
  70. 6070 IF P3<ST-32 OR P3>ST+2047 THEN 5000
  71. 6100 !
  72. 6200 !
  73. 6210 ! -MOVE INTO MEMORY
  74. 6220 !
  75. 6225 PRINT"MOVE"
  76. 6230 POKE P3,P:POKE P3+1,P:POKE P3+16,P:POKE P3+17,P
  77. 6250 IF P3<=ST+511 AND P3+32>ST+511 OR P3<=ST+1023 AND P3+32>ST+1023 THEN P5=P3+544 ELSE P5=P3+32
  78. 6270 POKE P5,P:POKE P5+1,P:POKE P5+16,P:POKE P5+17,P
  79. 6290 P1=P3:P2=P4
  80. 6295 FOR I=1 TO 100:NEXT I
  81. 6300 GOTO 5000
  82. 8000 !
  83. 8010 ! CHANGE COLOR OF BLOCK
  84. 8020 !
  85. 8030 P0=P0-1
  86. 8040 IF P0=0 THEN P0=16
  87. 8050 P1=Pp*16
  88. 8060 FOR I=1 TO 100:NEXT I
  89. 8070 GOTO 5000
  90. 64000 END
  91.