Debugge? rész ahol a rutint, programrészt figyelheted lépésröl, lépésre vagy csak a végeredmént.Erre manapság az ep128emu debuggere sokkal-sokkal-sokkal-sokkal-... :ds_icon_cheesygrin: alkalmasabb!
bocsánat, sajtóhiba történt, EP128emu-t akartam írni én is,csak az emu lemaradt :DNekem fel se tûnt, alapból arra gondoltam.
Erre manapság az ep128emu debuggere sokkal-sokkal-sokkal-sokkal-... :ds_icon_cheesygrin: alkalmasabb!Gondolod ?
Én a SJASM-ot ajánlom
Gondolod ?
Csináljak külön egy betöltö rész csak azért hogy teszteljen a rutint, ha nemjó inditsam újra a gépet /EMU-t/ modositsam a rutint forditsam le betöltöbe /5-ös fejléc/..... tisztára mikor TAPE: egységem volt
Az .asm-ek átmeneti file-ok, amelyeket HEASS segítségével lehet .HEA formátumra konvertálni; ehhez elõbb "TAB/DELETE TAB-POINTS" (F2,F2) is kell, mert egyébként a HEASS a forrásszöveget eltolja jobbra és nem ismeri fel a címkéket :oops:Én egy TAB pontot szoktam rakni az elsõ oszlopba, az is jó. Aztán el kell menteni a HEASS Setup-ot, és legközelebb már nem kell foglalkozni vele.
Az .s -> .asm konverzióhoz az "asmconv.sh" shell scriptet használtam, amely az UTF-8 formátumú ékeEzt mivel lehet futtatni?
Pl konkretan most ez erdekelne: kellene nekem egy "szokasos" karakteres kepernyo, amit azonban en kozvetlenul irogatnek. Azonban ugye a Nick rugalmassaganak hala, ez maris sok kerdest vet fel: van valami lehetosegem arra, hogy tudjam: adott felbontasu karakteres kepernyo, a videoram egy fixed helyen es kesz, irhatok bele (gondolom pl grafikus stb modhoz biztos nincs, de en most elsore egy std karakteres dologra vagyok csak semmi faxni). Vagy nekem kell egy LPT-t felepiteni, video ram szegmenst foglalni, stb? Nincs erre valami pl EXOS funkcionalitas, hogy egyszeruen ugymond "kerjek egy kepernyot"? Hasonloan amator kerdes: ha nem kozvetlenul irkalnek a kepernyore, hogyan tudok pl egy karaktert mondjuk EXOS-al kiiratni a kepernyore, esetleg egy egesz sztringet? Olvasgattam az EXOS leirast, de igy teljesen elsore nem feltetlen tiszta nekem.Ha közvetlenül akarod írogatni, akkor a legjobb, ha csinálsz saját LPT-t, saját videómemóriával.
(Amúgy meg a szöveges részt érdemes lenne átnézni OCR hibák után kutatva, akad bõven :oops: )Sokat segítene a hibakeresésben, ha segítenél, hol keressem: :oops:
A "fix" kép (LPT), memória környezet felépítéséhez (amiben garázdálkodni szándékozol amolyaan spectrum, c64 stílusban) azonban szinte kikerülhetetlen ezek használata.
Itt egy egyszerű program (SjASM PC-s Z80 assemblerrel fordítható), amely karakteres képernyőt állít be, és kiír egy üzenetet, majd a SPACE billentyűre vár, aminek a lenyomásakor kilép:Koszi! Franko pelda volt. Azonban van ami nem vilagos nekem. Miert kell az, hogy ilyen reset szeru modon kilepni? Elnezest, ha hulyeseget irok, vagy hulyen fogalmazok, megprobalom leirni, mi nem vilagos nekem. Sajna mindig C64-es peldaval kell jonnom: ott betoltok egy programot, futtatom (itt eleve kulon nem is kell futtatni?), aztan visszakapom a vezerlest ha az kilep. Ugy, hogy ujra tudom futtatni ha akarom, megvizsgalhatom a memoriat stb. Itt viszont a billentyulenyomas utan nem kilep, hanem "resetel" hiszen ujra ott vagyok ahogy a gep bekapcsol amugy. Bocsanat, tudom, alapveto EP ismereti hianyossagaim vannak :)
Az neked a furcsa, hogy van a gépnek operációs rendszere, a szó valódi értelmében.
Ezt (http://ep128.hu/Ep_Konyv/Gepi_kod.htm) olvastad már?
* az elozo kerdesemhez, hogy miert nem tud egy program csak ugy "kilepni": mi van, ha egy zenelejatszot irnek mondjuk, de olyat, ami IRQ-ba epul be, hogy betoltes utan hatterben zeneljen szepen. Ekkor persze valahogy csak ki kell lepnem, gondolom en ...Erre a feladatra a rendszerbõvítõ formátum alkalmas, ami inicializáláskor beláncol egy saját periféria kezelõt, és annak a megszakítási rutinja végzi a zenélést.
Ekkor jöttem rá arra a Z80 hiányosságra, hogy pl. nincs relatív CALL utasítás. Egy gépi kódú progamot nem lehet úgy megírni, hogy bárhova teszem a memóriában, ugyanolyan jól mûködik. A JR utasítással a relatív ugrást még megoldja, de ha a program után elhelyezkedõ adatterületet akarom használni, akkor nem tudok rá hivatkozni, mert nem tudom az abszolút címét.:shock: :?: :?: :?:
Nincs olyan utasítás, amivel a programszámláló értékét ki tudom olvasni, sem olyan báziscím regiszter ami megmondaná merre vagyok. Adatok írásához/olvasásához pedig ez elengedhetetlen.
:shock: :?: :?: :?:
Ezt nagyon nem értem! Erre valók a címkék az assemblerben! Te egyszer a program elején megmondod, hova teszed, a többi a fordító dolga.
Szerintem o arra gondolt, hogy a mar _leforditott_ cuccot akarja mas-mas cimre betolteni.És minek akar ilyet csinálni? Egyébként erre van kitalálva a relokálható fájlformátum az EXOS-ban.
ld a,h
call conver1
ld a,h
call convert
ld a,l
call conver1
ld a,l
jp convert
conver1 rrca
rrca
rrca
rrca
convert and 0fh
add 30h
cp 3ah
jr c,number1
add 07h
number1 ld (de),a
inc de
ret
Ekkor jöttem rá arra a Z80 hiányosságra, hogy pl. nincs relatív CALL utasítás. Egy gépi kódú progamot nem lehet úgy megírni, hogy bárhova teszem a memóriában, ugyanolyan jól mûködik. A JR utasítással a relatív ugrást még megoldja, de ha a program után elhelyezkedõ adatterületet akarom használni, akkor nem tudok rá hivatkozni, mert nem tudom az abszolút címét.
Nincs olyan utasítás, amivel a programszámláló értékét ki tudom olvasni, sem olyan báziscím regiszter ami megmondaná merre vagyok. Adatok írásához/olvasásához pedig ez elengedhetetlen.
És minek akar ilyet csinálni? Egyébként erre van kitalálva a relokálható fájlformátum az EXOS-ban.
LGB nem érzem azt, hogy pocsékolás lenne egy regisztert elhasználni arra, hogy megmutassa a báziscímet. Én inkább azt hívnám pocsékolásnak, hogy egy kód csak egy adott helyrõl képes elindulni. Ettõl lesz egy SW erõsen op rendszer specifiukus, és nehezen lehet átvinni máshová.
Processzorórajeleket lehet megtakarítani.
Ez amugy a maskeppen "fejlettnek" mondott x86-on is problema
Attus!Értem én, hogy mit hiányolsz, de programozástechnikailag megoldható a relatív call is, meg is oldották már rengetegszer.
Azért nem jó a CALL utasítás, mert ha nem tudod hol tartózkodsz a memóriában akkor hova adod ki az ugrás címét? Az a baj a CALL-lal, hogy nincs relatív párja.
A 64 bites módban már nem, ha jól tudom. x86_64-en már használható RIP-relatív címzés.
Ennek EP-n általában kevés jelentősége van, legfeljebb a rendszerbővítőknél fontos, amik áthelyezhető formátumba is fordíthatók.
PC-n is csak a .dll (Windows) és .so (Unix) file-ok áthelyezhetők - illetve ezek közül is csak az utóbbi valódi pozíció független kód 32 bites x86 rendszeren, a programok fix címre fordítódnak (de ez nem probléma, mert az operációs rendszer mindnek külön virtuális címterületet biztosít).
Csak akkor, ha a relatív ugrás nem történik meg. Az utasítások futásideje (memória várakozás nélkül):
- JP (mindig): 10 ciklus
- JR (nem teljesül a feltétel): 7 ciklus
- JR (az ugrás megtörténik): 12 ciklus
Ezt nem tudja az asmon?Tudja, csak közvetlenül a RAM-ba nem enged olyan alacsonyan, hogy tönkre ne vágd a rendszert.
Persze, akkor lefordítja, de hova kerül a gépi kód?Ha nem állítottál be file-nevet, akkor sztem a DUMMY-ba :D
Ehhez kene elotte vmi csatorna nyitas, vagy barmi? En azt vettem ki a leirasokbol, hogy a 0x66-os csatorna az "standard", a peldaban is hasznaljak, semmifele megnyitas stb nincs elotte.Igen, kell megnyitás. Ott a példákban azért standard, mert BASIC alatt futnak a példák, ahol a BASIC alatt már eleve meg van nyitva.
ismét tanácsolnám az EP Plusz használatát asm tanuláshoz...
Amit eddig probaltam: EXOS valtozok beallit, video: csatorna megnyitasa, 11-es exos funkcio/func=1, aztan exos 7, karakterkiiras a csatornara. Az eredmeny vagy fekete kepernyo, vagy kb 2-3 percenkent valtozo fekete/kek csik kombinacio az emulatorbol nezve.Hmmm, stack pointert beállítottad a program elején? (Általában LD SP,100H-val szokás kezdeni.)
Hmmm, stack pointert beállítottad a program elején? (Általában LD SP,100H-val szokás kezdeni.)
De ha akarod összerakok neked Hello Word-ot :-)
Hmmm, stack pointert beállítottad a program elején? (Általában LD SP,100H-val szokás kezdeni.)
De ha akarod összerakok neked Hello Word-ot :-)
Használhatsz macroot az RST 30h-k helyett, eccerűbb lesz úgy programozni, így exos x szel meghívható bármely exos funkció:
macro exos n
rst 030h
defb n
endm
Sajnos nem tudok segíteni, én v0.39g6 -t használok.Én is. A 4-esből egy csomó elvileg nem létező, de értelmezhető dolgot kivettek. Ilyen pl. az említett PUSH dolog, ami a 3-asban így működött:
Tegnapi napomat a galaga valagának elméleti fényezésével töltöttem,:smt042 :smt043 :smt044
azt hiszem elhagyom a C fordítót és Assembler -re térek át.Hát ja, veszkődtem azzal a C dologgal eleget, végül oda is csaptam...
A gépi kódú rutinom végén található nagy mennyiségű db egy része átlóg a következő lapra.Gondolom az ORG cím ott is működik :)
Van arra lehetőség, hogy a HEASS a db sorozatot az általam megadott címre fordítsa?
pl. 4000H-tól
Gondolom az ORG cím ott is működik :)Én is gondoltam, de nem :-)
... átlóg a következő lapra.
Ez egy bazi nagy 5-ös fejlécü program?
a sprite irányonként 14 frame-ből áll, asszem ezt megfelezem majd, nem sok értelme van... azon kívül, hogy rengeteg helyet foglal."Felezd meg" mégegyszer azzal, hogy az egyik irányból a másikat tükrözéssel állítod elő.
Nem a futás közben gondoltam, hanem az inicializálás során.
Igen, egy kicsit elszálltam :-);
a sprite irányonként 14 frame-ből áll, asszem ezt megfelezem majd, nem sok értelme van... azon kívül, hogy rengeteg helyet foglal.
A Haluska cikk segített, köszönöm !
Ilyen lett:
(egy kicsit villog, de működik és öröm van :-) )
(Attachment Link)
Egy kis segítséget kérhetek? Mivel az elmúlt években nem követtem az eseményeket ...A load snapshot menuponttal tolthetok be, vagy ALT-L, es csak EP128EMUban
Az .ep128s kiterjesztésű programok csak EP emulátoron futnak?
Ha igen, hogyan futtathatom EP-n őket?
Előfe is köszi :)
De ő igazi EP- szeretné futtatni!
BASIC-nél ha fileio-s a snapshot, akkor ki lehet menteni.
Gépi kódú a program, akkor meg kell kérni a készitőt, hogy tegye fel rendesen is.
, feltennéd sima EP formátumban is? Köszi!
Igazi vason nem teszteltem, de mennie kell...
(Attachment Link)
Igazi vason nem teszteltem, de mennie kell...
(Attachment Link)
hát ha nem akarsz elszíneződést, akkor nem használhatod az xor-os módszert
, majd AND-eled a háttérrel, és ezzel OR-ozod a sprite bájtot.
.maskLookupTable ; lookup table for masks, by byte. AND with screen data, then OR with pixel data.
defb &FF,&AA,&55,&00,&AA,&AA,&00,&00,&55,&00,&55,&00,&00,&00,&00,&00,&AA,&AA,&00,&00,&AA,&AA,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00
defb &55,&00,&55,&00,&00,&00,&00,&00,&55,&00,&55,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00
defb &AA,&AA,&00,&00,&AA,&AA,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&AA,&AA,&00,&00,&AA,&AA,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00
defb &00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00
defb &55,&00,&55,&00,&00,&00,&00,&00,&55,&00,&55,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00
defb &55,&00,&55,&00,&00,&00,&00,&00,&55,&00,&55,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00
defb &00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00
defb &00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00
ld c,(hl)
ld a,(bc)
ex de,hl
and (hl)
ex de,hl
or c
ld (hl),a
Elmeletileg egy gyors megoldas a sprite kirajzolasahoz (egy bajtra):
Egy másik lehetséges megoldás (SP = sprite adat, D = maszk táblázat felső 8 bit, HL = video cím):
ld a,(bc)
and (hl)
ld (hl),a
ld a,(de)
or (hl)
ld (hl),a
a DE tartalmazza a sprite címet, nem látom a kódban hogy DE-re mikor történik kiírás..
Igen, és érdemes a lookup table-t xx00h címen kezdeni a sebesség miatt.
(Attachment Link)
(Attachment Link)
(Attachment Link)
(Attachment Link)
border színezést tudnál beletenni hogy lássuk az időket?
ha jól látom az ütközés pixelpontos? :)
Tök jók, a másodikból akár egy játékot is lehetne csinálni, csak eredményjelző kéne, meg pár nehézségi szint.
Nincs kedved egy demót csinálni az elmúlt pár hétben bemutatott effektekből? Az első programot is bele lehetne tenni. :)
A "Magic Ball" demót ki lehetne egészíteni labdával, bár ezt valószínűleg a sávok számának a csökkentésével vagy átlátszóság nélkül lehetne megoldani (vagy csak sötét színű labdával), mert az eredeti verzió mind a 8 paletta színt használja a pálya megjelenítésére (4 normál és 4 átlátszóság, ami szimmetrikus 7 sávos pályához volt elég).
A "Magic Ball" demót ki lehetne egészíteni labdával, bár ezt valószínűleg a sávok számának a csökkentésével vagy átlátszóság nélkül lehetne megoldani (vagy csak sötét színű labdával), mert az eredeti verzió mind a 8 paletta színt használja a pálya megjelenítésére (4 normál és 4 átlátszóság, ami szimmetrikus 7 sávos pályához volt elég).Azt is lehet, amúgy az önmagában is nagyon látványos, ha labda, akkor arra lehetne használni a Bias színeit, nem?
Azt is lehet, amúgy az önmagában is nagyon látványos, ha labda, akkor arra lehetne használni a Bias színeit, nem?
Az előző programok háttér mentés nélküli változata, így több sprite megjelenítésére van idő:
Az előző programok háttér mentés nélküli változata, így több sprite megjelenítésére van idő:Nagyon jó, és ha jól láttam, akkor egy kis idő még maradt is, tényleg érdemes lenne szerintem ebből egy játékot csinálni :)
Megvan a hiba, ezt nem vettem figyelembe;
:-) köszönöm!
A kód is megy, az István által említett módosítással...
(Attachment Link)
A "Magic Ball" demót ki lehetne egészíteni labdával, bár ezt valószínűleg a sávok számának a csökkentésével vagy átlátszóság nélkül lehetne megoldani (vagy csak sötét színű labdával), mert az eredeti verzió mind a 8 paletta színt használja a pálya megjelenítésére (4 normál és 4 átlátszóság, ami szimmetrikus 7 sávos pályához volt elég).
lehetne egy futó figura, vagy ha más nem, egy 4x ekkora gömb! milyen látványos lenne
Ilyen minőségű kép az EP-n lehetséges felbontással és színekkel nem biztos, hogy jól konvertálható. :oops:Cool ez a labda, és a mozgása is nagyon jó. Lehet a nagy labda, mondjuk 2x ekkora már túl sok processzor időt elvinne, és tényleg csak 3 sáv maradna, szerintem az már nem olyan jó.
Az előbbi példa így néz ki a sprite "demo" programban:
4x4 méret az gyakorlatilag 16 sprite megjelenítése lenne, a háttér animációja mellett. 2x2-re talán lenne idő, de akkor másra már nem sok maradna.
hm egyre nagyobb a kísértés hogy újra elkezdjek asm-ban dolgozni :)HEAS -ban is teheted... :-D (Haluska szerint van olyan jó, mint az ASM, bár ezt nyilván azok tudnák megmondani, akik mindkettőt használták.)
neem nem nem nemmmmmm
hm egyre nagyobb a kísértés hogy újra elkezdjek asm-ban dolgozni :)Hajráááá :D Jól el lehet b.szni vele az időt :D
neem nem nem nemmmmmm
Cool ez a labda, és a mozgása is nagyon jó.
for i in ball_??.xpm ; do \
echo -e "$i:" | sed 's/ball_\(..\)\.xpm/player\1SpriteData/' ; \
./xpm2ep16 $i 0 8 7 5 6 ; echo -e ".l1: block SPRITE_WIDTH * 2 * SPRITE_HEIGHT, 00h\n" ; \
done >> sprdata.s
LumSweep.zip (3.49 kB - letöltve 2 alkalommal.)Elvileg létezik olyan fórumfunkció, hogy azt is kiírja, kik töltötték le, nem csak hogy hányan. Nem tudom, mennyire nehéz megcsinálni, de MrPrise biztos megcsinálja, ha van rá igény.
Szerk.: Vajon kik lehetnek akik letöltötték? Dobnátok PM-et?
Elvileg létezik olyan fórumfunkció, hogy azt is kiírja, kik töltötték le, nem csak hogy hányan. Nem tudom, mennyire nehéz megcsinálni, de MrPrise biztos megcsinálja, ha van rá igény.
Nagyon jó lett a logó, a világosodás is jól el lett találva :)Köszike! Valójában nem eltalálva lett, hanem kiszámolva. :) Végigvettem az összes lehetséges színt, kiszámoltam az R*299+G*587+B*114 képlettel a fényerejüket, és sorba rendeztem. Az van a NickLuma.s fájlban, csökkenő sorrendben. Sokkal jobban látszik, ha az emulátorban leveszed a színtelítettséget nullára. Színesben kicsit zavaró a folytonos átmenet hiánya, enyhén villogni látszik tőle.
Szerk.: Vajon kik lehetnek akik letöltötték? Dobnátok PM-et?Én most töltöttem, belenéztem, elrettentem.
Én most töltöttemKöszönöm a visszajelzést! Gondoltam legelső próbálkozásnak ennyi is elég lesz, de ha nem, hát nem. Ígérem, ha legközelebb próbálkozni akarok, több energiát fektetek bele. (Kár, hogy nincs becsszóra szmájli.)
Színesben kicsit zavaró a folytonos átmenet hiánya, enyhén villogni látszik tőle.Kicsit, de ott is látszik, hogy folyamatosan világosodik.
A logó a gép bejelentkező logójából lett átrajzolva, bár az olyan vastag részekkel, mint az R betűk szára, nem vagyok elégedett, de az én tehetségemből ennyire futotta. :oops:Én se vagyok egy pixelguru, és ráadásul az ilyen konverziókkal el is szoktam babrálni 1-2 órát, az EP logo a programok alján is beletelt szerintem 2 órába.
Igazából nem volt nehéz összehozni, csak néhány dolog okozott ilyen-olyan meglepetést. Például célszerű jól eltalálni a videó szegmens számát és Z80 lapszámot, ha azonos címet akarok használni az LPT címzésére. Vagy hogy az LPT-ben lennie kell olyan sornak amire be van állítva a Reload, és olyannak is, amiben a VINT, már ha komolyan gondolom, hogy videómegszakítást szeretnék használni. A feledékenység. Ugye-ugye? :D Azután meg, bár a Z80 utasításai meglehetősen rugalmasak, mindent mindenre mégsem lehet használni, így elég sokszor kellett lapozgatni a vonatkozó irodalmat, többször, mint azt kényelmesnek gondoltam. :( Na és az, hogy a megszakítás kiszolgáló rutinban újra engedélyezni kell a megszakításokat, mert a Z80 automatikusan tiltja. Nem vagyok én ehhez szokva, na. :)Az LPT a meglepetések tárháza :D A legtöbb hibát ott szoktam véteni, kedvencem, amikor a sok soros LPT palettáját akarom feltölteni, és elcsúszik a feltöltés felülírva a képvezérlő részeket :oops: , a VINT-et már én is elfelejtettem jópárszor :)
Volt ez a dolog, amire mindig kíváncsi voltam hogyan néz ki EP-n? Elmúlt éjjel nagyjából összekalapáltam, utána megálmodtam mi volt a hibája, és ma délelőtt kijavítottam. Álljon itt elrettentésként mindenki számára! Így nem szabad csinálni!Én letöltöttem, mert érdekelt. És gratula, én mint nem programozó értékelem az ilyeneket :)
(Attachment Link)
Szerk.: Vajon kik lehetnek akik letöltötték? Dobnátok PM-et?
Kicsit, de ott is látszik, hogy folyamatosan világosodik.
Ez attól is függ, hogy a rendezés hogyan számítja az egyes színek fényerejét, az egyszerű YUV konverzió (Y = R*0.299 + G*0.587 + B*0.114) megegyezik azzal, amit az ep128emu és a TV-k használnak fekete-fehér kép előállítására, azonban színes képnél nem biztos, hogy ez közelíti a legjobban az érzékelt fényerőt. Itt (https://enterpriseforever.com/programozas/grafikai-trukkok/msg44452/#msg44452) található egy összehasonlítás az EP színek két különböző színtérben való rendezése között.Én csak ámulok, és bámulok (oké már láttam a linkelt hozzászólásod), van olyan amit nem tudsz ? :)
Én csak ámulok, és bámulok (oké már láttam a linkelt hozzászólásod), van olyan amit nem tudsz ? :)
Szerintem csak a lotto kovetkezo nyero szamait nem tudja talan ... De meg ebben sem vagyok biztos :DÉn sem, csak nem akarja elvenni mások örömét :D
Azok, akik letöltötték a tegnapi forráskódomat kérem írjanak egy PM-etÉn nem töltöttem le, mert azt se tudom, a cpp kiterjesztést eszik-e vagy isszák. De aki letöltötte, szerintem a fórumra is megírhatja, mit gondol róla, nem titkos, sokaknak lehet érdekes, hasznos.
mitől függ, hogy HALT utasításra megáll-e a proci "örökre", vagy tovább lép, az 50Hz-es megszakításnál?Volt-e előtte EI :-)
hm mi ez a halt előtti EI???EI = enable interrupt
EI = enable interrupt
basic-be be lehet így építeni könnyen :)ASMON-nal még egyszerűbb :-)
Használ EP assemblert (HEASS ajánlott) (http://www.ep128.hu/Ep_Util/HEASS.htm), és akkor csak annyi a dolgod, hogy 5-ös fejléccel fordítod le a programodat. A LOAD ezt 100H-tól fogja betölteni, és indítani, lásd új alkalmazói programok betöltése. (http://www.ep128.hu/Ep_Konyv/Exos.htm#48)
Itt egy példaprogramocska, ami tartalmazza a program szabályos indulását, memória foglalást, LPT felépítést, kilépést. A fõprogram jelenleg kimerül SPACE gomb figyelésben :-)Code: ZiLOG Z80 Assembler
MACRO EXOS n RST 30H DB n ENDM ORG 0F0H ;16 bájtos EXOS fejléc DB 0,5 ;5-ös típus, vagyis gépi kódú felhasználói program DW VEGE-100H ;hossz 16 biten DB 0,0,0,0,0,0,0,0,0,0,0,0 ;többi bájt nem használt ;program kezdete, 100H-ra töltödik be LD SP,100H ;felhasználói veremmutató beállítása, 164 bájt szabad ;Az EXOS-nak saját belsõ verme van a rendszerszegmensben ;EXOS hívások vagy EXOS megszakítás kiszolgálása esetén ;8 bájt kerül felhasználásra a felhasználói verembõl LD HL,HIBA LD (0BFF8H),HL ;EXOS melegindítási rutin címének beállítása ;ez a rutin fut le a Reset gomb egyszeri megnyomásakor ;jelen esetben ugyanazt a kilépési rutint használjuk, ;amit egyéb hibák esetén is. A HIBA rutin felszabadítja ;a programunk által használt memóriát, majd szabályosan ;kilép a villogó ENTERPRISE felírathoz. ;így a reset megnyomásakor a program szabályosan kilép, ;nem történik teljes hidegindítás, így a gépben lévõ ;adatok (pl RAMDISK vagy rendszerbõvítõk) megõrzõdnek LD A,12 ;memória várakozások OUT (191),A ;tiltása (opcionális :-) ;keretszín feketére állítása LD BC,100H+27 ;B=1 írás kódja ;C=27 rendszerváltozó száma (BORDER) LD D,0 ;változó új értéke EXOS 16 ;EXOS változó kezelése CALL VID ;egy videó szegmens igénylése JP NZ,HIBA ;ha nem sikerült, akkor kilépés LD A,C ;kapott szegmens számának LD (VIDS),A ;letárolása OUT (0B3H),A ;szegmens belapozása a 3. lapra ......
Az lenne a kérdésem, hogy az EXOS-al lehetséges-e direktbe karaktereket, szöveget írni a képernyőre.Nem fog menni, mert semmi nincs megnyitva, ez a példa arról szól, hogy a memóriát elkérjük az EXOS-tól, és onnantól kezdve a gép közvetlen programozására rendezkedünk be.
Ezzel próbálkozom, sikertelenül;
LD A,101 ; Csatornaszam - bár fogalmam sincs, hogy mi van megnyitva...ha megvan
Nem fog menni, mert semmi nincs megnyitva, ez a példa arról szól, hogy a memóriát elkérjük az EXOS-tól, és onnantól kezdve a gép közvetlen programozására rendezkedünk be.
Probáld.
Zozo pédaprogramját némiképp módosítva nyitottam egy attributum üzemmódú képernyőt.
Ez működik is, a videómemóriába a pixeladat és színadat területek írásával rendben meg tudom jeleníteni amit szeretnék.
Az lenne a kérdésem, hogy az EXOS-al lehetséges-e direktbe karaktereket, szöveget írni a képernyőre.
Ezzel próbálkozom, sikertelenül;
LD A,101 ; Csatornaszam - bár fogalmam sincs, hogy mi van megnyitva...ha megvan
LD BC, SZHOSSZ
LD DE, SZOVEG
EXOS 8
...
SZOVEG DB 26; kepernyo torlese
DB "FOMENU",10,13,10,13
DB "ELSO SOR",10,13
DB "MASODIK SOR",10,13
DB "HARMADIK SOR",10,13,10,13
DB "NEGYEDIK SOR"
SZHOSSZ EQU $-SZOVEG
SET #101:PLOT 0,640
PRINT #101:"ELSO SOR"
Ajánlom a Zx programok átírás enterprisera SPLoader.txt (http://www.ep128.hu/Ep_Konyv/Specload.txt)
itt az elején felépít egy szöveges felületet. Tisztára mint BASIC-ban.