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

  1. ;* ------------------------------------------------------- *
  2. ;*                    TXT2COM.ASM                          *
  3. ;*                 Textcompiler 1.0                        *
  4. ;*             Verwendeter Assembler: TASM 2.0             *
  5. ;*             (c) 1991 Ralph Seelig & TOOLBOX             *
  6. ;* ------------------------------------------------------- *
  7. model tiny
  8. .code
  9.  
  10. org 0100h
  11. start:
  12.  
  13.     mov   al,cs:[80h]
  14.     cmp   al,00h
  15.     jz    Fehlermeld
  16.     mov   si,0082h
  17.     mov   di,si
  18.     mov   cx,30d       ; übergebenen Parameter als
  19. s1:                    ; Dateinamen umwandeln
  20.     lodsb
  21.     cmp   al,0dh
  22.     jnz   sch1
  23.     mov   al,00h
  24.     stosb
  25.     jmp   weiter
  26. sch1:
  27.     stosb
  28.     loop  s1
  29. weiter:
  30.     mov   dx,082h
  31.     mov   ax,3d00h
  32.     int   21h          ; Datei zum Lesen öffnen
  33.     jnb   nofehler
  34. Fehlermeld:
  35.     mov   dx,offset fehler
  36.     mov   ah,09h
  37.     int   21h
  38.     jmp   HcEnde
  39. nofehler:
  40.     mov   bx,ax        ; Dateihandle nach BX
  41.     mov   dx,offset DatSpeicher
  42.     mov   cx,0f000h    ; max. 60 kByte Quelltext
  43.     mov   ah,3fh       ; einlesen
  44.     int   21h
  45.     mov   datlang,ax   ; Dateilänge retten
  46.     mov   di,dx
  47.     add   di,ax
  48.     dec   di
  49.     mov   ah,3eh       ; Datei schließen
  50.     int   21h          ; Dateihandle ist noch in BX
  51.     mov   si,082h
  52. s2:                    ; '.' - Position im Dateinamen
  53.     lodsb              ; finden
  54.     cmp   al,"."
  55.     jz    s2ende
  56.     cmp   al,00h
  57.     jnz   s2
  58. s2ende:
  59.     dec   si
  60.     mov   di,si
  61.     mov   si,offset datext
  62.     mov   cx,5         ; Parameter - Dateinamen in
  63.     rep   movsb        ; COM - Dateinamen umwandeln
  64.     mov   dx,082h
  65.     mov   cx,00h
  66.     mov   ah,3ch
  67.     int   21h          ; Datei anlegen
  68.     mov   bx,ax
  69.     mov   cx,datlang
  70.     add   cx,47h       ; Länge der Laufzeitbibliothek
  71.     mov   dx,offset writemarke
  72.     mov   ah,40h
  73.     int   21h          ; COM Datei schreiben
  74. hcende:
  75.     int 20h
  76.  
  77.   fehler    db 13,10,"Datei nicht gefunden!",13,10,"$"
  78.   datext    db '.com',0
  79.  
  80. ;* ------------------------------------------------------- *
  81. WriteMarke:
  82.   ; Der ab hier stehende Code wird als Laufzeit-
  83.   ; bibliothek vor jeder Textdatei gespeichert.
  84.  
  85.     mov   si,0147h
  86.     mov   cx,cs:[0138h]
  87.     mov   bl,0          ; Zeilenzähler= 0
  88. wm1:
  89.     lodsb
  90.     mov   ah,02h
  91.     mov   dl,al
  92.     int   21h
  93.     cmp   al,0ah        ; LineFeed ?
  94.     jnz   wm2
  95.     inc   bl            ; Zeilenzähler+1
  96.     cmp   bl,24
  97.     jnz   wm2
  98.     mov   ah,09h
  99.     mov   dx,013ah      ; Offset von MELD
  100.     int   21h
  101.     xor   bl,bl
  102.     mov   ah,08h
  103.     int   21h
  104.     cmp   al,'n'
  105.     jz    wmende
  106.     mov   dx,0144h      ; Offset von CrLf
  107.     mov   ah,09h
  108.     int   21h
  109. wm2:
  110.     loop  wm1
  111. wmende:
  112.     int   20h
  113.  
  114.   datlang  dw ?      ;       Offsetadresse = 0138h
  115.     db 'Taste ...$'  ; MELD: Offsetadresse = 013ah
  116.     db 13,10,'$'     ; CRLF: Offsetadresse = 0144h
  117.  
  118. DatSpeicher:         ; Offsetadresse = 0147h
  119.  
  120. ; Hier wird die Textdatei gespeichert
  121.  
  122. end start
  123. ;* ------------------------------------------------------- *
  124. ;*                 Ende von TXT2COM.ASM                    *
  125.  
  126.