Welcome, Guest. Please login or register.


Author Topic: HiSoft Pascal (Read 87708 times)

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: HiSoft Pascal
« Reply #180 on: 2013.December.19. 17:46:47 »
Quote from: Povi
ebben, amit innét lehet letölteni, már benne van
a LOCK_KEY változót nem állítja induláskor, helyette a keretet állítja feketére
Ebben a verzióban végül mi van benne, és mi nincs? :oops:
Össze kellene gyűjteni, hogy lehessen dokumentálni.

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: HiSoft Pascal
« Reply #181 on: 2013.December.19. 17:49:21 »
Mostanára egyébként egész jól megszoktam, hogy mindent nagybetűvel kell írni... :ds_icon_cheesygrin:
Ma beírtam valamit a TP-be sorszámmal és nagybetűvel. Aztán meg hirtelen nem értettem, miért nem fordítja le... :oops:

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: HiSoft Pascal
« Reply #182 on: 2013.December.19. 17:59:11 »
Az jutott még eszembe, hogy a nyomtatóváltásra nem lehet valami mást kitalálni, mint a CHR(16)? Az escape-szekvenciák írásakor ez ugyanis probléma. (Esetleg egy "hangos" unit készítésekor...)

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #183 on: 2013.December.19. 18:22:54 »
Quote from: Lacika
Ebben a verzióban végül mi van benne, és mi nincs? :oops:
Össze kellene gyűjteni, hogy lehessen dokumentálni.
a PAGE parancs javítva lett (képernyőre chr(26)-ot küld, nyomtatóra chr(12)-t.
lett egy-két plusz parancs, ami a turbo pacalban is benne van:
Függvények:
 swap(n : integer) : integer
 lo(n : integer) : char
 hi(n : integer) : char

Eljárások:
 GotoXY(x,y : integer);
 ClrScr;
 SetVar(var, value : integer);

A GotoXY, ClrScr, Write és WriteLn eljárások érvényességét (hogy melyik csatornán hajtsa végre az adott feladatot) a 0328h címen lévő bájttal lehet állítani (alapeset: 121, ezt a program végén vissza kell állítani, ha átállítottuk).

Konstansok:
 pi : real;

lehet kisbetűvel is írni
a számok után nem ír szóközt
az EXOS() függvény eljárássá alakítva
alapból 80 karakteres képernyővel indul
a lock_key változó állítgatása helyett a border-t állítja feketére induláskor

és még van egy csomó minden, amit még meg kéne csinálni... :oops:
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #184 on: 2013.December.19. 18:23:48 »
Quote from: Lacika
Mostanára egyébként egész jól megszoktam, hogy mindent nagybetűvel kell írni... :ds_icon_cheesygrin:
Ma beírtam valamit a TP-be sorszámmal és nagybetűvel. Aztán meg hirtelen nem értettem, miért nem fordítja le... :oops:
monjduk én notepad++-ban írom a forrásokat, a kisbetűs forrást könnyebb olvasni, pihentetőbb a szemnek (szerintem)
*** Speicherplatz zu klein

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: HiSoft Pascal
« Reply #185 on: 2013.December.19. 19:12:26 »
Quote from: Povi
és még van egy csomó minden, amit még meg kéne csinálni... :oops:
Akkor még ne rakjam ki? ;-)

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: HiSoft Pascal
« Reply #186 on: 2013.December.19. 19:20:25 »
Quote from: Povi
A GotoXY, ClrScr, Write és WriteLn eljárások érvényességét (hogy melyik csatornán hajtsa végre az adott feladatot) a 0328h címen lévő bájttal lehet állítani (alapeset: 121, ezt a program végén vissza kell állítani, ha átállítottuk).
Ez szerintem működik az 1.1-ben is(?)

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #187 on: 2013.December.19. 19:31:04 »
az 1.1-ben (az még a gyári) nincs GotoXY és ClrScr
de a Write-re és a WriteLn-ra működik
*** Speicherplatz zu klein

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: HiSoft Pascal
« Reply #188 on: 2013.December.19. 22:06:32 »
Mai szemmel megdöbbentő, hogy bármiféle információ hiányában senki nem használta (nem tudta használni) a HP-t...

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #189 on: 2013.December.20. 09:28:28 »
Quote from: Lacika
Az jutott még eszembe, hogy a nyomtatóváltásra nem lehet valami mást kitalálni, mint a CHR(16)? Az escape-szekvenciák írásakor ez ugyanis probléma. (Esetleg egy "hangos" unit készítésekor...)
szerintem nem kéne átállítani, úgy se találunk olyan karaktert, amit semmilyen escape szekvencia se használ...
inkább poke-ézd ki a chr(16)-t vizsgáló részt :-)
POKE(#0308,CHR(#18));
így egy "jr nz" helyett egy "jr" lesz

visszaállítani pedig:
POKE(#0308,CHR(#20));
*** Speicherplatz zu klein

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: HiSoft Pascal
« Reply #190 on: 2013.December.20. 09:39:18 »
Kösz!
És a billentyűpuffer hol van? Tp-s ReadKey miatt kérdezem (az nem törli a billentyűpuffert).

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #191 on: 2013.December.20. 10:16:50 »
nem értem a kérdést... :-) nem a KeyPressed-re gondolsz? az nem törli a puffert
az inch miért nem jó a readkey helyett?
pl. így:

Code: [Select]
var ch : char;
begin
 repeat
  ch := inch;
  if ch='a' then valami1;
  if ch='b' then valami2;
  .
  .
  .
 until ch=chr(27);
*** Speicherplatz zu klein

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: HiSoft Pascal
« Reply #192 on: 2013.December.20. 10:34:08 »
Bocs, igen a KeyPressed-re gondolok. :oops: Az nem törli a puffert, az Inch igen.

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: HiSoft Pascal
« Reply #193 on: 2013.December.20. 10:55:53 »
Újabb újjgyakorlat. Itt annyi kalamajka van, hogy nem lehet egyszerűen kezdőértéket adni tömbváltozónak (sem), mint a TP-ben.

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: HiSoft Pascal
« Reply #194 on: 2013.December.20. 10:58:18 »
Quote from: Lacika
Bocs, igen a KeyPressed-re gondolok. :oops: Az nem törli a puffert, az Inch igen.
Code: [Select]
program a;

var ch : char;

function KeyPressed : boolean;
begin
  ra:=chr(105);
  exos(9);
  if rc=chr(0) then keypressed:=true else keypressed:=false;
end;

function ReadKey : char;
begin
  ra:=chr(105);
  exos(5);
  ReadKey:=rb;
end;

begin
  writeln('Billentyu lenyomasra varok...');
  repeat until keypressed;
  writeln('Sikerult!');
  ch:=readkey;
  writeln('A chr(',ord(ch),')-t nyomtad le.');
end.
persze inline-okkal még lehet gyorsítani (az olvashatóság rovására... :-) )

egyébként az inch ötvözi a két parancsot:
assembly-ben:
Code: [Select]
;INCH function
  ;input: -
  ;output: pressed key ascii code in A
  ;        if no key pressed, then return with A=0
l035c:  push    bc
        push    de
        ld      a,105
        exos    9            ;chan. read status
        or      a
        jp      nz,ErrorEXOS
        ld      a,c
        or      a
        pop     de
        pop     bc
        ld      a,00h
        ret     nz
l036d:  push    bc
        push    de
        ld      a,105
        exos    5                ;read a char from keyboard
        or      a
        jp      nz,ErrorEXOS
        ld      a,b
        pop     de
        pop     bc
        ret    
és ugyanez így nézne ki Pascal-ban:
Code: [Select]
function inch : char;
begin
  if KeyPressed then inch:=ReadKey else inch:=chr(0);
end;

*** Speicherplatz zu klein