Welcome, Guest. Please login or register.


Author Topic: HiSoft Pascal (Read 87675 times)

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #135 on: 2013.December.04. 18:30:55 »
érdekességek (persze aki tanult egyetemen programozni, annak valószínűleg nem újdonság :-) )
a visszafejtéssel párhuzamosan elkezdtem nézegetni a Turbo Pascal visszafejtett, kommentelt kódját, és egy csomó dolog kikristályosodott (mindig tanul valamit az ember):
pl. a négyzetgyök számítás: babilóniai módszerrel (Heron-eljárás):
http://en.wikipedia.org/wiki/Methods_of_computing_square_roots
a HiSoft Pascal csak fixen 4 lépést használ, de már az is elég ahhoz a pontossághoz, amit 4 byte-os lebegőpontos számábrázolással el lehet érni:
Code: [Select]
;SQRT(x : real) : real
  ;input: X in HLDE
  ;output SQRT(x) in HLDE
l0e67:  ld      a,h
        or      a
        jp      m,l06c4     ;if X<0 then Maths Call Error
        ret     z           ;if X=0 then result=0 and return
        ld      (l150f),de
        ld      (l150d),hl  ;save X to memory
        sra     d           ;divide exponent by 2 (X0 in HLDE)
        ld      b,4
l0e78:  push    bc
        push    hl
        push    de          ;Xn to stack
        ld      bc,(l150d)
        push    bc
        ld      bc,(l150f)
        push    bc          ;X to stack
        call    l0acd       ;X / Xn
        call    l09a1       ;+ Xn
        dec     d           ;dec exponent (divide by 2)
        pop     bc
        djnz    l0e78
l0e8f:  ret
most már kicsit legalább világos, hogy is működik... :-)

vagy pl. a ROUND föggvény
soha nem gondolkoztam azon, hogy is működhet, pedig milyen egyszerű:
ha x>0, akkor TRUNC(X + 0,5),
ha X<0, akkor TRUNC(X - 0,5)
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #136 on: 2013.December.09. 14:00:21 »
na, rájöttem, hogy tud integer-t hexa formában kiírni! :-)
megörültem, hogy találtam valami nem dokumentált rész, aztán közben ott van a manual-ban :-)
használata: write(e:m:H)
 ahol e = integer szám
 m=teljes karakterhossz
 ha m=3 vagy m=4, akkor 4 számjegyen írja ki
 a m>4, akkor vezető space-eket is ír a szám elé (m-4 darabot)
 ha m=1, vagy m=2, akkor csak az legkisebb helyi értéken lévő 1, vagy 2 számjegyet írja ki
 a H pedig egy H betű
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #137 on: 2013.December.09. 14:11:50 »
a RTL rész nagyjából készen van, persze a lebegőpontos rutinok nem nagyon vannak kommentelve... :-) van egy-két szám is bent adatként, azokat is jó lenne megfejteni, hogy mik lehetnek, pl. az ARCTAN-nál találkoztam pi/6, pi/3 és pi/2-vel is. A READ utasítás kommentelése és működésének megfejtése is elmaradt...
elvileg fordítható, de még nem próbáltam

a compiler részben tegnap gyúlt egy kis világosság, amikor rájöttem, hogy az egyik call utasítás után lévő byte az nem kód, hanem adat (hasonlóan, mint az exos utasításnál), így rögtön értelmes kód lett a sok hülyeség helyett, miután kb. >20 helyen átírtam a kódot.

