Welcome, Guest. Please login or register.


Author Topic: HiSoft Pascal (Read 181229 times)

Offline Lacika

  • EP addict
  • *
  • Posts: 3212
  • Country: hu
    • http://www.ep128.hu
Re: HiSoft Pascal
« Reply #120 on: 2013.November.26. 20:27:37 »
hehe...
Erre varjatok gombot:

PROGRAM PROBA;
VAR NAME:ARRAY[1..20] OF CHAR;
BEGIN
  WRITE('Name: ');
  READLN;READ(NAME);
  WRITELN(NAME);
END.

Mi a búbánatot csinál a READLN...?

Offline Povi

  • EP addict
  • *
  • Posts: 2307
  • Country: hu
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #121 on: 2013.November.27. 14:59:11 »
Quote from: Lacika
Text 80-ba hogy kell programból átlépni?
Az a baj, hogy az a programrész, ami a váltást csinálja, nem a runtime részben van, szóval Translate-tel lefordított programban nem fog működni.
De egyébként meg így:
Code: [Select]
PROCEDURE MODE80;
BEGIN
  POKE(#14FD,CHR(40));
  USER(#1EEC);
END;

PROCEDURE MODE40;
BEGIN
  POKE(#14FD,CHR(80));
  USER(#1EEC);
END;
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 2307
  • Country: hu
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #122 on: 2013.December.03. 11:10:18 »
rájöttem, mire jó a titokzatos MAKESTR függvény... :-)
használata:
MAKESTR(string) : integer;
példa:
Code: [Select]
PROGRAM PROBA;
VAR A : INTEGER;
BEGIN
  A := MAKESTR('Hello');
  WRITE(A);
END.

A függvény visszatérési értéke mindig 1012 lesz (03F4H), ez egy memóriacím, ide másolja az idézőjelek közötti szöveget, egy hosszbájttal együtt. Sajnos az első szóközig, vagy chr(13)-ig nézi, tehát a 'Hello world!'-re is csak 5-ös hosszbájtot ad (persze ezt a kis hibát ki lehet javítani). :-)

egy nagy hibája van, max. 32 byte hosszú lehet a string (hosszbyte-tal együtt 33), különben a futtatható kódot fölülírja, és nincs erre semmilyen ellenőrzés... :-)
*** Speicherplatz zu klein

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14775
  • Country: hu
    • http://enterprise.iko.hu/
Re: HiSoft Pascal
« Reply #123 on: 2013.December.03. 11:21:57 »
De ezek szerint ha valahova bepókoljuk a szöveget megfelelő formában, akkor lehet azt a címet használni MAKESTR helyett.

Offline Povi

  • EP addict
  • *
  • Posts: 2307
  • Country: hu
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #124 on: 2013.December.03. 12:13:49 »
ja, de így pl. akkor lehet file-t nyitni (még nem nagyon látom, mire lehetne használni ezt a parancsot):
Code: [Select]
RA:=1;
RDE:=MAKESTR('PROBA.TXT');
EXOS(1);
és változóval is működik
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 2307
  • Country: hu
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #125 on: 2013.December.03. 15:08:33 »
Quote from: Lacika
Azt kell, hogy mondjam a Hisoft Pascal még gyorsabb, mint a Turbo Pascal. ;-)
persze, hogy gyorsabb, mert a REAL számok csak 4 byte-on vannak tárolva, a TP-ben pedig 6 byte-on
gyorsabb, de nem olyan pontos... :-)

egyébként pl. egy-két megoldás tényleg jobb a HP-ben, pl. az ABS függvény (egész számra) kb. 10%-kal gyorsabb, mint a TP-ben (majd felrakom mindkét kódot összehasonlításképpen)
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 2307
  • Country: hu
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #126 on: 2013.December.03. 18:09:47 »
ABS számítása HP-ban:
Code: [Select]
l07b0:  ld      a,h   ;4
        or      a     ;4
        ret     p     ;11/5
l07b3:  xor     a     ;4
        sub     l     ;4
        ld      l,a   ;4
        ld      a,0   ;7
        sbc     a,h   ;4
        ld      h,a   ;4
        ret           ;10
összesen 50 cikus

