Welcome, Guest. Please login or register.


Author Topic: HiSoft Pascal (Read 32473 times)

Offline Povi

  • EP addict
  • *
  • Posts: 1857
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Chrome 31.0.1650.57 Chrome 31.0.1650.57
    • View Profile
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #60 on: 2013.November.18. 18:29:44 »
hogyan tárolja a forráskódot a HiSoft Pascal?

a forráskód kezdőcímét a 48A3H-n lévő word mondja meg.
ez jelen esetben a 6338H címen kezdődik.
Hogy épül fel egy sor?
Az első két byte-ban van tárolva a sorszám.
A következő byte azt mondja meg, hány space-szel kezdődik a sor.
A következő byte(ok) maga a szöveges része a sornak.
A sort egy chr(13) (0dh) byte zárja le.
Néhány utasítás (35 db) tokenizálva van.
pl.:
81H = PROGRAM
82H = DIV
83H = CONST
84H = PROCEDURE
stb.

A
Code: [Select]
10 PROGRAM PROBA;
20 BEGIN
30   WRITELN('Hello');
40 END.
pl. így néz ki a memóriában:
Code: [Select]
;első sor:
    dw 10
    db 0
    db 81h    ;a PROGRAM tokenizálva
    db " PROBA;"
    db 13

;második sor:
    dw 20
    db 0
    db 98h    ;a BEGIN tokenizálva
    db 13

harmadik sor:
    dw 30
    db 2      ;2 szóköz van a sor elején
    db "WRITELN('Hello');"
    db 13

;negyedik sor:
    dw 40
    db 0
    db 90h    ;END tokenizálva
    db "."
    db 13
Mivel a sorszámok INTEGER formában vannak, összesen csak 32767 sorunk lehet (persze ez is bőven elég, ha lenne egy ekkora programunk, csak a sorszámok tárolására elmenne 64kB :-) ).

Lehet azonban trükközni, ha minden sor sorszámát 0-ra írjuk át (közvetlenül a memóriában turkálva), akkor kilistázhatatlan lesz a programunk.
Vagy pl. átírható a sorszám pl. 0ffffh-ra is, akkor listázásor -1 lesz annak a sornak a sorszáma. Ez kitörölhetetlen :-)
*** Speicherplatz zu klein

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13426
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 25.0 Firefox 25.0
    • View Profile
    • http://enterprise.iko.hu/
Re: HiSoft Pascal
« Reply #61 on: 2013.November.19. 10:45:48 »

Offline Povi

  • EP addict
  • *
  • Posts: 1857
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 25.0 Firefox 25.0
    • View Profile
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #62 on: 2013.November.19. 13:39:39 »
találtaom egy nem dokumentált érdekes parancsot:
RANSEED(x,y,z : integer)
Az x, y és z értékeket tölti fel a 05B1h, 05AA és 05A3 címekre.
Ezt a területet egyedül a RANDOM utasítás használja.

Olyasmi lehet ez az utasítás, mint a RANDOMIZE. Más értelmes magyarázatot nem találok.
*** Speicherplatz zu klein

Offline Lacika

  • EP addict
  • *
  • Posts: 2923
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 25.0 Firefox 25.0
    • View Profile
    • http://www.ep128.hu
Re: HiSoft Pascal
« Reply #63 on: 2013.November.19. 13:46:13 »
Van a Hisoft-ban képernyőtörlő utasítás is (így hirtelen nem jut eszembe a neve), ami a Spectrum verzió alapján valószínüleg CHR(12) értéket ír a képernypre, így Ep-n nem csinál semmit (legalábbis nekem úgy tűnik). Ez nem lehet átírni CHR(26)-ra?

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13426
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 25.0 Firefox 25.0
    • View Profile
    • http://enterprise.iko.hu/
Re: HiSoft Pascal
« Reply #64 on: 2013.November.19. 13:49:54 »
Quote from: Povi
Olyasmi lehet ez az utasítás, mint a RANDOMIZE. Más értelmes magyarázatot nem találok.
Pontosan, mint a nevéből látszik is :-)

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13426
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 25.0 Firefox 25.0
    • View Profile
    • http://enterprise.iko.hu/
