home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turbo Toolbox
/
Turbo_Toolbox.iso
/
1991
/
06
/
tricks
/
txt2com.asm
< prev
next >
Wrap
Assembly Source File
|
1991-02-25
|
3KB
|
126 lines
;* ------------------------------------------------------- *
;* 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 *