érdekes, hogy fordítás közben a "=", "<", ">", "<>", "<=", ">=" jeleket is "tokenizálja" és ez alapján van az ugrótáblázat a logikai vizsgálatokhoz (külön minden típushoz összesen 6x6 elemű táblázat)
*** Speicherplatz zu klein

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: HiSoft Pascal
« Reply #138 on: 2013.December.12. 21:33:07 »
Étvágygerjesztő előzetes PoviSoft műhelyéből. (Az ANIMANTP.PAS a Turbo Pascal verzió, összehasonlítás céljából). Igencsak meggyőző, ha egy magasszintű nyelven írt program gépi kód sebességével fut!

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: HiSoft Pascal
« Reply #139 on: 2013.December.13. 09:53:11 »
Gyors ismertető a HP-ről. Minden ki lett próbálva, így kiderült, hogy a CASE szerkezet eltér a TP-hez képest. Povi is sokmindent "felderített" már, azok is benne vannak. Érthetetlen egyébként, hogy a Spectrum-os ismertető is értékelhetetlen, mintha a HiSoft titkolni akarta volna, mit is tud a termékük...
Még egy fejezet lesz még az ismertetőben, az 1.2-es verzió őjdonságairól!
« Last Edit: 2013.December.13. 10:14:14 by Lacika »

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: HiSoft Pascal
« Reply #140 on: 2013.December.13. 10:13:34 »
Engedve a (jogos) reklamációnak:
:ds_icon_cheesygrin:

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #141 on: 2013.December.13. 14:03:03 »
Quote from: Lacika
Érthetetlen egyébként, hogy a Spectrum-os ismertető is értékelhetetlen, mintha a HiSoft titkolni akarta volna, mit is tud a termékük...
Még egy fejezet lesz még az ismertetőben, az 1.2-es verzió őjdonságairól!
Szerintem a Spectrum-os ismertető teljesen jó!
De mik azok az őjdonságok??? :mrgreen:
Egyébként meg őrült vagy, hogy így összeírtad ezeket... ;-)
*** Speicherplatz zu klein

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: HiSoft Pascal
« Reply #142 on: 2013.December.13. 15:52:10 »
Quote from: Povi
Szerintem a Spectrum-os ismertető teljesen jó!
Hát, én pl. azokon a "folyamatábrákon" annyira nem igazodok ki... :oops:

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14721
  • Country: hu
    • http://enterprise.iko.hu/
Re: HiSoft Pascal
« Reply #143 on: 2013.December.13. 18:07:10 »

Offline DrPrery

  • EP user
  • *
  • Posts: 264
  • Country: hu
Re: HiSoft Pascal
« Reply #144 on: 2013.December.13. 19:46:15 »
A linken valami egészen más jön be... :smt017

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14721
  • Country: hu
    • http://enterprise.iko.hu/
Re: HiSoft Pascal
« Reply #145 on: 2013.December.13. 19:57:47 »
Quote from: DrPrery
A linken valami egészen más jön be... :smt017
Jaj, ez a régi hiba amit még nem javított ki MrPrise :cry:
FTP linkeknél kispórol egy kettőspontot a fórum szoftver.

Innen elérhető.

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: HiSoft Pascal
« Reply #146 on: 2013.December.13. 22:44:06 »
Quote from: Zozosoft
A szkenneltben talán jobban kivehetőek az ábrák.
Én a scannelt-tel próbálkoztam, de azt sem értettem... :oops:

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #147 on: 2013.December.15. 00:07:56 »
megy a hegesztés... :-)
még nem tökéletes (nézd a string-et a fordítás előtt, és után)
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #148 on: 2013.December.15. 12:26:21 »
na, működik a kisbetűs írás is
a módosítások a CPC verzió alapján készültek

azok a szavak, amiket tokenizál fordítás közben, azok már nagybetűvel lesznek kiírva listázáskor, így kicsit vegyes lesz a kód kinézete, de ez a CPC-nél is így van:

ami változott emiatt:
az eredeti verzió "case sensitive" volt, tehát a "valami" és a "VALAMI" más-más változót (eljárást, függvényt) jelentett. Ez most nincs így. Nincs rá ellenőrzés, hogy azonos néven deklarálunk-e változót, függvény vagy eljárást, de ez az eredeti verzióban se volt, szóval mondhatjuk azt is, hogy ez egy feature, nem pedig bug :-) A gyári eljárásokat és függvényeket is felül lehet írni, ha úgy tetszik. A később deklarált cucc lesz érvényes.
*** Speicherplatz zu klein

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14721
  • Country: hu
    • http://enterprise.iko.hu/
Re: HiSoft Pascal
« Reply #149 on: 2013.December.15. 13:22:36 »
Quote from: Povi
azok a szavak, amiket tokenizál fordítás közben, azok már nagybetűvel lesznek kiírva listázáskor, így kicsit vegyes lesz a kód kinézete, de ez a CPC-nél is így van:
A writeln-t akkor nem tokenizálja?