Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.

Kullanıcı adınızı, parolanızı ve aktif kalma süresini giriniz

  Gelişmiş Arama
insanın içinde varsa, commodore.gen.tr açığa çıkarır bunu.. bir nevi retro olaylarının dolunayıyız.(Arda)
commodore.gen.trCommodoreCommodore YazılımProgram döküm ekindeki ML programları Abbyy FR'dan geçirip .prg yapan var mı?
Sayfa: [1] 2   Aşağı git
Yazdır
Gönderen Konu: Program döküm ekindeki ML programları Abbyy FR'dan geçirip .prg yapan var mı?  (Okunma Sayısı 13158 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
ilkerficicilar
Uzman
*****
Mesaj Sayısı: 1.122


Üyelik Bilgileri WWW
« : Ekim 16, 2014, 23:13:25 ÖS »

Yıllar önce kendi taradığım döküm eklerindeki bazı kodları Linux'ta düzgün OCR'layabilmiştim. Şimdi ise iyi bir sonuç alamıyorum, gerçi retrodergi'deki sayfa görüntülerini kullandığımdan olabilir.

Windows kullanan ve Abbyy Finereader'la program döküm ekindekileri sayısallaştırmayı denemiş olan varsa başarı oranını bildirebilir mi?

Bendekiler şu şekilde:

18C1  : 68 60 A9 FF 00 E4 C8 8C  34
1BC9 : 6A C1 98 48 A9 00 8D 7E  11
:8D_ : C1 85 02 A0 69 C1 0A AA  AD
_8_9 : 68 49 29 FE 0A 26 02 0A  7D
_8E_  : 26 02 70 C9 C0 8D 6B C1  4_
18E3 : BD CA C0 65 02 69 E0 8D  F2
18F1  : 6C C1 68 29 01 BD 68 C1  1F
_8F9 : 20 09 C2 A4 __3 C0 03 D0  80
1901 : 03 20 71 C2 26 20 A2 C6  65
1303 : 20 02 C6 A9 0D 48 4C 33  24
1911 : C8 EA A9 A4 A0 CB 20 1E  _A
1313 : A8 A9 00 _D A6 02 8D 20  6C

