Welcome, Guest. Please login or register.


Author Topic: CoProcessor (Read 62215 times)

Offline Zozosoft

  • EP addict
  • *
  • Posts: 14121
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 31.0 Firefox 31.0
    • View Profile
    • http://enterprise.iko.hu/
Re: CoProcessor
« Reply #15 on: 2014.August.06. 15:57:06 »
Quote from: Povi
a kinából jövők hamisitványok lehetnek?
Valószínűleg régi panelekből bontott használtak. Ebből azt hiszem nem nagyon volt több féle, így nincs az probléma, mint a Z80-nál, hogy a 4Mhz-esre ráírják, hogy 20Mhz-es.

Offline Povi

  • EP addict
  • *
  • Posts: 2155
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 34.0.1847.116 Chrome 34.0.1847.116
    • View Profile
    • http://povi.fw.hu
Re: CoProcessor
« Reply #16 on: 2014.September.08. 19:38:40 »
Vettem egy koprocit 2000 Ft-ért (ingyenes szállítással) az ebay-ről:
http://www.ebay.com/itm/1PCS-AM9511A-AM9511A-1DC-CDIP-ARITHMETIC-PROCESSOR-GOOD-QUALITY-LI2-/360988583027?pt=LH_DefaultDomain_0&hash=item540c98a473
Még van 187 db az eladónak, ha valaki kedvet kapna.

Még nem érkezett meg, legrosszabb esetben csak október közepén jön meg, kíváncsian várom, vajon működik-e.

Tervem az vele, hogy a HiSoft Pascal-t átírjam úgy, hogy a koprocira fordítson. Sajnos nem ugyanaz a lebegőpontos számformátum, de elég hasonló (nem IEEE 754 egyik se).
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 2155
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 29.0 Firefox 29.0
    • View Profile
    • http://povi.fw.hu
Re: CoProcessor
« Reply #17 on: 2014.September.08. 22:14:29 »
Gyorsan írtam is egy programot, ami a HiSoft Pascal lebegőpontos formátumát konvertálja át Am9511 formátumra. Egy-két hiányosság van:
a Pascal 23 biten tárolja a mantisszát, az Am9511 pedig 24 biten, tehát az Am9511 formátumban a mantissza LSB-je mindig 0 lesz. Pl. a 0.6 értéke "00 99 99 99" kéne hogy legyen, de így most csak "00 99 99 98" lesz.
Cserébe viszont az Am9511 kitevője csak 7 biten van tárolva a Pascal 8 bitje helyett.
Így a legnagyobb ábrázolható szám az Am9511-en 9,2x1018 (263), míg a Pascalban 3,4x1038 (2x2127).
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 2155
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 35.0.1916.153 Chrome 35.0.1916.153
    • View Profile
    • http://povi.fw.hu
Re: CoProcessor
« Reply #18 on: 2014.September.09. 11:28:47 »
« Last Edit: 2014.September.09. 11:36:24 by Povi »
*** Speicherplatz zu klein

Offline lgb

  • EP addict
  • *
  • Posts: 3550
  • Country: hu
  • æðsta yfirmaður
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 32.0 Firefox 32.0
    • View Profile
    • http://lgb.hu/
Re: CoProcessor
« Reply #19 on: 2014.September.09. 13:56:55 »
Quote from: Povi
itt a konvertáló rutin (HiSoft real formátumból Am9511 formátumba), és ki is küldi a procinak az adatot:

Az gondolom joval nehezebb lenne, hogy ne kelljen konvertalgatni, hanem az Am9511 formatuma legyen a "nativ". Es max a sw-es rutinokat ujrairni az coproc formatumra, hogy azert a hw hianyaban is menjen. Mivel konkretan semennyire nem ismerem a HiSoft pascal-t, konnyen jartatom a szamat :-P

Offline Povi

  • EP addict
  • *
  • Posts: 2155
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 35.0.1916.153 Chrome 35.0.1916.153
    • View Profile
    • http://povi.fw.hu
Re: CoProcessor
« Reply #20 on: 2014.September.09. 14:28:02 »
Ez lenne  a jobb megoldás, de ahhoz mélyebben bele kéne nyúli a Pascal lelkivilágába, erre (sajnos) nem vagyok képes. :-)
Jelenleg úgy működik a Pascal, hogy egy operandusos függvényeknél (pl. SIN) a HLDE-ben van az input, meghija az adott rutint, és HLDE-ben adja vissza az eredményt. Két operandus esetén (pl. osztás) az első op. (az osztandó) a veremben van, a második (az osztó) a HLDE-ben, meghivja a rutint, és HLDE-ben megkapjuk az eredményt.

A tervem:
egy op. esetén (pl. SQRT):
  1. HLDE átalakitva Am9511 formára, és kiküldi a procnak.
  2. Kiküldi a megfelelő parancsot.
  3. Visszaolvassuk az eredményt, és ezt visszakonvertálom Pascal REAL-ra, a HLDE-be.

Két op. esetén (osztás):
  1. HLDE átalakitva Am9511 formára, és kiküldi a procnak.
  2. Veremből kivesszük  a 2. operandust.
  3. Átalakitom ezt is Am9511 formára, és kiküldeni a procnak.
  4. osztás esetén TOS és NOS csere parancs küldése a procnak (hogy ne az osztót ossza az osztandóval). Összeadásnál és szorzásnál nincs szükség erre a cserére.
  5. Kiküldi a megfelelő parancsot. (osztás)
  6. Visszaolvassuk az eredményt, és ezt visszakonvertálom Pascal REAL-ra, a HLDE-be.

