home *** CD-ROM | disk | FTP | other *** search
/ ST-Computer Leser-CD 2000 January / LCD_01_2000.iso / anwend / luna146 / module / commenta.s < prev    next >
Text File  |  1999-06-03  |  2KB  |  91 lines

  1.  
  2. ; Commentary.fm  (c)1999 Richard Gordon Faika
  3.  
  4. ; Fügt ein Kommentarzeichen (das Semikolon), z.Bsp. für Assembler,
  5. ; an den Anfang des zu filternden Textstrings ein.
  6.  
  7. ; --------------------------------------------------------------------
  8. ; Parameter holen
  9. ; --------------------------------------------------------------------
  10.             move    4(sp),d0        ; Funktionsnummer holen
  11.             move.l    6(sp),a0        ; Adresse Textstring holen
  12.             move.l    10(sp),a1        ; Adresse Arbeitspuffer holen
  13.             move    14(sp),d1        ; Länge String holen
  14.             ;move    16(sp),d2        ; Länge Abeitspuffer
  15.             
  16.             tst        d0                ; Filtern?
  17.             beq        filter
  18.  
  19.             cmpi    #1,d0
  20.             bne        case1 
  21.             bra        GetInfo        ; Info
  22. case1:        
  23.             cmpi    #2,d0
  24.             bne        case2 
  25.             bra        ModInit        ; Init
  26. case2:        
  27.             cmpi    #3,d0
  28.             bne        noFunc
  29.             bra        ModExit        ; Exit
  30.  
  31. ModInit:    
  32.             clr.l    d0            ; es gibt nix zu Initialisieren
  33.             rts
  34. ModExit:
  35.             clr.l    d0            ; es gibt auch nix zu De-Initialisieren
  36.             rts
  37.  
  38. GetInfo:    lea.l    info(pc),a0        ; Zeiger auf Infotext zurück.
  39.             move.l    a0,d0
  40.             rts
  41.  
  42. noFunc:        moveq.l    #-32,d0
  43.             rts
  44.  
  45.  
  46.  
  47. ; --------------------------------------------------------------------
  48. ; Filterroutine
  49. ; --------------------------------------------------------------------
  50.  
  51. filter:        tst        d1                    ; Stringlänge testen
  52.             beq        exit0                ; wenn Null, nichts machen
  53.  
  54.             move.b    #';',(a1)+            ; Kommentar einfügen
  55.  
  56. ; restlichen Text kopieren
  57.  
  58.             lsr        #1,d1                ; /2
  59.             bcc.b    go2                    ; glatt teilbar?
  60.             move.b    (a0)+,(a1)+            ; nein, dann erstes Zeichen
  61.     go2:        
  62.             lsr        #1,d1                ; /2
  63.             bcc        go_all                ; glatt teilbar?
  64.             bra        go24                ; nein, dann erst zwei Zeichen
  65.     go4:        
  66.             move.b    (a0)+,(a1)+
  67.             move.b    (a0)+,(a1)+
  68.     go24:        
  69.             move.b    (a0)+,(a1)+
  70.             move.b    (a0)+,(a1)+
  71.     go_all:            
  72.             dbra    d1,go4                ; immer 4 in einem Rutsch
  73.  
  74.  
  75.  
  76.             clr.b    (a1)                ; String Nullterminieren
  77.     exit:    move.l    #1,d0                ; 0 = OK
  78.             rts
  79. exit0:        clr.l    d0
  80.             rts
  81.  
  82.  
  83.  
  84. workbuf:    dc.l    0
  85. info:        dc.b    ' Commentary',0            ; Modulinfo für Popup, max. 24 Zeichen+Nullbyte
  86.             dc.b    'Richard Gordon Faika',0            ; Autorenname, max. 20 Zeichen+Nullbyte
  87.             dc.b    'DAS MODUL FÜGT DEM SELEKTIERTEN TEXT',0    ; max. 40 Zeichen+Nullbyte
  88.             dc.b    'EIN SEMIKOLON ZU TEXTANFANG EIN UND',0    ; max. 40 Zeichen ""
  89.             dc.b    'KOMMENTIERT SOMIT Z.BSP. TEXTE IN EINEM',0    ; max. 40 Zeichen ""
  90.             dc.b    'ASSEMBLERSOURCECODE.',0    ; max. 40 Zeichen ""
  91.