HiSoft Pascal
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.');