home *** CD-ROM | disk | FTP | other *** search
/ M.u.C.S. Disc 2000 / MUCS2000.iso / anwend / luna121 / module / beispiel.s < prev    next >
Text File  |  1999-06-03  |  3KB  |  110 lines

  1.  
  2. ; Beipiel-(Block-)Filtermodul (*.FM)
  3. ; (c)1999 Richard Gordon Faika
  4.  
  5. ; --------------------------------------------------------------------
  6. ; Parameter holen
  7. ; Hier werden die benötigten Parameter vom Stack geholt.
  8. ; --------------------------------------------------------------------
  9.  
  10.             move    4(sp),d0        ; Funktionsnummer holen
  11.             move.l    6(sp),a1        ; String-Startadresse holen
  12.             move    14(sp),d1        ; Stringlänge holen
  13.  
  14.             tst        d0                ; Filtern?
  15.             beq        filter
  16.  
  17.  
  18.  
  19.  
  20. ; --------------------------------------------------------------------
  21. ; Funktionsnummer auswerten
  22. ; --------------------------------------------------------------------
  23.  
  24.             cmpi    #1,d0
  25.             bne        case1 
  26.             bra        GetInfo        ; Info
  27. case1:        cmpi    #2,d0
  28.             bne        case2 
  29.             bra        ModInit        ; Init
  30. case2:        cmpi    #3,d0
  31.             bne        noFunc
  32.             bra        ModExit        ; Exit
  33.  
  34.  
  35. ; --------------------------------------------------------------------
  36. ; Modul-Initialisierung
  37. ; --------------------------------------------------------------------
  38. ModInit:    clr.l    d0
  39.             rts
  40.  
  41.  
  42.  
  43. ; --------------------------------------------------------------------
  44. ; Modul-Deinitialisierung
  45. ; --------------------------------------------------------------------
  46. ModExit:    clr.l    d0
  47.             rts
  48.  
  49.  
  50.  
  51. ; --------------------------------------------------------------------
  52. ; Infotextzeiger zurückgeben
  53. ; Der Infotext wird im Modulinfo-Dialog von Luna angezeigt, wenn
  54. ; der Anwender eine Modulinformation zu diesem Modul wünscht.
  55. ; --------------------------------------------------------------------
  56. GetInfo:    lea.l    info(pc),a0        ; Zeiger auf Infotext zurück.
  57.             move.l    a0,d0
  58.             rts
  59.  
  60.  
  61.  
  62.  
  63.  
  64. ; --------------------------------------------------------------------
  65. ; unbekannte Funktionsnummer
  66. ; --------------------------------------------------------------------
  67. noFunc:        moveq.l    #-32,d0
  68.             rts
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76. ; --------------------------------------------------------------------
  77. ; Filterroutine
  78. ; Die eigentliche Filterroutine, mit der man den Text verändern kann.
  79. ; Bei Textlängenänderung o.Ä., ist in den Arbeitspuffer zu schreiben 
  80. ; und eine 1 zurückzugeben.
  81. ; --------------------------------------------------------------------
  82. filter:        tst        d1
  83.             beq        exit
  84.             bra        goin
  85.     loop:        
  86.             move.b    (a1),d0
  87.             rol.b    #4,d0            ; Schwachsinn, aber Effektvoll =:)
  88.             move.b    d0,(a1)+
  89.     goin:    
  90.             dbra    d1,loop
  91. exit:        clr.l    d0                ; 0 = OK
  92.             rts
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99. ; --------------------------------------------------------------------
  100. ; Infotext
  101. ; Der Infotext mu₧ dieser Struktur folgen, weil immer 6 Strings nacheinander
  102. ; gelesen werden. Minimum ist also ein Nullbyte je Eintrag.
  103. ; --------------------------------------------------------------------
  104. info:        dc.b    ' Beispielmodul',0        ; Modulinfo für Popup, max. 24 Zeichen+Nullbyte
  105.             dc.b    'Autorenname',0            ; Autorenname, max. 20 Zeichen+Nullbyte
  106.             dc.b    'Infotext Zeile 1',0    ; max. 40 Zeichen+Nullbyte
  107.             dc.b    'Infotext Zeile 2',0    ;  ""
  108.             dc.b    'Infotext Zeile 3',0    ;  ""
  109.             dc.b    'Infotext Zeile 4',0    ;  ""
  110.