Re: HiSoft Pascal
« Reply #65 on: 2013.November.19. 13:50:51 »
Quote from: Lacika
Ez nem lehet átírni CHR(26)-ra?
Ha Povi megtalálja a kódban, akkor át lehet :-)

Offline Povi

  • EP addict
  • *
  • Posts: 1857
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 25.0 Firefox 25.0
    • View Profile
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #66 on: 2013.November.19. 14:50:07 »
Újabb (félig-meddig) ismeretlen függvény:
INCH : CHAR

a billentyűzeten leütött karakter kódját adja vissza
Code: [Select]
VAR CH : CHAR;
BEGIN
REPEAT
  CH:=INCH;
  IF CH<>CHR(0) THEN WRITE(CH);
UNTIL CH=CHR(27);
END.
*** Speicherplatz zu klein

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13426
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 25.0 Firefox 25.0
    • View Profile
    • http://enterprise.iko.hu/
Re: HiSoft Pascal
« Reply #67 on: 2013.November.19. 14:56:08 »
Quote from: Povi
Újabb (félig-meddig) ismeretlen függvény:
Jól látom, hogy tulajdonképpen semmi leírás nincs a dokumentációban, hogy mit is tud a Hisoft Pascal? Vajon csak a magyar leírás ilyen béna, vagy angolul se volt?
« Last Edit: 2013.November.19. 15:02:08 by Zozosoft »

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13426
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 25.0 Firefox 25.0
    • View Profile
    • http://enterprise.iko.hu/
Re: HiSoft Pascal
« Reply #68 on: 2013.November.19. 15:12:59 »
A Spectrumos leírásban benne van az INCH. És a Laci által említett képernyőtörlés: PAGE

Offline Povi

  • EP addict
  • *
  • Posts: 1857
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 25.0 Firefox 25.0
    • View Profile
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #69 on: 2013.November.19. 15:31:07 »
pont most tartok a PAGE-nél...
mindjárt kiderül, mi a helyzet :-)

viszont nagyon érdekes dolgot találtam!
mit csinál a MAKESTR() függvény?
foglalt szó, de bármilyen típust írok a zárójel közé, 71-es (!) hibakóddal tér vissza fordításkor!!!
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 1857
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 25.0 Firefox 25.0
    • View Profile
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #70 on: 2013.November.19. 15:33:48 »
a PAGE tényleg egy CHR(12)-t ír...
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 1857
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 25.0 Firefox 25.0
    • View Profile
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #71 on: 2013.November.19. 15:48:35 »
itt a javított változat, amiben már működik a PAGE utasítás

ha van rá igény, ezt majd később át lehetne javítani CLRSCR-re, persze ehhez fordítható forrás kell majd
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 1857
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 25.0 Firefox 25.0
    • View Profile
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #72 on: 2013.November.19. 15:51:50 »
Quote from: Zozosoft
Jól látom, hogy tulajdonképpen semmi leírás nincs a dokumentációban, hogy mit is tud a Hisoft Pascal?
Jól látod! :ds_icon_cheesygrin:
De az INCH legalább fel volt sorolva a foglalt szavak között, nem úgy, mint a RANSEED :-)
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 1857
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 25.0 Firefox 25.0
    • View Profile
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #73 on: 2013.November.19. 15:57:38 »
Quote from: Povi
itt a javított változat, amiben már működik a PAGE utasítás
ennek azért örülök, legalább volt valami értelme annak, hogy belekezdtem a visszafejtésébe - kijavítottam egy majdnem 30 éves bugot! :-)
*** Speicherplatz zu klein

Offline Lacika

  • EP addict
  • *
  • Posts: 2923
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 25.0 Firefox 25.0
    • View Profile
    • http://www.ep128.hu
Re: HiSoft Pascal
« Reply #74 on: 2013.November.19. 17:12:02 »
Quote from: Povi
itt a javított változat, amiben már működik a PAGE utasítás

ha van rá igény, ezt majd később át lehetne javítani CLRSCR-re, persze ehhez fordítható forrás kell majd
Ez gyors volt, kösz! A ROM változatokban kijavítanád? :oops:
Átírni CLRSCR-re azért nem érdemes, mert ez amúgy sem Turbo Pascal és akkor már önmagával sem lenne kompatibilis a Hisoft Pascal... (más gépeken is van!)