TP-n:
Code: [Select]
ABSint:
bit 7,h 8 ; Test sign bit
ret z 11/5 ; .. already >0
ComplINT:
ld a,h 4 ; .. one's complement
cpl             4
ld h,a     4
ld a,l     4
cpl             4
ld l,a     4
inc hl 6 ; Fix for two's complement
ret             10

összesn 53 ciklus, vagyis 6%-kal gyorsabb a Hisoft Pascal :-)
*** Speicherplatz zu klein

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10085
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: HiSoft Pascal
« Reply #127 on: 2013.December.03. 19:08:28 »
Quote
összesn 53 ciklus, vagyis 6%-kal gyorsabb a Hisoft Pascal :-)
Persze, hogy gyors! Ez már nem is Pascal, hanem assembly!
(Na jó, ez gyenge vicc volt, amúgy nem értek hozzá.)
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: HiSoft Pascal
« Reply #128 on: 2013.December.03. 20:03:24 »
Quote from: Povi
ABS számítása HP-ban:
Code: [Select]
l07b0:  ld      a,h   ;4
        or      a     ;4
        ret     p     ;11/5
l07b3:  xor     a     ;4
        sub     l     ;4
        ld      l,a   ;4
        ld      a,0   ;7
        sbc     a,h   ;4
        ld      h,a   ;4
        ret           ;10
összesen 50 cikus

Egy keveset még lehetett volna gyorsítani: :)

Code: ZiLOG Z80 Assembler
  1. l07b0:  ld      a,h   ;4
  2.         or      a     ;4
  3.         ret     p     ;11/5
  4. l07b3:  xor     a     ;4
  5.         sub     l     ;4
  6.         ld      l,a   ;4
  7.         sbc     a,h   ;4
  8.         sub     l     ;4
  9.         ld      h,a   ;4
  10.         ret           ;10
  11.  

Offline Povi

  • EP addict
  • *
  • Posts: 2307
  • Country: hu
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #129 on: 2013.December.03. 20:12:48 »
te egy zseni vagy :-)
és még rövidebb is egy byte-tal a kód...
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 2307
  • Country: hu
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #130 on: 2013.December.03. 21:26:14 »
van egy 15 byte-os rutin a 03c4h-tól kezdve, amire nincs ugrás sehonnét...
vajon miért maradt benne? ráadásul nem Spectrum átiratból maradt töredék, vagy ilyesmi, hanem kifejezetten EP128 kód:
Code: [Select]
l03c4:  call    l03df
l03c7:  ld      a,123
        exos    2
        call    l0458
        or      a
        jp      nz,ErrorEXOS
        ret     
a címkéket már én írtam hozzá (nem a disassembler), hogy rájuk kereshessek
az előző utasításról nem lehet ide jutni, mert az egy RET :-)
*** Speicherplatz zu klein

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14775
  • Country: hu
    • http://enterprise.iko.hu/
Re: HiSoft Pascal
« Reply #131 on: 2013.December.03. 21:29:59 »
JP (HL) vagy ilyesmi?

Offline Povi

  • EP addict
  • *
  • Posts: 2307
  • Country: hu
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #132 on: 2013.December.03. 21:40:25 »
jaj, azt mindig elfelejtem...
persze, lehet, hogy valahogy ráugrik, csak nem tudom, honnét... (és miért)
mert az előtte lévő pár sor ugyanez azzal az eltéréssel, hogy 122-es csatornát hoz létre
viszont a 123-ast a printer: eszköz szokta használni...
*** Speicherplatz zu klein

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14775
  • Country: hu
    • http://enterprise.iko.hu/
Re: HiSoft Pascal
« Reply #133 on: 2013.December.03. 22:04:46 »
Quote from: Povi
jaj, azt mindig elfelejtem...
És akkor ott vannak még a valahol a verembe dobjuk a címet, aztán majd ráRETelünk féle mókák is :-)

Offline Povi

  • EP addict
  • *
  • Posts: 2307
  • Country: hu
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #134 on: 2013.December.03. 22:53:53 »
érdekes, hogy futtatható fájl fordításakor (Translate parancs) is byte-onként írja a fájlt, ahelyett, hogy blokkműveletekkel csinálná. De ez a "hiba" legalább könnyen javítható, így gyorsabb lesz egy kicsit :-)
*** Speicherplatz zu klein