home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / coders / assembler-kurs / listings / listing2l.s < prev    next >
Text File  |  1977-12-31  |  5KB  |  122 lines

  1.  
  2. ; Listing2l.s
  3.  
  4. Anfang:
  5.     lea    $dff000,a0    ; gib $dff000 in a0
  6. Waitmouse:
  7.     move.w    #$20,$1dc(a0)    ; BEAMCON0 (ECS+) Auflösung video PAL
  8.     bsr.s    Blinken        ; Bringt den Bildschirm dazu zu blinken
  9.     bsr.s    ZeigerFarbe    ; Bringt den Mauspointer zu blinken
  10.     btst    #2,$16(a0)    ; POTINP - Rechte Maustaste gedrückt?
  11.                 ; (bit 2 im $dff016
  12.     bne.s    nichtgedrueckt    ; Wenn nicht, springe zu VollesChaos
  13.     bsr.s    VollesChaos    ;
  14. nichtgedrueckt:
  15.     btst    #6,$bfe001    ; Linke Maustaste gedrückt?
  16.     bne.s    Waitmouse    ; wenn nicht, zurück zu Waitmouse
  17.     rts            ; Ende
  18.  
  19.  
  20. ZeigerFarbe:
  21.     moveq    #-1,d1        ; Also moveq #$FFFFFFFF,d1
  22.     moveq    #20-1,d0    ; Anzahl der ZeigerFarbe-Zyklen
  23. flash:
  24.     subq.w    #8,d1        ; Ändere die Farbe, die in $dff1a4 kommt
  25.     move.w    d1,$1a4(a0)    ; COLOR18 - gib den Wert von d1 in $dff1a4
  26.                 ; (Die Farbe des Mauspointers!)
  27.     dbra    d0,flash
  28.     rts
  29.  
  30. Blinken:
  31.     move.w    6(a0),$180(a0)    ; Gib den .w-Wert von $dff006 in COLOR0
  32.     move.b    6(a0),$182(a0)    ; Gib den .b-Wert von $dff006 in COLOR1
  33.     rts
  34.  
  35. VollesChaos:
  36.     move.w    #0,$1dc(a0)    ; BEAMCON0 (ECS+) Auflösung video NTSC
  37.     rts
  38.  
  39.     END
  40.  
  41. Dieses Programm ist nur seiner Struktur wegen interessant, denn es hat ein
  42. Hauptprogramm, das von Anfang: bis zum RTS, das SubRoutinen aufruft  (also
  43. Unterprogramme,  die nichts anderes sind als Teile des Programmes, die mit
  44. einem Label versehen wurden und einem RTS enden). Mit  dem  Debugger  (AD)
  45. könnt  ihr  versuchen,  den  Ablauf  des  Programmes zu verfolgen: um alle
  46. SubRoutinen durchzugehen,  drückt  die  Pfeil-nach-Rechts-Taste,  und  ihr
  47. werdet  in  der  Routine  Zeigerfarbe  sehen,  wie  d1  in Einserschritten
  48. heruntergezählt wird.
  49.  
  50. Das fundamentale Problem der BSR/BEQ/BNE/RTS - Strukturen liegt darin, daß
  51. alles  durch Sprünge geregelt ist, bei denen man nach Abarbeitung entweder
  52. mit einem RTS zur Zeile unter  dem  BSR  zurückkehrt,  oder  einen  Sprung
  53. macht,  der  einer  Weiche  ähnelt, bei der man entweder links oder rechts
  54. geht, an deren Ende man aber nicht zurück kann.
  55.  
  56. Ast 1
  57.            _______ _ _ ect ect _ _ _  RTS, Ausstieg von diesem Weg
  58.    Weiche beq/bne /
  59.    ______________/
  60.          \ Ast 2
  61.           \______ _ _ etc etc _ _ _ _ RTS, Ausstieg von diesem Weg
  62.  
  63. Ein BEQ/BNE-Sprung ist wie die Entscheidung,  ob  man  nach  München  oder
  64. Hamburg  fahren  soll, man wird andere Straßen befolgen und einmal am Ziel
  65. angekommen, wird man dort die Nacht verbringen, wenn man das RTS  erreicht
  66. hat. Es wurden aber andere Wege genommen.
  67.  
  68. Wenn wir aber ein BSR.w München antreffen, dann springen wir nach München,
  69. führen die Befehle aus, die wir dort antreffen, und  wenn  wir  einem  RTS
  70. begegnen,  dann  "beamen"  wir uns auf magische Art und Weise zur Kreuzung
  71. zurück, an der wir nach München abgebogen sind. Es ist, als würden wir ein
  72. Zauberbuch  lesen, bei der auf jeder Seite eine Landschaft abgebildet ist,
  73. und wenn wir ein AbraCadaBSR aussprechen, werden wir  in  diese  Zeichnung
  74. katapultiert, wir verbringen dort eine Zeit lang, dann treffen wir auf ein
  75. SimsalaRTS  und  wir  sitzen  vor  dem  Buch,  bereit   auf   Seite   zwei
  76. einzusteigen, mit einem erneutem AbraCadaBSR.
  77.  
  78. Bemerkung1:   Durch  Drücken  der  rechten  Maustaste  wird  eine  Routine
  79. ausgeführt, die sonst übersprungen wird:
  80.  
  81.     btst    #2,$16(a0)    ; POTINP - Rechte Maustaste gedrückt?
  82.                 ; (bit 2 im $dff016
  83.     bne.s    nichtgedrueckt  ; Wenn nicht, springe zu VollesChaos
  84.     bsr.s    VollesChaos    ;
  85. nichtgedrueckt: 
  86.  
  87. Erinnert euch gut an diese Art, um eine Routine nur auszuführen, wenn eine
  88. bestimmte  Kondition  gegeben  ist,  in  diesem  Beispiel  ob  die  rechte
  89. Maustaste gedrückt ist. Beim Programmieren treten solche  Dinge  oft  auf.
  90. Das  Register, das dazu verwendet wird, "VollesChaos" zu bereiten, ist das
  91. $dff1dc, in dem Bit 5dazu dient, zwischen der  europäischen  PAL  und  der
  92. amerikanischen NTSC -Videonorm umzuschalten. Dieses Register existiert nur
  93. in Computern, die nach 1989 gebaut wurden, bei jemanden, der  einen  recht
  94. alten  Computer  hat,  könnte  es  nicht  funktionieren. Wenn es euch aber
  95. funktioniert, dann werdet  ihr  bemerken,  daß  bei  Tastendruck  (rechter
  96. Mausknopf)  der  Bildschirm  quasi  zu  "explodieren"  scheint, da er sehr
  97. schnell zwischen  den  Videonormen  PAL/NTSC  umschaltet.  Wenn  ihr  zwei
  98. Programme  schreiben  möchtet, die zwischen PAL/NTSC umschalten, dann müßt
  99. ihr nur folgendes tun:
  100.  
  101.     move.w    #0,$dff1dc    ; BEAMCON0
  102.     rts
  103.  
  104. Assembliert es mit a, und speichert ab mit WO  (also  als  File,  den  ihr
  105. ausführen  könnt),  gebt ihm ev. den Namen NTSC. Dann assembliert folgende
  106. zwei Zeilen:
  107.  
  108.     move.w    #$20,$dff1dc    ; BEAMCON0
  109.     rts
  110.  
  111. Speichert es als PAL ab. Von der Shell aus könnt ihr so zwischen  PAL  und
  112. NTSC umschalten, indem ihr einfach eines der zwei Programme startet.
  113.  
  114. Wenn ihr bei diesem Programm schon Orientierungsschwierigkeiten habt, dann
  115. bedenkt,  daß  ECHTE  Programme  tausend  mal  komplizierter   sind,   mit
  116. verschiedensten BSR, also versucht, dieses zu 100% zu verstehen, bevor ihr
  117. zu LEKTION3.TXT übergeht, die auch den Untertitel trägt "WIR KÖNNTEN  EUCH
  118. MIT  SPEZIALEFFEKTEN VERWUNDERN, SCHAFFEN ES ABER NOCH NICHT". (A.d.Ü.: In
  119. Orginalton klingt dieser Spruch sehr viel witziger..!)
  120.  
  121.  
  122.