Difference between revisions of "HiSoft Pascal"
(Created page with " == 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:'''...") |
(→Módosítások az 1.1-es verzióhoz képest) |
||
(4 intermediate revisions by the same user not shown) | |||
Line 20: | Line 20: | ||
− | ''' | + | == 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.'); |
Latest revision as of 13:14, 8 December 2013
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.');