home *** CD-ROM | disk | FTP | other *** search
/ 64'er 1988 May / 64er_Magazin_88-05_1988_Markt__Technik_de_Side_A.d64 / joystick.src (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  3KB  |  119 lines

  1. 2 open1,8,1,"ma.joy"
  2. 5 sys 36864
  3. 6 .opt p,o1
  4. 7 *= $c000
  5. 9 ;
  6. 10 ;  *** ma.joy ***
  7. 11 ;
  8. 12 ; andreas wendker
  9. 13 ; (NULL)jenbergsweg 112 d
  10. 14 ; 2050 hamburg 80
  11. 15 ; tel. (040) 720 68 04
  12. 16 ;
  13. 17 ;
  14. 18 ; aufruf -> sys 49152, nummer
  15. 19 ;
  16. 20 ; funktion -> joystick-abfrage
  17. 21 ;
  18. 22 ;
  19. 23 ;
  20. 50 getbyte = $b79e;zahl (0-255) aus basic-text holen
  21. 51 ;und in x uebergeben
  22. 52 chkcom = $aefd;auf komma pruefen
  23. 53 fehaus = $a437;fehlermeldung ausgeben
  24. 54 letvar = $a9a5;basic-befehl let bearbeiten
  25. 90 ;
  26. 91 ;joystick-port-nummer aus basic-text holen, wertebereichs-ueberpruefung
  27. 92 ;sowie bestimmung einiger parameter
  28. 93 ;
  29. 100 start jsr chkcom;komma ueberspringen
  30. 120 jsr getbyte;nummer des joystick-ports holen
  31. 140 dex;pruefen, ob zahl = 1 bzw. 2
  32. 160 cpx #2
  33. 180 bcc ok
  34. 200 ldx #14;sonst fehlermeldung ausgeben
  35. 220 jmp fehaus;-> illegal quantity error
  36. 240 ok inx;je nach joystick-port-nummer
  37. 260 lda #"1";a mit "1" bzw. "2" laden und
  38. 280 cpx #2;x auf joystick-register
  39. 300 bne jonum;zeigen lassen
  40. 320 ldx #0
  41. 340 lda #"2";ascii-code der port-nummer als 2. buchstaben
  42. 360 jonum sta text+1;des variablen-namens uebernehmen
  43. 370 ;
  44. 371 ;variabe 'j1' bzw. 'j2' bearbeiten -> je nach bewegungsrichtung
  45. 372 ;des joysticks einen wert von 0 bis 8 zuweisen
  46. 373 ;
  47. 380 lda #"j";1.buchstabe = "j"
  48. 400 sta text;-> variable heisst nun 'j1' bzw. 'j2'
  49. 420 lda 56320,x;wert des joystick-registers holen
  50. 440 pha;und retten
  51. 460 and #%00001111;untere vier bits isolieren
  52. 480 ldy #8
  53. 500 josuch cmp verwer,y;und mit allen moeglichen werten vergleichen
  54. 520 beq found
  55. 540 dey
  56. 560 bpl josuch
  57. 580 found tya;a enthaelt jetzt den wert, der der variablen
  58. 582 ;zugewiesen werden soll
  59. 600 jsr anlegen;variable anlegen
  60. 610 ;
  61. 611 ;jetzt die variable 'f1' bzw. 'f2' bearbeiten
  62. 612 ;-> je nach zustand des feuerknopfes 0 oder 1 zuweisen
  63. 613 ;
  64. 620 lda #"f";variablen-namen ab text umbenennen
  65. 640 sta text;in 'f1' bzw. 'f2'
  66. 660 pla;wert des joystick-registers zurueckholen
  67. 680 and #%00010000;feuerknopf-bit isolieren
  68. 700 cmp #0
  69. 720 beq feuok;knopf gedrueckt
  70. 740 lda #1
  71. 760 feuok eor #1;bit 0 umdrehen -> a enhaelt nun
  72. 761 ;gewuenschten wert
  73. 762 ;
  74. 763 ;routine zum anlegen der variablen
  75. 764 ;-> bei j1/j2 wird sie als unterprogramm aufgerufen, bei f1/f2
  76. 765 ;ganz normal durchgegangen
  77. 766 ;-> in a muss der spaetere wert der variablen stehen
  78. 767 ;
  79. 770 anlegen clc;ascii-code der zahl ermitteln
  80. 780 adc #48
  81. 800 sta text+3;und in basic-befehl ab text einfuegen
  82. 820 lda $7a;chrget-zeiger retten
  83. 840 pha
  84. 860 lda $7b
  85. 880 pha
  86. 900 lda #<text;chrget-zeiger auf eigenen befehl
  87. 920 sta $7a;ab text richten
  88. 940 lda #>text
  89. 960 sta $7b
  90. 980 jsr letvar;befehl abarbeiten -> wertzuweisung
  91. 1000 pla;chrget-zeiger auf altes byte richten
  92. 1020 sta $7b
  93. 1040 pla
  94. 1060 sta $7a
  95. 1080 rts
  96. 9000 ;
  97. 9001 ;alle denkbaren kombinationen der vier bewegungsrichtungen
  98. 9002 ;des joysticks -> reihenfolge entspricht
  99. 9003 ;den spaeteren variablen-werten
  100. 9004 ;
  101. 10000 verwer .byte %00001111;nicht bewegt
  102. 10001 .byte %00001110;oben
  103. 10002 .byte %00001101;unten
  104. 10003 .byte %00001011;links
  105. 10004 .byte %00000111;rechts
  106. 10005 .byte %00001010;oben-links
  107. 10006 .byte %00000110;oben-rechts
  108. 10007 .byte %00001001;unten-links
  109. 10008 .byte %00000101;unten-rechts
  110. 10500 ;
  111. 10501 ;basic-befehl    j1=0
  112. 10502 ;-> verschluesselt zur bearbeitung durch das betriebssystem
  113. 10504 ;-> befehl wird je nach variable geaendert
  114. 10505 ;
  115. 11000 text .asc "j1";platz fuer variablen-namen
  116. 11001 .byte $b2;basic-token fuer '='
  117. 11002 .byte 48, 0;platz fuer ascii-code des ergebnisses
  118. 11003 ;die 0 kennzeichnet das befehls-ende
  119.