Welcome, Guest. Please login or register.


Author Topic: HiSoft Pascal (Read 184885 times)

Offline Povi

  • EP addict
  • *
  • Posts: 2322
  • Country: hu
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #375 on: 2017.November.03. 16:29:34 »
Povi fel szokott itt tűnni időnként. Lehet, hogy vele kellene egy kis eszmecserét megejtened.
A kisbetűs foglalt név írásnak nem kéne ilyen hibát okoznia, lehet, hogy akkor tényleg emu probléma van a háttérben?
A case sensitive feature kiírtása a CPC verzió alapján készült, szóval még az se lehet, hogy én vétettem valami hibát, vagy akkor ez a hiba a CPC verzióban is benne van :-)
*** Speicherplatz zu klein

Offline Lacika

  • EP addict
  • *
  • Posts: 3218
  • Country: hu
    • http://www.ep128.hu
Re: HiSoft Pascal
« Reply #376 on: 2017.November.03. 18:15:40 »
Játékok közül is volt olyan ami hibásan futott rajta, ha jól emlékszem pl a Tomahawk.

Pontosan! Hátrafelé indult el a helikopter... :ds_icon_cheesygrin:
Manapság már nem érdemes az Ep32-őt használni!

Offline RetroJátékos

  • Newbie
  • Posts: 8
Re: HiSoft Pascal
« Reply #377 on: 2018.January.30. 21:43:55 »
Sziasztok!
Rá lehet valahogy bírni a fordítót, hogy a readln után ne várjon még egy enterig? Illetve a legordított program tetejéről el lehet tüntetni a HiSoft Pascal Compiler feliratot (és pl. a saját program címével helyettesíteni)?

Offline Povi

  • EP addict
  • *
  • Posts: 2322
  • Country: hu
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #378 on: 2018.January.30. 21:51:06 »
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 2322
  • Country: hu
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #379 on: 2018.January.30. 21:53:40 »
Sziasztok!
Rá lehet valahogy bírni a fordítót, hogy a readln után ne várjon még egy enterig?

Kicsit máshogy működik a readln a HiSoft Pascal-ban, mint ahogy azt megszoktuk a Turbo Pascal esetében. A gyári példaprogramok is így használják:
Code: [Select]
READLN;
READ(valtozo);
*** Speicherplatz zu klein

Offline RetroJátékos

  • Newbie
  • Posts: 8
Re: HiSoft Pascal
« Reply #380 on: 2018.January.30. 22:43:07 »
Köszönöm, működik. :razz:

Offline Tomato77

  • EP user
  • *
  • Posts: 399
  • Country: hu
    • Támogató Támogató
