HISOFT PASCAL 4TM Konštanty: ako konštanta môžu byť použité celé čísla 0 - 32767, alebo false, true typu Boolean. Typy: INTEGER - celé čísla REAL - reálne čísla CHAR - úplný rozšírený ASCII s 256 prvkami BOOLEAN - logická 1 (TRUE) alebo 0 (FALSE) Vstupné a výstupné procedúry: WRITE výstup údajov na obrazovku, alebo na tlačiareň WRITELN ako WRITE ale je nastavená newline PAGE vymaže obrazovku READ vstup dát z klávesnice READLN ako READ ale číta do bufferu z celého riadku Funkcie vstupu: EOLN táto funkcia vracia hodnotu TRUE ak nasledujúci znak, ktorý má byť prečítaný je END of LINE (CHR$ 13), inak vracia FALSE. INCH vyvolá čítanie z klávesnice, ak bola stlačená klávesa vracia znak reprezentujúci príslušnú klávesu. Ak nebola stlačená žiadna klávesa, potom vracia CHR$(0). Funkcie prenosu: TRUNC(X) parameter X musí byť typu real, alebo integer a vrátená hodnota je celočíselnou časťou X. ROUND(X) táto funkcia vracia najbližšie celé číslo k X. ENTIER(X) vracia najväčšie číslo menšie alebo rovné X. ORD(X) X môže byť skalárneho typu s výnimkou real. Vrátená hodnota je celé číslo, reprezentujúce poradie hodnoty X v množine definujúcej typ X. CHR(X) X musí byť typu integer. CHR vracia znak odpovedajúci ASCII hodnote X. Aritmetické funkcie: ABS(X) absolútna hodnota SQR(X) druhá mocnina SQRT(X) druhá odmocnina, vrátená hodnota je vždy typu real. Ak je argument záporný, je generované chybové hlásenie "Maths Call Error". FRAC(X) vracia zlomkovú časť X. FRAC(X) = X - ENTIER(X) SIN(X) sínus X, kde X je v radiánoch. Výsledok je real. COS(X) kosínus X, X je v radiánoch a výsledok je real. TAN(X) tangens X ARCTAN(X) vracia uhol v radiánoch, ktorého tangens je X. EXP(X) vracia hodnotu e^X, kde e = 2.71828 LN(X) prirodzený logaritmus. Ak X <= 0 tak je generované hlásenie "Maths Call Error". Ďalšie preddefinovateľné procedúry: NEW(p) umiestňuje priestor pre dynamickú premennú. Premenná p je ukazovateľového typu, po prevedení NEW(p) obsahuje p adresu novoumiestnenej premennej. MARK(v1) táto procedúra uchováva adresu posledného bytu dynamickej premennej, uloženej v premennej typu ukazovateľ v1. Stav môže byť obnovený po prevedení MARK pomocou RELEASE. RELEASE(v1) uvoľňuje priestor v pamäti pre použitie dynamických premenných. Obsah tejto časti pamäti môže byť znovu obnovený po použití MARK(v1), takto sa účinne zrušia všetky dynamické premenné vytvorené procedúrou MARK. INLINE(c1, c2 . . .) umožňuje vložiť do programu v Pascale strojový kód Z80. C1, C2. . . sú konštanty typu integer a môže ich byť ľubovoľný počet. USER(V) volá pamäťovú adresu V. HALT zastaví vykonávanie programu so správou "Halt at nn" kde nn je hexadec. adresa v pamäti. POKE(X,V) ukladá výraz V na adresu X. TOUT(meno, štart, dĺžka) uloží premenné na pásku. TIN(meno, štart) načíta premenné z pásky, ktoré boli uložené pomocou TOUT. OUT(P,C) ukladá P do registra BC a C do A, vykoná OUT (C),A. Ďalšie preddefinovateľné funkcie: RANDOM vracia pseudonáhodné číslo 0-255. SUCC(X) X je skalárneho typu okrem real a vracia nasledovníka X. PRED(X) ako SUCC ale vracia predchodcu X. ODD(X) X musí byť integer. Vracia TRUE ak je X nepárne. ADDR(V) berie identifikátor premennej akéhokoľvek typu za parameter a vracia integer adresu premennej s identifikátorom V. PEEK(X,T) X je adresa z ktorej má byť čítaný údaj typu T. SIZE(V) parameter tejto funkcie je premenná. Výsledok je rozsah uloženia v bytoch. INP(P) umožňuje priamy prístup k vstupnému portu Z80, prevedie opak OUT. Možnosti voľby prekladača: L: pre L+ je žiadaný úplný listing pre L- sú riadky listované, keď je nájdená chyba O: kontroluje preplnenie O+ kontroluje pri sčítaní a odčítaní O- nekontroluje C: zapína a vypína kontrolu klávesnice počas behu programu C+ po stlačení klávesy sa preruší beh programu C- nekontroluje S: určuje vykonávanie zásobníkových kontrol S+ na začiatku každého volania procedúry je vykonaná kontrola preplnenia S- nekontroluje A: pre A+ kontroluje indexy reťazca, či sú v medziach daných deklaráciou ARRAY pre A- nekontroluje P: mení výstupné zariadenie z monitora na tlačiareň a naopak I: I+ kontroluje správnosť výsledku pri porovnaní I- nekontroluje F: tento znak musí byť nasledovaný medzerou a ôsmimi znakmi. Spôsobí vloženie pascalovského zdrojového textu zo špecifikovaného súboru. Povely editora: I n,m automatické riadkovanie od n s krokom m L n,m listing od n po m K n udáva počet riadkov, ktoré budú pri listingu zobrazené naraz D(n,m) vymaže zo zdrojového textu riadky od n po m M n,m vymaže text z riadku m a nahradí ho textom z n N(n,m) prečísluje zdrojový text od n s krokom m F n,m,f,s hľadá v texte od riadku n po m reťazec f E n umožní editovanie riadku n P n,m,s SAVE riadkov n až m pod menom s G, ,s LOAD súboru s menom s C n vykoná preklad zdrojového textu od riadku n R spustí preložený program T n preklad od n riadku. Ak odpoviete "Y" na otázku "OK" nahrá sa preložený program na pásku s predošlým B vráti riadenie operačnému systému BASIC. O n,m prevedie tokenizáciu textu v pamäti, t.j. kompresiu S, ,d umožňuje zmenu oddeľovacieho znamienka pre príkazy Chybové hlásenia kompilátora: 1. Číslo je príliš veľké 2. Čaká sa stredník 3. Nedeklarovaný identifikátor 4. Čaká sa identifikátor 5. Použi "=" miesto ":=" 6. Čaká sa "=" 7. Nesprávny identifikátor 8. Čaká sa ":=" 9. Čaká sa ")" 10. Chybný typ 11. Čaká sa "." 12. Čaká sa faktor 13. Čaká sa konštanta 14. Identifikátor nie je konštanta 15. Čaká sa "THEN" 16. Čaká sa "DO" "TYPE", "BEGIN" 17. Čaká sa "TO", "DOWNTO" 18. Čaká sa "(" 19. Nemožný tento typ výrazu 20. Čaká sa "OF" 21. Čaká sa "," 22. Čaká sa ":" 23. Čaká sa "PROGRAM" 24. Čaká sa premenná 25. Čaká sa "BEGIN" 26. Chýba premenná pri READ 27. Nemožno porovnať typy 28. Môže byť INTEGER, REAL 29. Nemožno čítať typ premennej 30. Identifikátor nie je typ 31. Čaká sa exponent v real. číslach 32. Čaká sa skalárny výraz 33. Nepovolené nulové reťazce 34. Čaká sa "[" 35. Čaká sa "]" 36. Index ARRAY musí byť skalár 37. Čaká sa ". ." 38. Chýba "]" alebo "," pri ARRAY 39. Dolná medz je väčšia ako horná 40. Sústava je príliš veľká 41. Výsledok má byť typu integer 42. Čaká sa "," alebo "]" 43. Čaká sa ". ." alebo "]" 44. Typ parametra musí byť typu integer 45. Nesmie byť nulová zostava 46. Čaká sa skalár 47. Čaká sa skalár ale nie typu real 48. Nekompatibilné zostavy 49. Nesmie byť použité "<", "" k porovnaniu 50. Čaká sa "FORWARD", "LABEL", "CONST", "VAR" 51. Čaká sa hexadecimálne číslo 52. Nemožne POKE zostavy 53. ARRAY je príliš veľké 54. V RECORD sa čaká "END", ";" 55. Čaká sa identifikátor poľa 56. Čaká sa premenná po "WITH" 57. Vo WITH premenná typu RECORD 58. Nepriradený identifikátor WITH 59. Po LABEL musí byť celé kladné číslo 60. Po GOTO musí byť celé kladné číslo 61. Návestie na nesprávnej úrovni 62. Nedeklarované návestie 63. Parameter SIZE má byť premenná 64. Pre ukazovateľ iba ekvivalent 67. Iba e:m:H má dva ":" 68. Nesmie obsahovať znak EOL 69. Parameter potrebuje premennú typu point 70. Parameter ADDR má byť premenná