
; Commentary.fm  (c)1999 Richard Gordon Faika

; Fgt ein Kommentarzeichen (das Semikolon), z.Bsp. fr Assembler,
; an den Anfang des zu filternden Textstrings ein.

; --------------------------------------------------------------------
; Parameter holen
; --------------------------------------------------------------------
			move	4(sp),d0		; Funktionsnummer holen
			move.l	6(sp),a0		; Adresse Textstring holen
			move.l	10(sp),a1		; Adresse Arbeitspuffer holen
			move	14(sp),d1		; Lnge String holen
			;move	16(sp),d2		; Lnge Abeitspuffer
			
			tst		d0				; Filtern?
			beq		filter

			cmpi	#1,d0
			bne		case1 
			bra		GetInfo		; Info
case1:		
			cmpi	#2,d0
			bne		case2 
			bra		ModInit		; Init
case2:		
			cmpi	#3,d0
			bne		noFunc
			bra		ModExit		; Exit

ModInit:	
			clr.l	d0			; es gibt nix zu Initialisieren
			rts
ModExit:
			clr.l	d0			; es gibt auch nix zu De-Initialisieren
			rts

GetInfo:	lea.l	info(pc),a0		; Zeiger auf Infotext zurck.
			move.l	a0,d0
			rts

noFunc:		moveq.l	#-32,d0
			rts



; --------------------------------------------------------------------
; Filterroutine
; --------------------------------------------------------------------

filter:		tst		d1					; Stringlnge testen
			beq		exit0				; wenn Null, nichts machen

			move.b	#';',(a1)+			; Kommentar einfgen

; restlichen Text kopieren

			lsr		#1,d1				; /2
			bcc.b	go2					; glatt teilbar?
			move.b	(a0)+,(a1)+			; nein, dann erstes Zeichen
	go2:		
			lsr		#1,d1				; /2
			bcc		go_all				; glatt teilbar?
			bra		go24				; nein, dann erst zwei Zeichen
	go4:		
			move.b	(a0)+,(a1)+
			move.b	(a0)+,(a1)+
	go24:		
			move.b	(a0)+,(a1)+
			move.b	(a0)+,(a1)+
	go_all:			
			dbra	d1,go4				; immer 4 in einem Rutsch



			clr.b	(a1)				; String Nullterminieren
	exit:	move.l	#1,d0				; 0 = OK
			rts
exit0:		clr.l	d0
			rts



workbuf:	dc.l	0
info:		dc.b	' Commentary',0			; Modulinfo fr Popup, max. 24 Zeichen+Nullbyte
			dc.b	'Richard Gordon Faika',0			; Autorenname, max. 20 Zeichen+Nullbyte
			dc.b	'DAS MODUL FGT DEM SELEKTIERTEN TEXT',0	; max. 40 Zeichen+Nullbyte
			dc.b	'EIN SEMIKOLON ZU TEXTANFANG EIN UND',0	; max. 40 Zeichen ""
			dc.b	'KOMMENTIERT SOMIT Z.BSP. TEXTE IN EINEM',0	; max. 40 Zeichen ""
			dc.b	'ASSEMBLERSOURCECODE.',0	; max. 40 Zeichen ""
			