Annyira talán nem sok idő a konvertálás... :-)
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 2155
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 35.0.1916.153 Chrome 35.0.1916.153
    • View Profile
    • http://povi.fw.hu
Re: CoProcessor
« Reply #21 on: 2014.September.09. 14:43:45 »
*** Speicherplatz zu klein

Offline IstvanV

  • EP addict
  • *
  • Posts: 4825
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 31.0 Firefox 31.0
    • View Profile
Re: CoProcessor
« Reply #22 on: 2014.September.09. 15:07:00 »
Ha nem fontos, hogy A = H legyen:
Code: ZiLOG Z80 Assembler
  1.         ld      c, DATAPORT
  2.         in      a, (c)
  3.         ...
  4.         in      e, (c)
  5.         add     a, a
  6.         rr      h
  7.         rr      l
  8.         rr      e
  9.         sub     2
  10.         sra     a
  11.         ld      d, a
  12.         ret

Az IN A, (C) helyett lehet IN A, (DATAPORT) is, ami még 1 ciklussal gyorsabb. :)
« Last Edit: 2014.September.09. 15:15:47 by IstvanV »

Offline Povi

  • EP addict
  • *
  • Posts: 2155
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 35.0.1916.153 Chrome 35.0.1916.153
    • View Profile
    • http://povi.fw.hu
Re: CoProcessor
« Reply #23 on: 2014.September.09. 15:29:30 »
Ez zseniális, köszönöm!!!
Teli van a kód apró ötletekkel, nem tudom, milyen agy kell ehhez, de igazából pont az ilyen kódolások miatt szerettem meg az assembly-t. :-)
*** Speicherplatz zu klein

Offline Ferro73

  • EP lover
  • *
  • Posts: 828
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 28.0 Firefox 28.0
    • View Profile
Re: CoProcessor
« Reply #24 on: 2014.September.09. 16:41:38 »
Esetleg ha memcim-et használnál és OUTI, INI  utasítást használnál?
PL:
   ld   hl,kezd cdhle
   ld   bc,xxx   ; b=4 C= DATAPORT
   outi

   ld   hl,kezd cdhle
   ld   bc,xxx   ; b=4 C= DATAPORT
   ini

Offline Povi

  • EP addict
  • *
  • Posts: 2155
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Chrome 37.0.2062.103 Chrome 37.0.2062.103
    • View Profile
    • http://povi.fw.hu
Re: CoProcessor
« Reply #25 on: 2014.September.09. 19:12:40 »
Gondolkodtam én is rajta, de 4 byte miatt nem éri meg, nem lesz se gyorsabb, se rövidebb a kód.
A 4 byte kiküldése a portra OUT (C),reg utasítással 4x12T, plusz 7T a C-nek kezdőértéket adni (összesen 55T).
4 byte kiírása a memóriába LD (HL),reg utasítással 4x7T, HL kezdőérték adás 10T (eddig 38T), de a HL értékét 3x növelni kell, ez minimum 3x3T (ha INC L-t használunk csak), és még mindig csak a memóriában van a 4 byte-om, ahonnét OUTI-val ki kéne küldeni.
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 2155
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Chrome 37.0.2062.103 Chrome 37.0.2062.103
    • View Profile
    • http://povi.fw.hu
Re: CoProcessor
« Reply #26 on: 2014.September.09. 19:28:49 »
Itt van egy rövidke program, ami kiírja a Pascal lebegőpontos formátumot, átszámolja Am9511 formátumra, majd vissza alakítja Pascal formátumra.
http://ep.lgb.hu/jsep/demo/?snapshot=http%3A%2F%2Fbeac.uw.hu%2Fbigyo.ep128s&autostart=yes
A visszaalakító kód István műve.
Nulla esetén még nem biztos, hogy jó a konvertálás, a Pascal 00 00 00 00-t ad HLDE-nek, de igazából csak a H 6. bitjét nézi, hogy az nulla-e. Nem egyértelmű az Am9511 doksijából, vajon elég-e, ha a mantissza MSB-je nulla, vagy mind a 32 bitnek 0-nak kell lenni.
*** Speicherplatz zu klein

Offline BruceTanner

  • EP lover
  • *
  • Posts: 574
  • Country: gb
  • OS:
  • Windows NT 6.3 Windows NT 6.3
  • Browser:
  • Chrome 37.0.2062.103 Chrome 37.0.2062.103
    • View Profile
Re: CoProcessor
« Reply #27 on: 2014.September.09. 21:37:39 »

Offline Povi

  • EP addict
  • *
  • Posts: 2155
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Chrome 37.0.2062.103 Chrome 37.0.2062.103
    • View Profile
    • http://povi.fw.hu
Re: CoProcessor
« Reply #28 on: 2014.September.09. 21:43:28 »
Thanks a lot your help!
*** Speicherplatz zu klein

Offline lgb

  • EP addict
  • *
  • Posts: 3550
  • Country: hu
  • æðsta yfirmaður
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 32.0 Firefox 32.0
    • View Profile
    • http://lgb.hu/
Re: CoProcessor
« Reply #29 on: 2014.September.09. 21:58:50 »
Quote from: BruceTanner
(via google translate) You can improve the first routine too.

I'm curious if IS-BASIC can be modified somehow to use hardware coprocessor instead of software routines. But since IS-BASIC uses some kind of BCD logic (at least what I remember from my project to convert exos type-4 files into text or HTML on PC), I am not sure how easy/hard and efficient to do this ...