Preklad priamo do stránok v ASe

Tipy a triky v assembleri a v BASICu. Prosby o rady pri programovaní.
Správa
Autor
Používateľov profilový obrázok
z00m
Site Admin
Príspevky: 168
Dátum registrácie: Ne Okt 06, 2013 9:45 pm
Kontaktovať používateľa:

Preklad priamo do stránok v ASe

#1 Príspevok od používateľa z00m » Št Okt 31, 2013 9:19 am

Ako prekladať v ASe priamo do stránok?

Používateľov profilový obrázok
mborik128
Príspevky: 119
Dátum registrácie: Ut Okt 08, 2013 11:45 pm
Bydlisko: Košice
Kontaktovať používateľa:

Re: Preklad priamo do stránok v ASe

#2 Príspevok od používateľa mborik128 » Št Okt 31, 2013 9:21 am

V ASe je kompilacia do stranok mozna, aj ked to nedosiahnes jednym prikazom...
Ako vieme, vystup ASu je bytecode subor typu *.p, ktory moze obsahovat iba 65536 vystupnych bajtov a z ktoreho si nasledne vieme nasekat vystup do binariek pomocou p2bin. Cize, ak si svoj zdrojak pripravime napr. takto:

Kód: Vybrať všetko

		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
Nasledne si nasekame vystup do binariek jednotlivych bank pomocou parametra -r ako range, parameter -l urcuje, cim vyplnit prazdne miesto a -k na konci zmaze za sebou samotne *.p.
Takze bude to vyzerat nejak takto... v kompilacnom makefile:

Kód: Vybrať všetko

%.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 kompilacnom batch skripte:

Kód: Vybrať všetko

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 zaver musim iba pripomenut, ze v ASe prikaz PAGE sluzi na ovladanie strankovania vo vystupnom listingu. Preto vsetky moje kody obsahuju PAGE 0, aby sa mi v *.lst neobjavovali rusive deliace ciary. Tj. nema to nic spolocne so strankami Speccy 128k ;)

Napísať odpoveď