Enterprise Forever

:HUN => Egyéb témák => Topic started by: Zozosoft on 2017.January.06. 13:21:21

Title: epdoc2txt
Post by: Zozosoft on 2017.January.06. 13:21:21
Segédprogramokról jut eszembe:
Van a Hsoft féle EPDOC (forrással együtt itt. (https://enterpriseforever.com/downloads/?dir=Hsoft_programjai_es_forraskodjai))
Ez képest HEASS és HWP fájlokat megnyitni. De nincs benne "Save As", csak CTRL+C aztán CTRL+V szövegszerkesztőbe módszerrel lehet szövegfájlba konvertálni.
Lehetne esetleg ehelyett egy okosabb segédprogramot csinálni az ep128emu csomagba?
-lehessen szövegfájlba egyből menteni
-ASMON, FENAS, GEN, HEASS, HWP, és WP fájlokat is tudjon betölteni
-választható karakterkonverzió UK, BRD, HUN, HFONT, stb -> unicode
(-esetleg BASIC program betöltése? Lgb webes programlistázója esetleg segíthet ebben)
(-szintén esetleg: EP-s képfájlok betöltése, és PNG-be mentési lehetőség? Bár ez lehet, hogy inkább az imgconv GUI-jába lenne egyszerű berakni.)
Title: Re:epdoc2txt
Post by: IstvanV on 2017.January.06. 13:39:24
-ASMON, FENAS, GEN, HEASS, HWP, és WP fájlokat is tudjon betölteni
-választható karakterkonverzió UK, BRD, HUN, HFONT, stb -> unicode
(-esetleg BASIC program betöltése? Lgb webes programlistázója esetleg segíthet ebben)

Ezekről a formátumokról és karakterkészletekről található valahol részletes dokumentáció?
Title: Re:epdoc2txt
Post by: Zozosoft on 2017.January.06. 14:07:09
Itt láthatóak a karakterkészletek. (http://ep128.hu/Ep_Util/Brd.htm)
Lgb összeszedte az UNICODE kódokat is. (http://epbas.lgb.hu/result-chset.html)
A 127-es karakterre nem volt akkoriban tipp, azóta az EXOS forrásból biztosan tudni, hogy ez a Rubout azaz Delete character, ami ez lehetne: "⌫   U+232B   Delete / Backspace"
A spanyol karakterekről kéne még Gflorez-t megkérdezni.
Title: Re:epdoc2txt
Post by: lgb on 2017.January.06. 14:53:01
Ezekről a formátumokról és karakterkészletekről található valahol részletes dokumentáció?

Szetszorva van info sok helyen, meg a forumbol, meg sajat kiserletezesekbol :-P http://epbas.lgb.hu/
Vegulis, ha letoltod, talan lathato belole egy-ket dolog, bar python-ban van. Amugy van sok hibaja a cuccnak, egyaltalan nem biztos, hogy jol mukodik :) Pl HEASS dolgoknal 1-2 file-nal eleg fura dolgokat csinalt ha jol remlik ...
Title: Re:epdoc2txt
Post by: Zozosoft on 2017.January.06. 15:07:22
WP:
Code: [Select]
;   The text itself is represented as a series of lines each of which has the
; format:
; left-margin-count  (1 byte)  Top bit always set
; Line-flags         (1 byte)  Top bit always set
; Start-of-line   (1 byte)  SOL
; ASCII characters   (0 or more bytes) Always >= 20h
; end-of-line-char   (1 byte) may be - HARD-CR
;     SOFT-CR
;     end of text
;
;   The left margin count is the column number at which the first character of
; the line appears on the screen, with the top bit set to avoid confusion with
; control characters (particularly EOB).  The line flags contain certain
; information about the line, such as whether it is in a marked paragraph and
; whether it was the cursor line which a NO_PROMPT read was done on.  The top
; bit is always set to avoid confusion with control characters.
;   START-OF-LINE (SOL) is a special byte value used to indicate the start of
; a line since the left-margin-count could appear just like a valid ASCII
; character.  The end-of-line-char is a special byte value which is either a
; hard or soft CR in which case another valid line follows on in the buffer,
; or an end-of-text (EOT) character in which case this line is the last in the
; 'file'.

GAP equ 0
EOB equ 1 ;End (or start) of buffer
EOT equ 2 ;End of text
SOL equ 3 ;Start of line
HARD_CR equ 4 ;Hard carriage return
SOFT_CR equ 5 ;Soft carriage return

var $$EDIT,  08h ;Editor document file

edit_header: db 0,$$EDIT##,0,0,0,0,0,0 ;16 byte header for editor file
db 0,0,       0,0,0,0,0,0

Line-flags-ból esetleg az alsó két bit lehet érdekes, ez a kódja annak, hogy melyik színpár van használva. (alap WP színek: 0: fekete/zöld, 1:fekete/piros, 2: fehér/kék, 3: lila/világoskék, TEXT 40-ben csak az első kettő használható)
Title: Re:epdoc2txt
Post by: Zozosoft on 2017.January.06. 15:24:19
HEA és HWP az EPDOC forrásából:
Code: [Select]
   if s = '.HEA' then begin
    BlockRead(F, Buf, 17, NumRead);
    if (NumRead = 17) and (Buf[1] = #$80) then begin
      HibaStr := 'Hibás fájltartalom';
      BlockRead(F, Buf, ord(Buf[16]) + 7, NumRead);
      repeat;
        k := 0;
        s2 := '';
        BlockRead(F, Buf, 2, NumRead);
        j := ord(Buf[0]) + ord(Buf[1]) * 256;
        if j > 0 then begin
          BlockRead(F, Buf, j - 2, NumRead);
          for i := 2 to j - 1 do begin
            c := Buf[i];
            if k = 0 then begin
              s := '';
              k := ord(c) and 127;
            end else begin
              case c of
                #$21..#$9F: s := s + KodTabla[c];
                else s := s + copy(ures, 1, (ord(c) - $9f) mod 256);
              end;
              dec(k);
            end;
            if k = 0 then
              s2 := s2 + s + #13+ #10;
          end;
        end;
        RichEdit1.Text := RichEdit1.Text + s2;
      until j = 0;
      HibaStr := '';
    end;
   end else if s = '.HWP' then begin
    BlockRead(F, Buf, 12 + 34, NumRead);
    s := '';
    for i := 0 to 9 do
      s := s + Buf[i];
    if (NumRead = 12 + 34) and (s = 'HWP.DOC 1.') then begin
      HibaStr := 'Hibás fájltartalom';
      for l := 1 to ord(buf[11]) do begin
{
HOSSZ           0=SEGEND  vagy  TEXTEND  2=ÜRES_SOR
FLAG            0-15=SORKOZ  B7=LAPVEG  B6=LAPVÉGKÉRÉS  B5=VÉGTÍLTÁS  B4=PUHACR
0-11            KARKÉSZLET
12              ALÁHÚZÁS  VÁLTÓ
13              INVERZ  VÁLTÓ
32-159          CHR
160-            PUHA  SZÓKÖZ
}
        BlockRead(F, Buf, 2, NumRead);
        j := ord(Buf[0]) + ord(Buf[1]) * 256;
        BlockRead(F, Buf, j, NumRead);
        k := 0;
        s2 := '';
        for i := 0 to j - 1 do begin
          if k = 0 then
            flag := 0;
          case flag of
            0: begin
              s := '';
              k := ord(Buf[i]);
              inc(flag);
            end;
            1: inc(flag);
            else begin
              c := Buf[i];
              case c of
                #$20..#$9F: s := s + KodTabla[c];
                #$A0..#$FF: s := s + copy(ures, 1, (ord(c) - $a0));
              end;
            end;
          end;
          dec(k);
          if k = 0 then
            s2 := s2 + s + #13+ #10;
        end;
        RichEdit1.Text := RichEdit1.Text + s2;
      end;
      HibaStr := '';
    end;
   end;
Title: Re:epdoc2txt
Post by: Zozosoft on 2017.January.06. 16:09:47
ASMON és FENAS az ugyanaz a formátum:
A fájl 01h-el kezdődik (ASMON Turbo Save, vagy FENAS), vagy 02h-val (ASMON Intelligent Save). Ez utóbbi esetben további 31 bájt átugrandó (fordítási opciók).
A soremelések 0Dh-ként vannak tárolva, a 7Fh-nél nagyobb értékek pedig a tömörített szóközök: 80h=1 space, 81h=2 space, stb.
Title: Re:epdoc2txt
Post by: Zozosoft on 2017.January.06. 22:19:26
Még ASMON variáció (Andrew Richards SAVE.XR bővítőjével készült .ASS fájlok (ASmon Save)):
FF,BF-el kezdödik a fájl, 210h pozíción kezdődik a tömörített szöveg.
Title: Re:epdoc2txt
Post by: Zozosoft on 2017.January.06. 22:28:27
A GEN meg sima szöveg fájl, azzal akkor nem kell foglalkozni.
Title: Re:epdoc2txt
Post by: Zozosoft on 2017.January.07. 00:05:17
És ha még egyet lehetne kívánni :oops: WordStar (http://justsolve.archiveteam.org/wiki/WordStar) fájlok konvertálása. Azokat a bizonyos High Bit-eket kéne törölni, akkor már olvasható lenne a szöveg.
Title: Re:epdoc2txt
Post by: Zozosoft on 2017.January.07. 16:02:58
ASMON és FENAS az ugyanaz a formátum:
A fájl 01h-el kezdődik (ASMON Turbo Save, vagy FENAS), vagy 02h-val (ASMON Intelligent Save). Ez utóbbi esetben további 31 bájt átugrandó (fordítási opciók).
A soremelések 0Dh-ként vannak tárolva, a 7Fh-nél nagyobb értékek pedig a tömörített szóközök: 80h=1 space, 81h=2 space, stb.
Pontosítás :oops:
A 01h-s a FENAS, 02h az ASMON Intelligent Save. ASMON Turbo Save-nál nincs semmi, egyből kezdődik a tömörített adat.

GEN-nél esetleg annyit lehetne, hogy a sor első sorközét TAB-ra cserélni, hogy olvashatóbb legyen.

Itt egy adag példa fájl.
Title: Re:epdoc2txt
Post by: Zozosoft on 2017.January.07. 22:01:03
Eddig nem találtam hibát!
Title: Re:epdoc2txt
Post by: Zozosoft on 2017.January.08. 18:22:56
Kiegészítve az ASMON formátum különböző változataival és a .WP-vel:
Én vagyok ügyetlen, vagy tényleg nem működik a karakter konvertálás WP-re? :oops:
Title: Re:epdoc2txt
Post by: IstvanV on 2017.January.08. 18:26:28
Én vagyok ügyetlen, vagy tényleg nem működik a karakter konvertálás WP-re?

Az könnyen előfordulhat, hogy hibásan működik a WP konverzió, csak a save.wp-vel, illetve annak több színűre módosított változatával teszteltem, azokkal működött. :oops: Szerk.: már látom a hibát, nem konvertálja a karaktereket UTF-8-ra.
Title: Re:epdoc2txt
Post by: Zozosoft on 2017.January.08. 18:31:23
Az könnyen előfordulhat, hogy hibásan működik a WP konverzió, csak a save.wp-vel, illetve annak több színűre módosított változatával teszteltem, azokkal működött. :oops:
Működni, működik, csak a -hun és társai hatástalannak tűnnek :oops: (A példában a "screenshotok"-ban vannak ékezetes karakterek. Ez amúgy a Zozotools Enterpress cikk eredeti fájlja.)
Title: Re:epdoc2txt
Post by: Zozosoft on 2017.January.08. 18:36:34
Erre meg azt mondja, hogy invalid character van benne :oops:
Title: Re:epdoc2txt
Post by: Zozosoft on 2017.January.08. 18:45:10
Ez színes is meg ékezetes is :-)

Hamár úgyis html, lehetne a fekete/zöld, fekete/piros is megtartva?

Ill. lehetne mondjuk -txt -html opció (vagy a kimenetei kiterjesztésből felismerni), txt ha csak szöveg kell az extrák nélkül, html meg a többi esetben is csinálna szép fekete/zöld oldalt? (esetleg -bw a fekete fehér módhoz)

WordStar esetén is megpróbálod majd a lényegesebb opciókat megtartani html-ben? Az adott példából kb ennek (http://enterprise.iko.hu/technical/ET15-3_EXOS_1_Serial-Network_Driver.pdf) kell kijönni.
Title: Re:epdoc2txt
Post by: IstvanV on 2017.January.08. 18:56:36
Erre meg azt mondja, hogy invalid character van benne :oops:

Javítva, a korábbi (hibás) csomagot cseréltem.
Title: Re:epdoc2txt
Post by: Zozosoft on 2017.January.08. 20:14:37
Joker karakteres tömeges fájl használatot meg lehetne csinálni?
Pl: epdoc2txt *.HEA *.TXT
Ez a többi segéd programba is jól jönne (imgconv, epcompress, stb) :oops:
Title: Re:epdoc2txt
Post by: IstvanV on 2017.January.08. 20:27:03
Ezt egy egyszerű .bat file meg tudja oldani Windowson is, például:

Code: [Select]
@echo off

del *.html
for %%i in (*.wp) do ..\epdoc2txt.exe %%i %%i.html
ren *.wp.html *.html
Title: Re:epdoc2txt
Post by: Zozosoft on 2017.January.08. 21:12:53
Ezt egy egyszerű .bat file meg tudja oldani Windowson is, például:
Na ez most nekem teljesen új volt :oops:
Title: Re:epdoc2txt
Post by: IstvanV on 2017.January.09. 10:16:57
A .WS dokumentumok szintén EP karakterkészleteket használnak? A példában nincsenek ékezetes karakterek, így ezt nem lehet tesztelni. Elvileg a 80h feletti kódokat 1Bh és 1Ch karakterek között tárolja a formátum, de nem tudom biztosan, hogy ez az EP-s változatoknál is így van-e.
Title: Re:epdoc2txt
Post by: Zozosoft on 2017.January.09. 10:45:35
A .WS dokumentumok szintén EP karakterkészleteket használnak? A példában nincsenek ékezetes karakterek, így ezt nem lehet tesztelni. Elvileg a 80h feletti kódokat 1Bh és 1Ch karakterek között tárolja a formátum, de nem tudom biztosan, hogy ez az EP-s változatoknál is így van-e.
Ezek a doksik leginkább az angol és német cégtől vannak (amibe belenéztem az mind angolnak tűnik). A BRD (ill. az abból kreált HUN) az 128 alatti kódokat használ az ékezetekhez, az ISO 646-DE és ISO 646-HU szabvány szerint.
Most kipróbáltam, hogy lehet-e HFONT-tal írni benne (128-nál nagyobb kódok), de nem, mindenféle control kriksz-kraksz lett belőle.
Title: Re:epdoc2txt
Post by: Zozosoft on 2017.January.09. 14:07:03
- WordStar formátum támogatása (csak az ET15-4.DOC file-t teszteltem)
Alapvetően jól működik, pár apróság van:
-CTRL+Z (1Ah) = "End of file" karakternél nem áll le az elsőnél, hanem mindegyiket CR/LF-re cseréli. (Úgy tűnik a WordStar 128 bájtosra kerekíti a fájl méretet (gondolom CP/M örökség), a ki nem használt részt végig 1Ah-kal szórja tele.
-8Dh = Soft Carriage Return egyes fájloknál Omega karakterré alakul :oops: (csatolva egy példa)
-a fej és láb lécekkel (.he és .fo vezérlő opciók) lehetne kezdeni valamit? Ha nem is kerülnek a helyükre minden oldalra, csak úgy simán konvertálni szövegnek az elején.
Title: Re:epdoc2txt
Post by: IstvanV on 2017.January.09. 14:35:02
-CTRL+Z (1Ah) = "End of file" karakternél nem áll le az elsőnél, hanem mindegyiket CR/LF-re cseréli. (Úgy tűnik a WordStar 128 bájtosra kerekíti a fájl méretet (gondolom CP/M örökség), a ki nem használt részt végig 1Ah-kal szórja tele.

Javítva, az ilyeneket eredetileg is figyelmen kívül kellett volna hagynia, de hibás volt.

Quote
-8Dh = Soft Carriage Return egyes fájloknál Omega karakterré alakul :oops: (csatolva egy példa)

Itt valójában nem ismerte fel a file típusát, mivel a WordStar formátumnak nincs fejléce, az első karakternek pontnak kellett lennie ahhoz, hogy a program WordStar-t tételezzen fel egyszerű ASCII szöveg helyett. Az alábbi módosított verzió a file név kiterjesztését figyeli (.DOC vagy .WS):

[attachurl=1]
Title: Re:epdoc2txt
Post by: IstvanV on 2017.January.09. 19:16:22
-a fej és láb lécekkel (.he és .fo vezérlő opciók) lehetne kezdeni valamit? Ha nem is kerülnek a helyükre minden oldalra, csak úgy simán konvertálni szövegnek az elején.

Az egyszerű konvertálást beépítettem (a fenti csomag frissítve), a ".he ", ".fo ", ".h1 ", ".f1 ", stb. kezdetű soroknál csak az első három karaktert nem írja ki.
Title: Re:epdoc2txt
Post by: Zozosoft on 2017.January.09. 21:00:34
Az egyszerű konvertálást beépítettem (a fenti csomag frissítve), a ".he ", ".fo ", ".h1 ", ".f1 ", stb. kezdetű soroknál csak az első három karaktert nem írja ki.
Némelyiknél nem működik :oops:
Ha jól tippelem az lehet zavaró, ha nagy betű van a kódokban, ill. ha nincs szóköz a kód után.
Title: Re:epdoc2txt
Post by: IstvanV on 2017.January.09. 21:10:36
Ha jól tippelem az lehet zavaró, ha nagy betű van a kódokban, ill. ha nincs szóköz a kód után.

Szóköz nélkül valóban nem fogadja el, de például a ".HE " kódnak elvileg működnie kellene.
Title: Re:epdoc2txt
Post by: Zozosoft on 2017.January.09. 21:15:46
például a ".HE " kódnak elvileg működnie kellene.
De itt .He meg .Fo van :-)
Title: Re:epdoc2txt
Post by: IstvanV on 2017.January.09. 21:35:37
De itt .He meg .Fo van :-)

Azt is el kellene fogadnia, de nem szóköz van utána.
Title: Re: epdoc2txt
Post by: IstvanV on 2017.January.10. 20:54:44
Ezzel a verzióval már működik a .he és .fo konvertálása a fenti "problémás" dokumentumoknál:

[attachurl=1]
Title: Re: epdoc2txt
Post by: Zozosoft on 2017.January.10. 22:42:13
:smt038 :smt038 :smt038
Title: Re: epdoc2txt
Post by: Zozosoft on 2017.January.11. 23:01:29
Még egy kis apróság, ha lehetséges:
Asmon Inteligent Save (02h kezdetű): 04h poziciótól az Object filename, hosszbájttal, (0 hossz ha nincs), 18h-n ha a bit 6=1, akkor az alsó bájt az EXOS module type.
.ASS (FF,BF kezdetű): 13h poziciótól az Object filename, hosszbájttal, (0 hossz ha nincs). Modul típus itt nincs.

Ezeket - ha jelen vannak - be lehetne tenni a konvertált szöveg elejére kommentként? pl:
   ;Object filename: ABC.COM
   ;EXOS module type: 5

(FENAS, HEASS esetén eleve a forrásban vannak megadva ezek.)