User Tools

Site Tools


asl-kompilacia-do-stranok

AS - kompilácia priamo do stránok


autor textu mborik128

V ASe je kompilácia do stránok možná, aj keď sa to nedá spraviť jedným príkazom… Ako vieme, výstup ASu je bytecode súbor typu *.p, ktorý môže obsahovať iba 65536 výstupných bajtov a z ktorého si následne vieme nasekať výstup do bináriek pomocou p2bin. Čize, ak si svoj zdroják pripravíme napr. takto:

		cpu	z80undoc
		relaxed on
		page	0
 
 
		org	0
 
; priestor od 49152 v pomalej banke 1 (17)
;------------------------------------------------------------------------------
		phase	$C000		; to, co by bolo povodne ako org, kde sa bude kod vykonavat
 
	; kod
 
		ds	$4000-($-$C000)		; kvoli vyplneniu zostatkoveho miesta az do konca banky
		dephase
 
; priestor od 49152 v pomalej banke 3 (19)
;------------------------------------------------------------------------------
		phase	$C000
 
	; kod
 
		ds	$4000-($-$C000)		; bytecode musi byt totiz presne na bajt vyplneny na 16k bloky
		dephase
 
; priestor od 49152 v rychlej banke 4 (20)
;------------------------------------------------------------------------------
		phase	$C000
 
	; kod
 
		ds	$4000-($-$C000)
		dephase
 
; priestor od 49152 v rychlej banke 6 (22)
;------------------------------------------------------------------------------
		phase	$C000
 
; napriklad binclude "hudba.bin"
 
		ds	$4000-($-$C000)
		dephase

Následne si nasekáme výstup do bináriek jednotlivých bánk pomocou parametra -r ako range, parameter -l určuje, čím vyplniť prázdne miesto a -k na konci zmaže po sebe samotné *.p. Takže bude to vyzerať nejak takto… v kompilačnom makefile:

%.bin: priklad128pages.p
		p2bin priklad128pages.p page1.bin -l 0 -r \$$0000-\$$3fff > /dev/null
		p2bin priklad128pages.p page3.bin -l 0 -r \$$4000-\$$7fff > /dev/null
		p2bin priklad128pages.p page4.bin -l 0 -r \$$8000-\$$bfff > /dev/null
		p2bin priklad128pages.p page6.bin -l 0 -r \$$c000-\$$ffff -k > /dev/null

…alebo v kompilačnom batch skripte:

p2bin priklad128pages.p page1.bin -l 0 -r $0000-$3fff > /dev/null
p2bin priklad128pages.p page1.bin -l 0 -r $4000-$7fff > /dev/null
p2bin priklad128pages.p page1.bin -l 0 -r $8000-$bfff > /dev/null
p2bin priklad128pages.p page1.bin -l 0 -r $c000-$ffff -k > /dev/null

Na záver musím iba pripomenúť, že v ASe príkaz PAGE slúži na ovladánie stránkovania vo výstupnom listingu. Preto všetky moje kódy obsahujú PAGE 0, aby sa mi v *.lst neobjavovali rušivé deliace ciary. Tj. nemá to nič spoločné so stránkami Speccy 128k ;)


Navigation: asm . compilation . linux . windows . mac . back to start

asl-kompilacia-do-stranok.txt · Last modified: 2017/11/25 17:41 by darkbyte