Welcome, Guest. Please login or register.


Author Topic: HiSoft Pascal (Read 54548 times)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4825
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 53.0 Firefox 53.0
    • View Profile
Re: HiSoft Pascal
« Reply #285 on: 2017.May.05. 13:17:42 »
A sin(x) számítását táblázattal is meg lehetne oldani. Akár a BASIC verzióban is, mert valójában csak néhány száz lehetséges x ismétlődik 0 és 12.8 között 0.04 felbontással. A százzal osztás és hússzal szorzás is a táblázatba építhető. Pascal vagy asm változatban pedig át lehet írni a programot egész számok használatára.
« Last Edit: 2017.May.05. 13:20:56 by IstvanV »

Offline endi

  • EP addict
  • *
  • Posts: 7305
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Chrome 57.0.2987.133 Chrome 57.0.2987.133
    • View Profile
    • Honlapom
Re: HiSoft Pascal
« Reply #286 on: 2017.May.05. 13:23:49 »
na ez érdekes lett.
lores és függőleges step, így gyorsabb bár kisebb felbontás
emlékszem, ilyeneket úgy csináltam annak idején, hogy ránéztem hogy milyen gyorsan csinálja, nagyjából megbecsültem hány óra míg végez, és addig elmentem valami mást csinálni :)

ah mekkora király lett volna még egy gép, amíg az egyik renderel :D

Vigyázat! Szektás vagyok! :)

Offline endi

  • EP addict
  • *
  • Posts: 7305
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Chrome 57.0.2987.133 Chrome 57.0.2987.133
    • View Profile
    • Honlapom
Re: HiSoft Pascal
« Reply #287 on: 2017.May.05. 13:30:01 »
az előző hiresben, step nélkül
Vigyázat! Szektás vagyok! :)

Offline szipucsu

  • EP addict
  • *
  • Posts: 9185
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 53.0 Firefox 53.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: HiSoft Pascal
« Reply #288 on: 2017.May.05. 13:32:52 »
ah mekkora király lett volna még egy gép, amíg az egyik renderel :D
Vagy a multitask SymbOS rendszer. Bár abban nem tudom, programozni lehet-e valamilyen nyelven.
100 SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
110 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
120 SOUND PITCH 25,SYNC 2
Videos

Offline IstvanV

  • EP addict
  • *
  • Posts: 4825
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 53.0 Firefox 53.0
    • View Profile
Re: HiSoft Pascal
« Reply #289 on: 2017.May.05. 13:36:52 »
Pixelenkénti sin() nélkül:
* filler.bas (0.45 kB - downloaded 168 times.)

Offline Povi

  • EP addict
  • *
  • Posts: 2120
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 52.0 Firefox 52.0
    • View Profile
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #290 on: 2017.May.05. 20:21:00 »
Eratoszthenész szitája:
Code: [Select]
program sieve2;

var
  prime : array[0..32767] of boolean;
  n, index : integer;

