home *** CD-ROM | disk | FTP | other *** search
- ;* ------------------------------------------------------- *
- ;* TXT2COM.ASM *
- ;* Textcompiler 1.0 *
- ;* Verwendeter Assembler: TASM 2.0 *
- ;* (c) 1991 Ralph Seelig & TOOLBOX *
- ;* ------------------------------------------------------- *
- model tiny
- .code
-
- org 0100h
- start:
-
- mov al,cs:[80h]
- cmp al,00h
- jz Fehlermeld
- mov si,0082h
- mov di,si
- mov cx,30d ; übergebenen Parameter als
- s1: ; Dateinamen umwandeln
- lodsb
- cmp al,0dh
- jnz sch1
- mov al,00h
- stosb
- jmp weiter
- sch1:
- stosb
- loop s1
- weiter:
- mov dx,082h
- mov ax,3d00h
- int 21h ; Datei zum Lesen öffnen
- jnb nofehler
- Fehlermeld:
- mov dx,offset fehler
- mov ah,09h
- int 21h
- jmp HcEnde
- nofehler:
- mov bx,ax ; Dateihandle nach BX
- mov dx,offset DatSpeicher
- mov cx,0f000h ; max. 60 kByte Quelltext
- mov ah,3fh ; einlesen
- int 21h
- mov datlang,ax ; Dateilänge retten
- mov di,dx
- add di,ax
- dec di
- mov ah,3eh ; Datei schließen
- int 21h ; Dateihandle ist noch in BX
- mov si,082h
- s2: ; '.' - Position im Dateinamen
- lodsb ; finden
- cmp al,"."
- jz s2ende
- cmp al,00h
- jnz s2
- s2ende:
- dec si
- mov di,si
- mov si,offset datext
- mov cx,5 ; Parameter - Dateinamen in
- rep movsb ; COM - Dateinamen umwandeln
- mov dx,082h
- mov cx,00h
- mov ah,3ch
- int 21h ; Datei anlegen
- mov bx,ax
- mov cx,datlang
- add cx,47h ; Länge der Laufzeitbibliothek
- mov dx,offset writemarke
- mov ah,40h
- int 21h ; COM Datei schreiben
- hcende:
- int 20h
-
- fehler db 13,10,"Datei nicht gefunden!",13,10,"$"
- datext db '.com',0
-
- ;* ------------------------------------------------------- *
- WriteMarke:
- ; Der ab hier stehende Code wird als Laufzeit-
- ; bibliothek vor jeder Textdatei gespeichert.
-
- mov si,0147h
- mov cx,cs:[0138h]
- mov bl,0 ; Zeilenzähler= 0
- wm1:
- lodsb
- mov ah,02h
- mov dl,al
- int 21h
- cmp al,0ah ; LineFeed ?
- jnz wm2
- inc bl ; Zeilenzähler+1
- cmp bl,24
- jnz wm2
- mov ah,09h
- mov dx,013ah ; Offset von MELD
- int 21h
- xor bl,bl
- mov ah,08h
- int 21h
- cmp al,'n'
- jz wmende
- mov dx,0144h ; Offset von CrLf
- mov ah,09h
- int 21h
- wm2:
- loop wm1
- wmende:
- int 20h
-
- datlang dw ? ; Offsetadresse = 0138h
- db 'Taste ...$' ; MELD: Offsetadresse = 013ah
- db 13,10,'$' ; CRLF: Offsetadresse = 0144h
-
- DatSpeicher: ; Offsetadresse = 0147h
-
- ; Hier wird die Textdatei gespeichert
-
- end start
- ;* ------------------------------------------------------- *
- ;* Ende von TXT2COM.ASM *
-
-