home *** CD-ROM | disk | FTP | other *** search
/ Commodore Disk User Volume 4 #4 / Commodore_Disk_User_Vol.4_4_1991_-.d64 / mov-ptr.list (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  3KB  |  120 lines

  1. 10 ;"@:mov-ptr.list"
  2. 20 *=$c000
  3. 30 sei            ;set up interrupts
  4. 40 lda #$20
  5. 50 sta $0314
  6. 60 lda #$c0
  7. 70 sta $0315
  8. 80 cli
  9. 90 lda $c01c      ;get fine x-val
  10. 100 sta $c0bd     ;poke into program
  11. 110 sta $c0cd     ;in two places
  12. 120 lda $c01d     ;get fine y-val
  13. 130 sta $c0da     ;poke into program
  14. 140 rts           ;leave
  15. 150 byt $10       ;fine x-val
  16. 160 byt $29       ;fine y-val
  17. 170 *=$c020
  18. 180 lda $dc00     ;get joy pos port 2
  19. 190 sta $c01e     ;put it in memory
  20. 200 lsr $c01e     ;shift right
  21. 210 bcs d         ;if bit 0, next bit
  22. 220 jsr up        ;otherwise up
  23. 230 d lsr $c01e   ;shift right
  24. 240 bcs l         ;if bit 0, next bit
  25. 250 jsr down      ;otherwise down
  26. 260 l lsr $c01e   ;shift right
  27. 270 bcs r         ;if bit 0, next bit
  28. 280 jsr left      ;otherwise left
  29. 290 r lsr $c01e   ;shift right
  30. 300 bcs f         ;if bit 0, next bit
  31. 310 jsr right     ;otherwise right
  32. 320 f lsr $c01e   ;shift right
  33. 330 bcs q         ;if bit 0, next bit
  34. 340 jsr fire      ;otherwise fire
  35. 350 q jmp $ea31   ;housekeeping code
  36. 360 up            ;move up
  37. 370 ldy $d001     ;get y-pos
  38. 380 cpy #$1f      ;check if not off scrn
  39. 390 beq quitu     ;if off, leave
  40. 400 dec $d001     ;move up one
  41. 410 quitu         ;leave
  42. 420 rts
  43. 430 down          ;move down
  44. 440 lda $d001     ;get y-pos
  45. 450 cmp #$f9      ;check if not off scrn
  46. 460 beq quitd     ;if off, leave
  47. 470 inc $d001     ;move down one
  48. 480 quitd         ;leave
  49. 490 rts
  50. 500 left          ;move left
  51. 510 lda $d010     ;get x-msb
  52. 520 and #$01      ;check which side
  53. 530 cmp #$01      ;check msb right
  54. 540 bne onleft    ;no, goto onleft
  55. 550 dec $d000     ;move left
  56. 560 bmi msb0      ;check if passed line
  57. 570 rts           ;leave
  58. 580 msb0          ;0>msb
  59. 590 lda $d010     ;get reg
  60. 600 and #$fe      ;0>bit0
  61. 610 sta $d010     ;put it back
  62. 620 rts           ;leave
  63. 630 onleft        ;onleft
  64. 640 ldx $d000     ;get x-pos
  65. 650 cpx #$01      ;check if not off scrn
  66. 660 beq quitl     ;if off, leave
  67. 670 dec $d000     ;move left
  68. 680 quitl         ;leave
  69. 690 rts
  70. 700 right         ;move right
  71. 710 lda $d010     ;get x-msb
  72. 720 and #$01      ;check which side
  73. 730 cmp #$01      ;on right?
  74. 740 beq onright   ;yes, goto onright
  75. 750 inc $d000     ;move right
  76. 760 lda $d000     ;get x-pos
  77. 770 cmp #$00      ;check if passed line
  78. 780 beq msb1      ;if has, goto msb1
  79. 790 rts           ;leave
  80. 800 msb1          ;1>msb
  81. 810 lda $d010     ;get reg
  82. 820 ora #$01      ;1>bit0
  83. 830 sta $d010     ;put it back
  84. 840 rts           ;leave
  85. 850 onright       ;onright
  86. 860 lda $d000     ;get x-pos
  87. 870 cmp #$57      ;check if not off scrn
  88. 880 beq quitr     ;if off, leave
  89. 890 inc $d000     ;move right
  90. 900 quitr         ;leave
  91. 910 rts
  92. 920 fire          ;fire routine
  93. 930 lda $d010     ;get msb
  94. 940 and #$01      ;get bit
  95. 950 bne firemsb   ;if <>0, goto firemsb
  96. 960 lda $d000     ;get x-pos
  97. 970 sbc #$10      ;take away fine
  98. 980 lsr a         ;div 2
  99. 990 lsr a         ;div 4
  100. 1000 lsr a        ;div 8
  101. 1010 sta $c01a    ;store x-pos
  102. 1020 jmp ybit     ;calculate y-pos
  103. 1030 firemsb      ;firemsb
  104. 1040 lda $d000    ;get x-pos
  105. 1050 adc #$14     ;add 16 to make fine
  106. 1060 sbc #$10     ;take away fine
  107. 1070 lsr a        ;div 2
  108. 1080 lsr a        ;div 4
  109. 1090 lsr a        ;div 8
  110. 1100 adc #$1d     ;add 29
  111. 1110 sta $c0f0    ;store x-pos
  112. 1120 ybit         ;y calculate
  113. 1130 lda $d001    ;get y-pos
  114. 1140 sbc #$29     ;take away fine
  115. 1150 lsr a        ;div 2
  116. 1160 lsr a        ;div 4
  117. 1170 lsr a        ;div 8
  118. 1180 sta $c0f1    ;store y-pos
  119. 1190 rts          ;leave
  120.