begin
  {$A-}
  {$O-}
  poke(#38, chr(#c9));

  for n := 1 to 32767 do
    prime[n] := true;

  for n := 1 to 127 do begin
    if prime[n] then begin
      index := 2 * (n * n + n);
      repeat
        prime[index] := false;
        index := index + n + n + 1;
      until (hi(index) > chr(#7f));
    end;
  end;

  poke(#0328, chr(120));
  poke(#05be, chr(#18));
  poke(#05e7, chr(#18));

  write(chr(27),'S', 2 : 8);
  for n := 1 to 32767 do
    if prime[n] then write(n + n + 1 : 8);
  writeln;

  poke(#0328, chr(121));
  poke(#05be, chr(#28));
  poke(#05e7, chr(#28));

  poke(#38, chr(#f5));
end.
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 2120
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 52.0 Firefox 52.0
    • View Profile
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #291 on: 2017.May.05. 20:25:33 »
*** Speicherplatz zu klein

Offline IstvanV

  • EP addict
  • *
  • Posts: 4825
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 52.0 Firefox 52.0
    • View Profile
Re: HiSoft Pascal
« Reply #292 on: 2017.May.06. 14:32:36 »
Pixelenkénti sin() nélkül:

Asm verzió (lehetne ditherelt is, a korábban már használt kóddal egyszerűen megoldható):
* filler.com (0.7 kB - downloaded 170 times.)

Offline endi

  • EP addict
  • *
  • Posts: 7305
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Chrome 57.0.2987.133 Chrome 57.0.2987.133
    • View Profile
    • Honlapom
Re: HiSoft Pascal
« Reply #293 on: 2017.May.06. 15:51:04 »
Asm verzió (lehetne ditherelt is, a korábban már használt kóddal egyszerűen megoldható):
(Attachment Link)

ez is exossal írja a pixeleket?
Vigyázat! Szektás vagyok! :)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4825
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 52.0 Firefox 52.0
    • View Profile
Re: HiSoft Pascal
« Reply #294 on: 2017.May.06. 16:04:22 »
ez is exossal írja a pixeleket?

Nem, de külön pixel rajzoló rutint használ (tetszőleges X, Y, szín), tehát lehetne gyorsabb is ha figyelembe venné hogy a pixeleket sorban rajzolja balról jobbra és felülről lefelé, ezért nem kellene a címet mindig újra számítani.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4825
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 52.0 Firefox 52.0
    • View Profile
Re: HiSoft Pascal
« Reply #295 on: 2017.May.08. 15:01:17 »
* dither4c.com (0.97 kB - downloaded 169 times.)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4825
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 52.0 Firefox 52.0
    • View Profile
Re: HiSoft Pascal
« Reply #296 on: 2017.May.09. 10:24:18 »
Endi Tunnel Demoja Pascalban

Az megoldható, hogy Pascal program asm rajzoló rutinokat használjon? Ez különösen pixelenkénti rajzolásnál lenne hasznos. A sin() számítása is elkerülhető a ciklusban (a fenti dither4c.com is tartalmaz ilyen megoldást), bár itt a futásidő jelentős részét az EXOS ellipszis rutinja teszi ki. De a BASIC változat is gyorsul 7:42-ről 5:44-re ilyen optimalizálással.
« Last Edit: 2017.May.09. 10:45:02 by IstvanV »

Offline Zozosoft

  • EP addict
  • *
  • Posts: 14083
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 52.0 Firefox 52.0
    • View Profile
    • http://enterprise.iko.hu/
Re: HiSoft Pascal
« Reply #297 on: 2017.May.09. 10:37:35 »
Az megoldható, hogy Pascal program asm rajzoló rutinokat használjon?
Van INLINE.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4825
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 52.0 Firefox 52.0
    • View Profile
Re: HiSoft Pascal
« Reply #298 on: 2017.May.11. 10:44:44 »
Van INLINE.

Ez így meglehetősen korlátozottnak tűnik. :oops: Esetleg ha már lefordított asm rutinokat lehetne betölteni fix címre (ahol a Pascal program nem írja felül) és onnan hívni, az használhatóbb lenne. PC-s C fordítóknál (SDCC és z88dk) viszonylag könnyen megoldható a már meglevő EP-s betöltő módosításával, de azokat nem használja senki, a HiSoft Pascal "bővítésének" több értelme lenne.

Offline Povi

  • EP addict
  • *
  • Posts: 2120
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Chrome 57.0.2987.133 Chrome 57.0.2987.133
    • View Profile
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #299 on: 2017.May.11. 17:46:00 »
Ez így meglehetősen korlátozottnak tűnik. :oops: Esetleg ha már lefordított asm rutinokat lehetne betölteni fix címre (ahol a Pascal program nem írja felül) és onnan hívni, az használhatóbb lenne. PC-s C fordítóknál (SDCC és z88dk) viszonylag könnyen megoldható a már meglevő EP-s betöltő módosításával, de azokat nem használja senki, a HiSoft Pascal "bővítésének" több értelme lenne.
Az Alter paranccsal a Compiler és a Translate stack-et átírva (default értéke 0xffff) a megadott érték fölött memóriacímeket nem fogja bántani a Pascal.
Tehát oda lehet már betölteni gépi kódu rutinokat.
A TIN paranccsal lehet a legegyszerűbben betölteni fájlt.
használata:
TIN(filenév, memóriacím);
pl.:
tin('valami.o', #c000);

meghívni a rutint a user paranccsal lehet.
pl.: user(#c000);

a rutinnak RET-tel kell végződnie
*** Speicherplatz zu klein