Re: HiSoft Pascal
« Reply #381 on: 2018.February.13. 18:53:00 »
Sziasztok!
Azt szeretném kérdezni, hogy Pascalban van lehetőség gyorsan átmásolni bizonyos mennyiségű adatot a memória egyik részéről a másikra? Képkirakó rutint szeretnék, hasonlót, mint Turbo Pascalban a GetImage-PutImage páros. POKE-kal próbáltam bájtonként, de nem igazán gyors. Ha tudom a kép vízszintes méretét, akkor lehet gyorsítani azzal, hogy a PEEK-nek tömb típust adok meg, pl. 9 bájtnyi széles képhez így jó: POKE(VOfs+#C000,PEEK(Addr0,ARRAY[1..9] OF CHAR)); viszont ez nem túl rugalmas, mert csak konstanst fogad el. Mondjuk tudom, mekkora lesz a kép, de valami univerzálisabb megoldás jobb lenne. Olyan kéne, mint Turbo Pascalban a "Move" parancs. Assemblyben biztos lehetne ilyet, de azt nem ismerem, meg nem is tudom, hogyan lehet átalakítani INLINE hexa kóddá.
Köszönöm!
Kotasoft

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: HiSoft Pascal
« Reply #382 on: 2018.February.13. 19:24:02 »
Ha tudom a kép vízszintes méretét, akkor lehet gyorsítani azzal, hogy a PEEK-nek tömb típust adok meg, pl. 9 bájtnyi széles képhez így jó: POKE(VOfs+#C000,PEEK(Addr0,ARRAY[1..9] OF CHAR)); viszont ez nem túl rugalmas, mert csak konstanst fogad el.

Lehet változóval is, ha nem is túl elegánsan: először például 16 méretű blokkokban addig, amíg a maradék méret legalább 16, majd 8, 4, 2, és végül 1. Így nagy méretű adat nagy részét az első ciklus másolja. Nem hatékony viszont csak néhány byte másolásakor.

Az inline assembly használatáról van leírás az ep128.hu-n, és a különböző HPU-k is tartalmaznak rá példákat. A hexadecimális kódokat a legegyszerűbb az emulátorban "A" monitor paranccsal kiíratni ha csak néhány soros a kód, valamilyen nem használt területre írva (pl. IS-BASIC indítása után A 2000). Bonyolultabb rutint érdemesebb külső assemblerrel fordítani.

Offline Tomato77

  • EP user
  • *
  • Posts: 399
  • Country: hu
    • Támogató Támogató
Re: HiSoft Pascal
« Reply #383 on: 2018.February.13. 19:38:19 »
Köszönöm, István! Az ötlet is nagyon jó, meg rátaláltam az LPTUNIT.HPU-ra is, amiben van egy nagyon hasonló rutin, megpróbálom megérteni.
Kotasoft

Offline Povi

  • EP addict
  • *
  • Posts: 2322
  • Country: hu
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #384 on: 2018.February.15. 13:55:17 »
Sziasztok!
Azt szeretném kérdezni, hogy Pascalban van lehetőség gyorsan átmásolni bizonyos mennyiségű adatot a memória egyik részéről a másikra?
Köszönöm!
Nem teszteltem, de elvileg ennek jónak kell lennie:
Code: [Select]
procedure memcpy(dest, source, count : integer)
begin
  inline(#dd,#46,#03)   { ld b,(ix+3) };
  inline(#dd,#4e,#02)   { ld c,(ix+2) };
  inline(#dd,#66,#05)   { ld h,(ix+5) };
  inline(#dd,#6e,#04)   { ld l,(ix+4) };
  inline(#dd,#56,#07)   { ld d,(ix+7) };
  inline(#dd,#5e,#06)   { ld e,(ix+6) };
  inline(#ed,#b0)       { ldir};
end

A dest és source a cél és a forrás memóriacíma, a count-ban pedig byte-ban a másolandó cucc mérete
« Last Edit: 2018.February.15. 13:58:26 by Povi »
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 2322
  • Country: hu
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #385 on: 2018.February.15. 13:57:51 »
de ha már Move, akkor:

Code: [Select]
procedure Move(source, dest, count : integer)
begin
  inline(#dd,#46,#03)   { ld b,(ix+3) };
  inline(#dd,#4e,#02)   { ld c,(ix+2) };
  inline(#dd,#56,#05)   { ld d,(ix+5) };
  inline(#dd,#5e,#04)   { ld e,(ix+4) };
  inline(#dd,#66,#07)   { ld h,(ix+7) };
  inline(#dd,#6e,#06)   { ld l,(ix+6) };
  inline(#ed,#b0)       { ldir};
end

Bár valójában nem tudom, hogy az "igazi" Move parancs átírja-e visszatéréskor a dest értékét? Ahhoz kicsit módosítani kéne még.
*** Speicherplatz zu klein

Offline Tomato77

  • EP user
  • *
  • Posts: 399
  • Country: hu
    • Támogató Támogató
Re: HiSoft Pascal
« Reply #386 on: 2018.February.15. 15:29:28 »
 Ó, köszönöm! De szuper! Ki fogom próbálni, bár most más akadályba ütköztem. :)
Utánanéztem, szóval ez az LDIR ciklusban másol.

Most ott akadtam el, hogy futtatáskor az "out of RAM" üzenet jelenik meg. Fordítás előtt a stack-eket C000-ra állítom, hogy az utolsó lapra szabadon lapozhassak. Az EXOS-tól elkérem az FC-FD-FE szegmenseket (ezeket dugig töltöm, a többit felszabadítom), maga a forrás program pedig kb. 10K eddig. Nagyjából 3 KB-nyi méretű tömböt használok, ezeket tervezem áttenni a heap-re, hátha így felszabadul némi memória. Azt találtam még ki, hogy átállítom az emulátort 160 KB-nyi RAM-ra azzal a céllal, hogy hátha így elfér minden és lehet fordítani, tesztelni, majd a kész, lefordított program Pascal környezet nélkül talán belefér 128K RAM-ba. Vajon sok helyet foglalhat a fordító és az editorban a forrásprogram? Ezek felszabadulnak, ha a .COM programot futtatom? Mindenképp cél, hogy alap, gyári 128K-s Enterprise-on fusson, mindenféle tuning nélkül.
Kotasoft

Offline Povi

  • EP addict
  • *
  • Posts: 2322
  • Country: hu
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #387 on: 2018.February.15. 15:55:49 »
Ó, köszönöm! De szuper! Ki fogom próbálni, bár most más akadályba ütköztem. :)
Utánanéztem, szóval ez az LDIR ciklusban másol.

Most ott akadtam el, hogy futtatáskor az "out of RAM" üzenet jelenik meg. Fordítás előtt a stack-eket C000-ra állítom, hogy az utolsó lapra szabadon lapozhassak. Az EXOS-tól elkérem az FC-FD-FE szegmenseket (ezeket dugig töltöm, a többit felszabadítom), maga a forrás program pedig kb. 10K eddig. Nagyjából 3 KB-nyi méretű tömböt használok, ezeket tervezem áttenni a heap-re, hátha így felszabadul némi memória. Azt találtam még ki, hogy átállítom az emulátort 160 KB-nyi RAM-ra azzal a céllal, hogy hátha így elfér minden és lehet fordítani, tesztelni, majd a kész, lefordított program Pascal környezet nélkül talán belefér 128K RAM-ba. Vajon sok helyet foglalhat a fordító és az editorban a forrásprogram? Ezek felszabadulnak, ha a .COM programot futtatom? Mindenképp cél, hogy alap, gyári 128K-s Enterprise-on fusson, mindenféle tuning nélkül.

Sajnos csak 64k-t lát a HiSoft Pascal, szóval annál több nem lehet...
Itt az lehet a gond, hogy túl nagy a forrás, lehet azzal játszani, hogy kiveszed pl. a kommenteket, és megnézed úgy, hogy lefordul-e.
Egyébként igen, Translate-tel fordítva több helyed van, meg lehet azt is nézni, hogy úgy vajon fordul-e.

Az LDIR-nél arra azért figyelj, hogy mi van akkor, ha átfedésben van a célterület a forrással, az nincs lekezelve :-)
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 2322
  • Country: hu
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #388 on: 2018.February.15. 15:58:38 »
Nagyjából 3 KB-nyi méretű tömböt használok, ezeket tervezem áttenni a heap-re, hátha így felszabadul némi memória.
Ezt hogy tervezed? Sejtem, hogy mit akarsz, csak kíváncsi vagyok, hogyan.
« Last Edit: 2018.February.15. 19:05:05 by szipucsu, Reason: Idézet javítása »
*** Speicherplatz zu klein

Offline Tomato77

  • EP user
  • *
  • Posts: 399
  • Country: hu
    • Támogató Támogató
Re: HiSoft Pascal
« Reply #389 on: 2018.February.15. 16:11:35 »
Most hat tömb van, összesen kb. 3K helyet foglalnak. Ezeket arra használom, hogy a mozgó képek ezekbe vannak mentve, innen teszi ki a program a képernyőre. Ezek helyett szeretnék pointert használni és a NEW paranccsal lefoglalni memóriát, hátha úgy elfér.
Kotasoft