HiSoft Pascal

From Enterprise Wiki
Revision as of 13:14, 8 December 2013 by Povi (talk | contribs) (Módosítások az 1.1-es verzióhoz képest)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

HiSoft Pascal

A HiSoft Pascal elterjedt Pascal fordító volt a 8 bites számítógépeken. Kiadták Spectrum-ra, CPC-re és ENTERPRISE-ra is.

Dokumentációk:

Spectrum verzió [1]

CPC verzió [2]

MTX512 verzió [3]

ENTERPRISE verzió [4]


Módosítások az 1.1-es verzióhoz képest

EXOS(n)

Az EXOS függvény eljárássá alakítva. Két helyen kellett módosítani a kódot:

;original code (v1.1):                              ;modified code (v1.2):
l4b0a:  db      l4afc                               l4b0a:  db      l4afc
        db      "EXO","S"+128                               db      "EXO","S"+128
        db      9,3,0     ;9=function                       db      8,0,0     ;8=procedure
                          ;3=return parameter
                          ;  type is CHAR   
        dw      l4767                                       dw      l4767
        db      2                                           db      2


l4767:  db      4                                   l4767:  db      3      ;copy the next 3 bytes
        call    l04d7                                       call    l04d7  ;EXOS address in RTL
        push    af                                          push    af




Egész számok írása

Az 1.1-es verzióban a számok után egy szóközt is kiír a program. Ez törölve lett, hogy a számok írása ugyanolyan legyen, mint a Turbo Pascal-ban.

Eredeti kód:

l33b7:  db      6
        call    l05e5           ;writes HL to num
        call    l063d           ;WriteSpace

javítva:

l33b7:  db      3
        call    l05e5           ;writes HL to num
        call    l063d           ;WriteSpace




PAGE

A PAGE parancs feladata a képernyőtörlés és a lapdobás (nyomtatón). Ez a parancs egy CHR(12) karaktert ír ki, ez a kódja a lapdobásnak és Spectrum-on a képernyőtörlésnek is. Lefordított állapotban így néz ki a kód:

 LD   A,12
 CALL 0112H ;WriteChar

A módosított verzióban viszont így fordul le:

     LD   A,(14F7H)
     OR   A         ;mi az output? (0=képernyő, 1=printer)
     LD   A,12      ;a lapdobás kódja a nyomtatón
     JR   NZ,kiir   ;ha A<>0, akkor chr(12)-t fog írni
     LD   A,26      ;ha A=0, akkor CHR(26)-ot fog írni
kiir CALL 0112H     ;karakter írása

Így már ENTERPRISE-on is jól működik a PAGE parancs.

A nyomtató- és képernyőkimenet között a CHR(16) (CTRL+P) kóddal tudunk váltani:

 WRITELN('Most a kepernyore ir.');
 WRITELN(CHR(16),'Most viszont a nyomtatora!');
 WRITELN(CHR(16),'Ezt meg mar megint a kepernyore.');