(Program Döküm Eki 12'nin 26. sayfasının alt kısmından örnek)

Linux'ta,

gocr -m 130 -p /tmp/db/ -C 0-9A-F\: /tmp/26.pnm

ile elde ettiğim basit ve gayet hatalı bir sonuç bu. Tanımadığı karakterleri tek tek uğraşıp tanıtınca sonuç güzelleşiyor.

Nihai amaç ise bu gibi ML dökümleri text olarak elde ettikten sonra kısa bir programla normal C64 .prg dosyasına dönüştürmek. Satır sonlarındaki doğrulama byte'ı hatalı satırları saptamaya ve gidermeye yardımcı olabilir gibi.

Abbyy Finereader veya daha iyi bir OCR programında başarılı bir sonuç elde etmiş veya edebilecek olan var mı acaba?

Ya da daha iyisi, bu Commodore Dergisi döküm eklerindeki programlar bir yerlerde veya birilerinde bulunuyor mu?
Logged

http://cbm.ficicilar.name.tr/ - Commodore Hacking
witchdoktor
Uzman
*****
Mesaj Sayısı: 6.238



Üyelik Bilgileri
« Yanıtla #1 : Ekim 16, 2014, 23:23:00 ÖS »

Aslında benim aklıma da gelmiyor değil bu fikir, ama zamansızlıktan öteliyorum. Satır sonu checksum'umun nasıl hesaplandığı bilinirse ufak tefek hatalar kolay çözümlenebilir. Yalnız BASIC kodlarındaki CBM kontrol karakterlerinin karşlılık gelen karaktere dönüştürecek bir program da yazmak gerekecek. Makine dili rutinler doğrudan belleğe aktarılabilir ama BASIC için farklı bir metod (doğrudan parse edip belleğe yazma, klavye tamponuna karakterleri sırasıyla gönderme vb) kullanmak gerekecek. Finereader silik olmayan sayfalarda hata çıkarmayabilir.
Logged
ilkerficicilar
Uzman
*****
Mesaj Sayısı: 1.122


Üyelik Bilgileri WWW
« Yanıtla #2 : Ekim 16, 2014, 23:40:25 ÖS »

Şimdi bir de BASIC prg denedim. En önemli nokta kaliteli ve kayıpsız bir tarama gibi görünüyor.

GIMP ile ne kadar düzeltsem de mevcut örnek (Retrodergi'deki Prg. Döküm no 49, s.20 [1468]) işe yaramadı.

Logged

http://cbm.ficicilar.name.tr/ - Commodore Hacking
g 600
Deneyimli
*****
Mesaj Sayısı: 619



Üyelik Bilgileri
« Yanıtla #3 : Ekim 17, 2014, 10:11:55 ÖÖ »

basıc için, yeni sürüm VICE emulatörde kopyala yapıştır özelliği var bundan yararlanılabilir, emulatörde dosya oluşturduktan sonra da wav programı yardımıyla ses dosyası çalarak, gerçek donanıma aktarılabilir 
Logged
Simon (Özay Turay)
Yönetici
*****
Mesaj Sayısı: 7.764


Commodore Forever


Üyelik Bilgileri WWW
« Yanıtla #4 : Ekim 17, 2014, 11:24:33 ÖÖ »

http://www.retrodergi.com/originals/?dir=Commodore%20300dpi%20PDE adresinden orjinal taramaları kullanırsanız daha iyi sonuçlar elde edilebilir.

İpucu: CBR dosyaları aslında RAR dosyalarıdır, uzantısını .rar olarak değiştirirseniz sayfalara resim dosyası olarak ulaşabilirsiniz.
« Son Düzenleme: Ekim 17, 2014, 11:26:52 ÖÖ Gönderen: Simon (Özay Turay) » Logged

https://retrodergi.com - https://e-turay.com - https://karizmawow.e-turay.com

Retro: Commodore 64, Amiga 500, Amiga 1200
Retromsu: Wii, XBox360, XBox, PS3 Slim, PS2 FAT, PS1, PS Vita, Nintendo 3DS, Nintendo 2DS
wizofwor
Genel Yönetici
*****
Mesaj Sayısı: 4.798


Gosub ile gidilen yerden goto ile dönen adam


Üyelik Bilgileri WWW
« Yanıtla #5 : Ekim 17, 2014, 15:43:07 ÖS »

VICE'la beraber dağıtılan txt formatındaki BASIC kodunu tokenize edip, PRG haline getiren, PETCAT adından çok güzel bir araç var. Yalnız kodun içindeki özel karakterleri bulup PETCAT taglarıyla değiştirmek gerekiyor. Yani biraz regex kasmak gerekli.

Hatalı okuma konusunda da OCR'dan sonra custom bir sözlük dosyasıyla spellcheck yaparak hatırı sayılır miktarda hata ayıklanabilir. Ancak maalesef bu programların çoğu doğuştan hatalı. O zamanlar elle yapılan dizgide, büyük ihtimalle dizgiyi hazırlayan memur yazılımcı olmadığı için, pek çok hata var. Yani eninde sonunda elle müdahele gerekli.
Logged

emarti
Uzman
*****
Mesaj Sayısı: 2.626


Only Amiga Makes It Possible █


Üyelik Bilgileri WWW
« Yanıtla #6 : Ekim 17, 2014, 16:06:24 ÖS »

OCR ile uğraşmak zaman kaybı muhakkak yanlış okuma yapabilir. Bu da kodun çalışmasını engeller.

Birini bul okusun sen de klavye başında inan daha kolay ve kesin çözüm. Bunun zevki bir başkadır
Logged

https://github.com/emartisoft My GitHUB | http://csdb.dk/scener/?id=26786 My CSDB | https://c64kernal.com Genesis

READY.
SYS(64767): EMARTI
ilkerficicilar
Uzman
*****
Mesaj Sayısı: 1.122


Üyelik Bilgileri WWW
« Yanıtla #7 : Ekim 17, 2014, 16:30:57 ÖS »

CBR'leri wget ile topluca çektim. Akşam bir bakayım... Teşekkürler.

Bendeki OCR hataları çok. O yüzden aslında en iyi OCR programı hangisidir merak ediyorum... Okuyacak birileri fikri ise gayet güzel

Okuyup yazacak birilerini bulamazsak ve düzgün bir şekilde OCR'dan geçirebilirsek, kalan metni tokenization için ise şurada kullandığım taktikle Basic programı haline getirmeyi planlıyorum:

http://cbm.ficicilar.name.tr/uncorrected/basicv2/makehex.bas.txt
http://cbm.ficicilar.name.tr/uncorrected/basicv2/makehex.bin
http://cbm.ficicilar.name.tr/uncorrected/basicv2/makehex.txt

Yani Taranmış ve düz metin biçimine getirilmiş Basic programı kısa bir programla, CBM'e özel karakterler dahil PETSCII SEQ dosya haline getirip, bu SEQ dosyayı bir C64 veya emülatörde yukarıdakine benzer bir programla açıp, ekrana yazıp, klavye tamponunu 13'lerle doldururak...

Bu yöntemi eskiden BBS veya Usenet'teki bir program dökümünü, terminal programının loglarına alıp, bu loglardan tekrar programı oluşturmak için kullanırdık.

Örnek:

10 PRINT"NABER"
20 END

diye bir programımız olsun. Deneme amaçlı bunu PETSCII SEQ olarak diske kaydedelim:

OPEN8,8,8,"DENEME,W,S"
CMD8
LIST
CLOSE8
sdsddfsdfewq <return>
(hata verdirterek normal moda geçtik)

Şimdi diskte bu program yazı olarak yer alıyor.

İşte bu tür metin biçimli programları tokenize etmek için şunu yazıyoruz:

new
63500 printchr$(147);"run63500"
63550 poke152,1
63600 get#8,a$:printa$;
63650 ifa$=chr$(13)then63800
63700 ifstthenclose8:end
63750 goto63600
63800 poke631,19:poke632,17:poke633,13
63850 poke634,19:poke635,13:poke198,5

Sonra o SEQ dosyayı açıyoruz:

open8,8,8,"deneme"

ve az önceki kodu çalıştırıyoruz:

run

Sonuçta elimizde şu oluyor:

10 print"naber"
20 end
63500 printchr$(147);"run63500"
63550 poke152,1
63600 get#8,a$:printa$;
63650 ifa$=chr$(13)then63800
63700 ifstthenclose8:end
63750 goto63600
63800 poke631,19:poke632,17:poke633,13
63850 poke634,19:poke635,13:poke198,5

Geriye bir tek fazlalıkları silmek kalıyor.

Logged

http://cbm.ficicilar.name.tr/ - Commodore Hacking
ilkerficicilar
Uzman
*****
Mesaj Sayısı: 1.122


Üyelik Bilgileri WWW
« Yanıtla #8 : Ekim 17, 2014, 20:10:09 ÖS »

Yüzdük yüzdük kuyruğuna geldik...

Acaba MDE'de Checksum'un nasıl hesaplandığını bilen var mı?

Şimdi AbbyyFinereader'da kullanıcı pattern'i tanımı sayesinde düzgün bir OCR sonucu elde edebildim:

0801:1E08C2079E28323009
0809:3830292053504545FF
0811:434820424153494323
0819:20322E370000004C5D
0821:C009A67AA004840FB9
0829:BD00021007C9FFF00A
0831:3FE8D0F4C920F03889
0839:8508C922F056240FE9
0841:702EC93FD004A9992A
0849:D026C9309004C93C6D
0851:901E3471A04C840BD4
0859:A0FF867ACAC8E8BDFC
0861:000238F9600AF0F5B6
0869:C980D02F050BA471AA
0871:C8E899FB01C900F0D3
0879:3838E93AF004C94978
0881:D002850F38E955D05F
0889:9F8508BD0002F0E03A
0891:C508F0DCC899FB017D
0899:E8D0F0A67AE60BC897
08A1:B95F0A10FAB9600AA1
08A9:D0B5F00FBD00021076
08B1:BD99FD01C67BA9FFC9
08B9:857A60A000840BB96B
08C1:600AD002C8E8BD0065

(Örnekler program döküm eki, sayı 15, syf 402 ve 406'dan [COMMODORE_15-EK-009.jpg ve COMMODORE_15-EK-013.jpg])

Bir web uygulaması olsun, ve tarayıp OCR'dan geçirdiklerimizi upload edelim, bize program olarak döndürsün diye düşündüğüm için php kullandım. Deneme örneği şu şekilde:

<?php

$hex="0123456789ABCDEF";
$h2d=array();
for($i=0;$i<16;$i++) $h2d[$hex[$i]]=$i;

$dsw=fopen("sonuc.prg","w");
$syf=file_get_contents("ornek0.txt");
$syf=str_replace("\r","",$syf);
$syf=str_replace("\t"," ",$syf);
//echo $syf;
$veri=explode("\n",$syf);
$adet=count($veri);
for($i=0;$i<$adet;$i++) {
if ( strpos($veri[$i],":") !== false ) {
$str=trim($veri[$i]);
$str=preg_replace("/[^0-9A-F\:]/","",$str);
echo $str."\n";
$top=0;
//$top=$h2d[$str[2]]*16+$h2d[$str[3]];
for($j=5;$j<21;$j=$j+2) {
//echo $str[$j].$str[$j+1]."\n";
$dec=$h2d[$str[$j]]*16+$h2d[$str[$j+1]];
fputs($dsw,chr($dec));
//$top=$top+$dec;
//if ( $top > 255 ) $top=$top-256;
$top = $top ^ $dec;
$top = $top ^ 255;
//echo $dec." ";
} // for j
//echo " - ".$top."\n";
} // if dolu
} // for i
fclose($dsw);
?>

Bunu çalıştırınca OCR'lı metni .prg dosya olarak yazıyor.


Gelgelelim checksum'larda takıldım.

Örneğin,

1761 : 20 20 20 20 20 20 20 20 61

şeklindeki bir satırdan anlaşıldığına göre, sondaki checksum EOR veya toplam ile elde ediliyor gibi görünüyor (20'lar birbirini götürüyor ve 16 bitlik bellek adresinin düşük kısmı da hesaba dahil ediliyor gibi).

Fakat,

16E1 : 4B 2E 20 20 20 20 20 20 13

gibi bir satırda "13" olan kontrol toplamını deneme yanılmayla elde edemedim. MDE (Makine Dili Editörü) programını bulup deşmeye de üşendim doğrusu... Kontrol toplamı hakkında fikri/bilgisi olan?

Bu ikinci satırda mesela kolaylık olsun diye hex-dec E1=225, 4B=75, 2E= 46, 20=32, 13=19 dersek. Toplamları 538 ediyor. 256 modülüsü ise haliyle 26. $13=19'u tutturamadık.

EOR'lasam:
E1 = 11100001
4B = 01001011
2E = 00101110
20 = 00100000
20 = 00100000
20 = 00100000
20 = 00100000
20 = 00100000
20 = 00100000
-------------
84 = 10000100 = 132

19'dan ($13 = 00010011) gene çok uzak, alakasız.

Bir yerlerde NOT işlevi falan mı var acaba? Ya da dalgınlıkla gözden açan ne ola ki!

Şu kontrol toplamının nasıl elde edildiğini bulursak Commodore Program Döküm ekindeki çoğu makine dili programı hızlıca dijital ortama aktarıp arşivleyebiliriz gibi görünüyor.

Logged

http://cbm.ficicilar.name.tr/ - Commodore Hacking
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #9 : Ekim 18, 2014, 03:06:10 ÖÖ »

http://en.wikipedia.org/wiki/MLX_(software)
http://www.atariarchives.org/2bml/appendix_c.php

Bunlara benzer mi acep?
Basic'i feci çorba yazmışlar anlayamadım ben ne yaptığını
Saat de geç oldu zaten.

ps: Kullanılan algoritma muhtemelen aşağıdaki dokümanda orta sütunda bahsedilen algoritma olabilir.

http://www.devili.iki.fi/pub/Commodore/docs/magazines/gazette/AutomaticProofreader/feb86-AutomaticProofreader2B.jpg
« Son Düzenleme: Ekim 18, 2014, 03:33:50 ÖÖ Gönderen: I_R_on » Logged

Every imagination is one's self reflection but not every self reflection is imagination. <I.R.on - 2001>

twitter | blog
blackturk
Uzman
*****
Mesaj Sayısı: 1.285



Üyelik Bilgileri
« Yanıtla #10 : Ekim 18, 2014, 03:47:16 ÖÖ »

Elimden geldiği kadar yardımcı olmaya çalışcam.cheksum algoritma mantığı bir satırda 8 byte veriyi doğru bir şekilde yazıldığını kontrolunu sağlar.
Adım adım açıklayaım.daha sonra algoritmay yazayım.

1.ard arda gelen 8 byte ın ilk byte saklayan adresin low byte ile başlanır.
2.low byte ı  kontrol toplam sonuç low adres içinde saklanır.kontrol toplam
Sonuç high sıfırlanır.
3.y register ını 8 byte counter olarak set edeceğiz.
4.carry temizle
5.ilk byte adresin içeriğini kontrol toplamın low adres içeriği ile topla
6.sonuç carry set mi hayır git numara 8'e
7.kontrol toplam high adresin içerğini bir arttır
8.kontrol toplam low adres içerğini asl ile high bit carry gidiyor.
9.kontrol toplam high adresi içeriğini ise rol ile çeviriyoruz carry low bitte gidiyor.
10.y register 8. Byte ulaştı mı ? Evet ise carry otomatik set olur.ve adım git 12.
11.hayır 8.byte ulaşılmadı.bir sonraki byte için y reg artır ve git numara
Numra 5'e ve tekrarla
12.kontrol toplam low ve high adreslerin içeriğini topla , carry ile birlikte sonucu bellekte sakla
13.son

Bu kadar programı yarın yazarım.
« Son Düzenleme: Ekim 18, 2014, 11:42:53 ÖÖ Gönderen: blackturk » Logged

A1200 | APOLLO 1240 32 MB | CNET PCMCIA | SYSINFO SPEED TEST 30 MIPS
SM1,SEGA MEGA CD,SM2,SMS II,Sega Saturn Mod ve AR 4MB,PSX Mod ve Mpeg ,PSX2 ,SNES ,ATARI 800XL,SPECTRUM 128K +2,YAMAHA CX5M MSX,ATARI 520 STFM,1040 STF,C64,C128,1541 II,1571,RAM 1764 ,A500,A500+,A600,A590,IDE68k,2X1084S,1084P
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #11 : Ekim 18, 2014, 04:19:49 ÖÖ »

@blackturk : bu bizim c64 dergilerindeki mde'ler için olan algortima mı? Compute's gazette'inkinde elemanlar ascii karakter kodlarının değerini karakterin geçtiği sıra ile çarpıp falan oluşturmuşlar.

Bu arada yabancı dergi kitaplarda geçen program dökümlerinin hazır programa çevrilmiş halleri var şurada : http://www.c64music.co.uk/books/
Logged

Every imagination is one's self reflection but not every self reflection is imagination. <I.R.on - 2001>

twitter | blog
wizofwor
Genel Yönetici
*****
Mesaj Sayısı: 4.798


Gosub ile gidilen yerden goto ile dönen adam


Üyelik Bilgileri WWW
« Yanıtla #12 : Ekim 18, 2014, 09:49:08 ÖÖ »

MDE'nin dökümünün ilk sayıda olması lazım.
Logged

blackturk
Uzman
*****
Mesaj Sayısı: 1.285



Üyelik Bilgileri
« Yanıtla #13 : Ekim 18, 2014, 10:53:42 ÖÖ »

Eski  dökümanlarımın içinde bulduğum algoritma.

1761 : 20 20 20 20 20 20 20 20 61  için aşağıdaki kodu yazdım.Aşağıdaki kodu derlersen.çalıştırdıktan sonra basic satırında print peek(4096) yazınca sonuç 97 değeri veriyor.Yani hex $61 doğru.



;----BASLA-------1761 : 20 20 20 20 20 20 20 20 61----------------------------

*= $0800
.byte $00,$0c,$08,$0a,$00,$9e,$32,$33,$30,$34,$00,$00,$00,$00

*=$0900


   lda #$61
   sta $fb
   lda #$17
   sta $fc

   lda $FB
   sta $5A 

   ldy #$00

   sty $5B 

loop    lda ($FB),Y

   clc

   adc $5A 

   sta $5A

   bcc loop1

   inc $5B


loop1   asl $5A 
   rol $5B

    iny

   cpy #$08

   bcc loop 

   lda $5A 

   adc $5B 

   sta $1000 

   rts

*=$1761

   .byte $20,$20,$20,$20,$20,$20,$20,$20


;----SON-------1761 : 20 20 20 20 20 20 20 20 61----------------------------





16E1 : 4B 2E 20 20 20 20 20 20 13 için adres bilgisi ve içeriğini yeniden düzenlersek aşağıdaki gibi.Prınt peek(4096) sonuç 19 çıkar.

 Evet algoritma doğru çalışıyor.




;----BASLA-------16e1 : 4b 2e 20 20 20 20 20 20 13----------------------------

*= $0800
.byte $00,$0c,$08,$0a,$00,$9e,$32,$33,$30,$34,$00,$00,$00,$00

*=$0900


   lda #$e1
   sta $fb
   lda #$16
   sta $fc

   lda $FB
   sta $5A 

   ldy #$00

   sty $5B 

loop    lda ($FB),Y

   clc

   adc $5A 

   sta $5A

   bcc loop1

   inc $5B


loop1   asl $5A 
   rol $5B

    iny

   cpy #$08

   bcc loop 

   lda $5A 

   adc $5B 

   sta $1000 

   rts



*=$16e1

   .byte $4b,$2e,$20,$20,$20,$20,$20,$20


;----SON-------16e1 : 4b 2e 20 20 20 20 20 20 13----------------------------


« Son Düzenleme: Ekim 18, 2014, 12:04:33 ÖS Gönderen: blackturk » Logged

A1200 | APOLLO 1240 32 MB | CNET PCMCIA | SYSINFO SPEED TEST 30 MIPS
SM1,SEGA MEGA CD,SM2,SMS II,Sega Saturn Mod ve AR 4MB,PSX Mod ve Mpeg ,PSX2 ,SNES ,ATARI 800XL,SPECTRUM 128K +2,YAMAHA CX5M MSX,ATARI 520 STFM,1040 STF,C64,C128,1541 II,1571,RAM 1764 ,A500,A500+,A600,A590,IDE68k,2X1084S,1084P
blackturk
Uzman
*****
Mesaj Sayısı: 1.285



Üyelik Bilgileri
« Yanıtla #14 : Ekim 18, 2014, 11:34:08 ÖÖ »

MDE'nin dökümünün ilk sayıda olması lazım.
Malesef  commodore dergisi birinci sayısında  program döküm ekinde mde var fakat kontrol toplamını anlatan herhangi bir bilgi yok.
Logged

A1200 | APOLLO 1240 32 MB | CNET PCMCIA | SYSINFO SPEED TEST 30 MIPS
SM1,SEGA MEGA CD,SM2,SMS II,Sega Saturn Mod ve AR 4MB,PSX Mod ve Mpeg ,PSX2 ,SNES ,ATARI 800XL,SPECTRUM 128K +2,YAMAHA CX5M MSX,ATARI 520 STFM,1040 STF,C64,C128,1541 II,1571,RAM 1764 ,A500,A500+,A600,A590,IDE68k,2X1084S,1084P
Sayfa: [1] 2   Yukarı git
Yazdır
Gitmek istediğiniz yer: