Welcome, Guest. Please login or register.


Author Topic: CoProcessor (Read 76907 times)

Offline Povi

  • EP addict
  • *
  • Posts: 2290
  • Country: hu
    • http://povi.fw.hu
Re: CoProcessor
« Reply #105 on: 2014.September.29. 11:22:47 »
egyébként BASIC-ben, Firefox-szal in, out parancsokkal működik a szorzás:
APU: command 0x1a has been executed, status = 0x0, stack_p diff = 4, TOS = 4, clocks = 16
APU: write data: 0x0
REPEAT: last line was repeated 2 times.
APU: write data: 0xa0
APU: write data: 0x4
APU: float is internally pop'ed: 10
APU: float is internally pop'ed: 3.141592502593994
APU: command 0x12 has been executed, status = 0x0, stack_p diff = -4, TOS = 4, clocks = 150
APU: read data: 0x5
APU: read data: 0xfb
APU: read data: 0x53
APU: read data: 0xd0
*** Speicherplatz zu klein

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: CoProcessor
« Reply #106 on: 2014.September.29. 11:28:09 »
Quote from: Povi
egyébként BASIC-ben, Firefox-szal in, out parancsokkal működik a szorzás:

Aha. Akkor a log2 volt a baj. Na gyorsan atirtam, nezd meg most chrome-mal. Mondjuk ha frissitem az emulatort online, gond lehet hogy a browser becache-elte, szoval fmi forced reload nem arthat :)

Offline Povi

  • EP addict
  • *
  • Posts: 2290
  • Country: hu
    • http://povi.fw.hu
Re: CoProcessor
« Reply #107 on: 2014.September.29. 11:31:29 »
igy már működik... :-)
már csak a zárójelre kéne valami megoldás...
*** Speicherplatz zu klein

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: CoProcessor
« Reply #108 on: 2014.September.29. 11:31:53 »
Quote from: Povi
az a baj, hogy Firefox-on sehogy se tudom előcsalogatni a pontosvesszőt (Chrome-on meg a nyitó zárójelet)...

A baj ugye az, hogy emulator szinten raw key code kene, ami PC kbd layout fuggo, ehhez van positional mapping szeruen az EP keyboard. Magyarul, hasznalj US PC kiosztast (magyart kiosztas az az ordog muve ...), es akkor kb ugy kene lennie a gomboknak tobbe-kevesbe, ahogy EP billentyuzetre nezve is latod. Azaz ugye J, K, L gombok utan mi jonne EP-n? Na az jon JSep-vel is, csak eppen ha nem US kiosztast hasznalsz a PC-den az nyilvan bezavar. Sajnos erre megoldas jelenleg nem nagyon van: ha ket kiosztas kozott kulonbseg van, azt egyreszt nehez lenne detektalni, masreszt megoldhatatlan problema, ha valami EP-n shift-el jon, PC-n meg nem, foleg, ha PC-n egyik kiosztason shift-elt, a masikon meg nem. Hiszen a shift allapotat is tovabbadom az EP fele ........

Tehat, US kiosztas PC-n beallit, es akkor EP billentyuzetet ha nezed, shift 8 es 9 a nyito- es zarojel. Ha minden igaz. Magyar kiosztas viszont bekavar, mert mas kodot fog visszaadni ...
« Last Edit: 2014.September.29. 11:38:05 by lgb »

Offline Povi

  • EP addict
  • *
  • Posts: 2290
  • Country: hu
    • http://povi.fw.hu
Re: CoProcessor
« Reply #109 on: 2014.September.29. 11:40:15 »
bill. működik, de újabb hibát találtam... :oops:

225. sor:
 _apu_stack[(_apu_tos - d1) & 0xF] = _apu_look(d2);


Uncaught ReferenceError: _apu_look is not defined


az xchg parancs nem akar működni...
*** Speicherplatz zu klein

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: CoProcessor
« Reply #110 on: 2014.September.29. 11:52:04 »
Megint JS hiba. :( Sajnos igen, ugye begepeltem sajat kis fejem alapjan, de tesztelni nem teszteltem, nem csoda, hogy kijon par bug. _apu_look8() kene, lemaradt egy 8-as :) Most atirtam. Amugy, ezert is mondtam, hogy ha mar ilyen lelkessen irsz APU-s cuccokat, irhatnal egy sima exos-5 .com -ot, ami kiad minden parancsot :) De ha nem teszed meg, majd en, mert ez igy eleg ego ram nezve, hogy ennyi gond van :D Bocsi. Es ez csak a syntax error, ettol persze lehet logikai hiba is az egeszben, szoval vmi olyan teszt program kene, ami ellenorzi is az eredmenyt mindig.

Offline Povi

  • EP addict
  • *
  • Posts: 2290
  • Country: hu
    • http://povi.fw.hu
Re: CoProcessor
« Reply #111 on: 2014.September.29. 11:58:10 »
megírom én, de most én mondom azt, hogy estére... :-)
de lehet, hogy egy Pascal progi lesz, lefordítva, legalább nem kell foglalkoznom a szám -> string konverzióval, és legalább a Pascal is le lesz tesztelve
*** Speicherplatz zu klein

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: CoProcessor
« Reply #112 on: 2014.September.29. 12:01:06 »
Quote from: Povi
megírom én, de most én mondom azt, hogy estére... :-)
de lehet, hogy egy Pascal progi lesz, lefordítva, legalább nem kell foglalkoznom a szám -> string konverzióval, és legalább a Pascal is le lesz tesztelve

Felolem oke, de akkor az a leforditott cucc csak IS-DOS alatt megy majd? Vagy en keverem, hogy melyik pascal IS-DOS-os :) Igazad van amugy, en is lusta voltam asm-ban nekiallni a tesztprogramnak, mert egy egyszeru teszt oke, de kiiratni, haaat, azt hirtelen nem akartam lefejleszteni (szam->string) :-) apu.js elejere odairtam a neved, ha mar segitesz tesztelni :)
« Last Edit: 2014.September.29. 12:05:33 by lgb »

Offline Povi

  • EP addict
  • *
  • Posts: 2290
  • Country: hu
    • http://povi.fw.hu
Re: CoProcessor
« Reply #113 on: 2014.September.29. 12:19:20 »
Quote from: lgb
Felolem oke, de akkor az a leforditott cucc csak IS-DOS alatt megy majd? Vagy en keverem, hogy melyik pascal IS-DOS-os :) Igazad van amugy, en is lusta voltam asm-ban nekiallni a tesztprogramnak, mert egy egyszeru teszt oke, de kiiratni, haaat, azt hirtelen nem akartam lefejleszteni (szam->string) :-) apu.js elejere odairtam a neved, ha mar segitesz tesztelni :)
Nem, ez 5-ös fejlécű programot készít, pont ez a jó benne.

Egyébként érdekes, hogy pl. a SIN(PI)-re 1.87254E-06-t ir ki 0 helyett...
A sinusz függvényhez még nem nyúltam a Pascal-ban (tehát nem az APU SIN parancsa számolja ki), hanem az eredeti szoftveres rutin fut, ami meghívja az APU összeadás, szorzás és osztó parancsait (ez most nem hiba, csak érdekesség - valószínűleg a többszörös oda-vissza konverzió a két formátum között eltorzítja az eredményt).
*** Speicherplatz zu klein

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: CoProcessor
« Reply #114 on: 2014.September.29. 12:21:55 »
Ha a tesztek sikeresek lesznek, kiveszem a sok debug-ot, mert ugye egy eroteljes APU-s cucc (pl mandelbrot halmaz rajzolas) eseten szepen szetfloodolna a browsert a sok log :) Ennek kapcsan jutott eszembe, hogy esetleg lehetne cheat mode, hogy ultra gyors APU, erdekes lenne majd megnezni mennyivel gyorsabban mandelbrotozik :) ugy. De ezt majd kesobb, elobb a teszt-sorozat :D

Esetleg par custom feature olyan APU parancsokra teve, ami alapbol nem implementalt egy igazi APU-n? Bar az ilyen emulator-only megoldasok mindig veszelyesek, hiszen mason ugyse fog menni, es esetleg kompatibilitasi gondot okoz, ha egy rosszul megirt program hasznal egy nem letezo command-ot (ami JSep-n esetleg valami tartos beallitast modosit ...), de aztan folytatna massal.
« Last Edit: 2014.September.29. 12:58:51 by lgb »

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: CoProcessor
« Reply #115 on: 2014.September.29. 13:22:29 »
Quote from: Povi
Nem, ez 5-ös fejlécű programot készít, pont ez a jó benne.
Cool!
Quote
Egyébként érdekes, hogy pl. a SIN(PI)-re 1.87254E-06-t ir ki 0 helyett...
A sinusz függvényhez még nem nyúltam a Pascal-ban (tehát nem az APU SIN parancsa számolja ki), hanem az eredeti szoftveres rutin fut, ami meghívja az APU összeadás, szorzás és osztó parancsait (ez most nem hiba, csak érdekesség - valószínűleg a többszörös oda-vissza konverzió a két formátum között eltorzítja az eredményt).
Na igen, ez valoszinu. Amugy az APU emulacio lehet, tobb ponton sem helyes, foleg ami a status register beallitasat illeti, pl underflow esemeny pontosan mikor van. Ez utobbit en igy kezeltem le: ami az "underflow gap-be esik" (az a tartomany ami nullat korulveszi, es az adott floating point szamabrazolasanal csak nullakent abrazolhato) azt detektalom. Meghozza ugy, hogy a javascript push-olni akar egy float-ot, ami javascript nativ adatkent nem nulla, am APU float formatumban mar ez, ekkor allitom azt be. Stb, hasonlok. Viszont ez nalam minden float internal push muveletre igaz, lehet igazi APU-nal nem minden command eseten allitodik be. Es hasonlok ...

Offline Povi

  • EP addict
  • *
  • Posts: 2290
  • Country: hu
    • http://povi.fw.hu
Re: CoProcessor
« Reply #116 on: 2014.September.29. 13:33:01 »
no igen, meg amire még nem tér ki a doksi, de nagyon kíváncsi vagyok, hogy vajon a float -> integer konverzió hogyan megy végbe?
kerekít, vagy csonkol?
ez is majd akkor derül ki, ha megérkezik végre a proci
*** Speicherplatz zu klein

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: CoProcessor
« Reply #117 on: 2014.September.29. 13:47:00 »
Quote from: Povi
no igen, meg amire még nem tér ki a doksi, de nagyon kíváncsi vagyok, hogy vajon a float -> integer konverzió hogyan megy végbe?
kerekít, vagy csonkol?
ez is majd akkor derül ki, ha megérkezik végre a proci

Jaaa, jut eszembe, a teszt program azert is erdekes: JSep tesztre es real APU teszre is jo :) Tehat a "ket legyet egy csapasra" dolog. Akkor az osszes command-on kivul en mindenkeppen beletennek pl olyat, hogy SMUL/SMUU es DMUL, DMUU elojeles/nem elojeles kombinaciok, meg mindenfele hibat okozo esetet, hogy uaz lesz a status valodi es emulalt APU-n, stb. Az erdekes az, hogy guglival talalni sok mindent az Am9511-rol, meg se sikerult semmit talalni, hogy barki irt mar volna emulatort, vagy teszt programot hozza, akarmit ...

Offline Povi

  • EP addict
  • *
  • Posts: 2290
  • Country: hu
    • http://povi.fw.hu
Re: CoProcessor
« Reply #118 on: 2014.September.29. 15:47:02 »
úgy tűnik, máris találtam egy hibát... ::oops:

töröltem először az APU regisztereit: kiküldtem az adatportra 16-szor 0x00-t

ezután a TOS-ba beírtam egy 32 bites számot (0x04 0x03 0x02 0x01)

kiváncsi voltam az APU regisztereire:

kiolvastam és kiírattam a TOS-t (port olvasás, értékének kiirása hexa-ban, majd ezt még háromszor megismétlem).

majd adtam egy POPF (0x18) parancsot

ezután megint kiirattam a TOS-t, és igy tovább...

ezek után ezt az eredményt kaptam:
04 03 02 01
00 00 00 00 
04 03 02 01
00 00 00 00

ha jól gondolom, ezt kellett volna:
04 03 02 01
00 00 00 00
00 00 00 00
00 00 00 00
*** Speicherplatz zu klein

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: CoProcessor
« Reply #119 on: 2014.September.29. 16:11:19 »
Quote from: Povi
úgy tűnik, máris találtam egy hibát... ::oops:

Oszinten szolva eppen rohanok, igy nincs idom megemeszteni ezt estig, amde egy fontos dolog: az APU stackjerol nekem a specikacio alapjan az jott le hogy cirkularis, azaz ha POP-olsz vmit, valojaban ahogy kell a TOS az alatta levo elemre mutat (ami a NOS volt) am a regi ertek nem tunik el, hanem a verem legaljan lesz. Ui csak csak a veremmutatot allitja, a 16 byte meg "korbe er" tehat nem olyan mint a Z80 eseten a stack pl (illetve vegulis olyan, mert 64K utan az is korbe er :) ) Nem tudom ez valaszt ad-e a kerdesre, este meg atgondolom. Na megyek is :)

Masreszt, JavaScript console-t kersz, es beirod a legalso sorba hogy _apu_stack majd enter billencs. Akkor latod az APU stack-et. Az _apu_tos mutatja (annak erteket is lekerdezheted az _apu_tos beirasaval), hogy ebbol melyik elem a TOS, de mint mondtam, valojaban a stack-et itt inkabb mint egy kort kell elkepzelni, tehat a stack eleje es vege "ossze van ragasztva". Azaz, ha az _apu_tos 15-on all (utso elem), akkor push utan 0 lesz az erteke, pop es utana pedig ujra 15. Ha megnezed az apu.js -t akkor az _apu_pop8() es az _apu_push8() (push/pop egy byte) annyit csinal, hogy a (megfelelo sorrendben!) tos-t noveli/csokkenti, adatot beir. Regi adathoz (pop eseten pl) viszont nem nyul, az a verem "melyen" megtalalhato meg mindig!
« Last Edit: 2014.September.29. 16:17:33 by lgb »