OldComp.cz
https://oldcomp.cz/

Nove prikazy ve 48 rom
https://oldcomp.cz/viewtopic.php?f=124&t=10225
Stránka 11

Autor:  VELESOFT [ 23.07.2021, 20:58 ]
Předmět příspěvku:  Nove prikazy ve 48 rom

Rad bych do 48 rom pridal nejake nove prikazy basicu a to klidne bez parametru, tedy neco jako CLS, STOP... Muzete me nekdo nasmerovat kde konkretne udelat nejake zmeny ? Idealne nejaky priklad kratkeho prikazu, ktery zavola CALL xx a pak se vrati do beziciho basic programu. Je to dost dulezite. Dekuji za jakoukoli pomoc.

Autor:  Busy [ 24.07.2021, 20:09 ]
Předmět příspěvku:  Re: Nove prikazy ve 48 rom

To je velmi jednoduche. Akonahle romka najde nieco, co sa jej nepaci, tak skoci na error handler, ktoreho adresa je ulozena na zasobniku (ukazuje na nu sysvar ERRSP) Standartne je tam #1303 vypis chyboveho hlasenia, ale toto si mozes na zaciatku programu predefinovat na vlastny handler.

Pokial chces nejaky novy prikaz, tak novy vlastny error handler by mal tento prikaz osetrit. Ak sa jedna o novy prikaz, tak ho vykona a skoci na pokracovanie interpretacie basicu, a ak je to cokolvek ine, tak skoci na defaultny handler #1303.

Inicializacia: Na adresu kam ukazuje ERRSP uloz adresu vlastneho handlera
Vlastny handler by mal potom robit:
- Podla kodu na ERRNR otestovat ci je to chyba Nonsense in basic. Ak nie, skok na #1303.
- Podla CHADD (ukazuje kde v basicu nastala chyba) skontroluje, ci je to nas novy prikaz. Ak nie, skok na #1303.
- Teraz je jasne ze je to nas novy prikaz. Nasleduje nacitanie jeho parametrov (ak ziadne nema, tak nic netreba robit).
- Podla BIT 7,(IY+1) skontrolue ci sa kontroluje syntax (bit=0) alebo uz je to ostry beh programu (bit=1).
- Ak sa jedna o ostry beh, vykona sa samotna konkretna cinnost daneho prikazu
- Ukoncenie prikazu: Na zasobnik sa PUSHne adresa handlera a skoci sa na pokracovanie basicu #1B76.

Pri chybe romka urobi (principialne) toto:
ld (ERRNR),kod_chyby - 1 ; #FF=OK
ld sp,(ERRSP)
ret

Posledny RET zo zasobnika odstrani adresu nasho handlera skoci nan.
Preto je treba na konci handlera spravit
ld hl,handler
push hl
jp #1B76

Takto su robene mnohe rozsirenia basicu o nove prikazy, napriklad legendarny PRODOS basic.

Autor:  danhard [ 25.07.2021, 09:31 ]
Předmět příspěvku:  Re: Nove prikazy ve 48 rom

Měl bych několik dotazů.
Basic ZX48 zadává klíčová slova jednou klávesou a ukládají se v programu jako jeden byte v oblasti nevyužité znaky ?
Kolik je tam ještě nevyužitých pozic ? Jak by se nové příkazy zadávaly v editaci ?
Je nějaké volné místo v ROMce na záplaty ?

Autor:  Busy [ 25.07.2021, 09:45 ]
Předmět příspěvku:  Re: Nove prikazy ve 48 rom

danhard píše:
Měl bych několik dotazů.
Basic ZX48 zadává klíčová slova jednou klávesou a ukládají se v programu jako jeden byte v oblasti nevyužité znaky ?
Kukni sem:
https://busy.speccy.cz/tvorba/kodex.htm
V stlpci ASCII je uvedene, aky znak alebo prikaz sa nachadza pod danym kodom.
Kody 144 az 164 su UDG.
danhard píše:
Kolik je tam ještě nevyužitých pozic ?
Nie vela. Nevyuzite pozicie su oznacene ako (nic).
danhard píše:
Jak by se nové příkazy zadávaly v editaci ?
Zvykne sa to robit tak, ze nove prikazy su nejaky taky znak, alebo nim zacinaju, ktory je mozne napisat aj pri kurzore K. Najcastejsie to zvykne byvat bodka (nase typicke bodkove prikazy pre bsdos, esxdos, residos...) ale uz som videl pouzitie aj hviezdicky. V mojej bsromke som ako nove prikazy vyuzil cely rad znakov ktore sa pisu cez symbol shift.
danhard píše:
Je nějaké volné místo v ROMce na záplaty ?
Ano, v originalnej ZX romke skoro cely kilobajt pred znakovym fontom na konci.

Autor:  SCjoe [ 25.07.2021, 14:52 ]
Předmět příspěvku:  Re: Nove prikazy ve 48 rom

danhard píše:
Je nějaké volné místo v ROMce na záplaty ?

Tak pravil klasik:

Kód:
Od (vratane) - do (nevratane) v hexa.

Original Spektrum rom (gumak, plusko, delta):
0013-0018
0025-0028
002B-0030
005F-0066
04AA-04C2
386E-3D00

Spektrum 128k rom (rom 0)
0013-0018
0025-0028
002B-0030
005F-0066
04AA-04C2
3BE1-3C01
3C97-3D00

Spektrum 128k rom (rom 1)
000B-0010
0014-0018
001C-0020
0024-0028
2F15-2F35
3FA6-3FFF

BS rom 140
3C97-3D00 (rezervovanie pre rozsirenie BSDOS)

Ked som raz potreboval nainstalovat nejaku rutinku
do romky, tak som na tu chvilku obetoval
cast rutinky prikazu DRAW co kresli obluky.

Busy.

Autor:  VELESOFT [ 27.07.2021, 00:02 ]
Předmět příspěvku:  Re: Nove prikazy ve 48 rom

Dnes uz ale nema moc smysl omezovat se jen na 16kB romky a veskere upravy pak vtesnavat do nevyuziteho mista. Treba MB02,MB03 ci Divmmc maji dost velkou ramku, ktera zx rom funkcne muze nahradit. Tady by se dalo uz doslova kouzlit.

Autor:  danhard [ 27.07.2021, 08:26 ]
Předmět příspěvku:  Re: Nove prikazy ve 48 rom

Mě šlo spíš o úpravy stávající ROMky, třeba pro obsluhu zaintegrované SD karty a rozšířené RAM v nějakém klonu.

Autor:  VELESOFT [ 27.07.2021, 14:33 ]
Předmět příspěvku:  Re: Nove prikazy ve 48 rom

danhard píše:
Mě šlo spíš o úpravy stávající ROMky, třeba pro obsluhu zaintegrované SD karty a rozšířené RAM v nějakém klonu.


To vse uz klony maji. Ale vetsinou se pouziva 32kB zx rom ala zx128 kde misto 128 basicu je nova rozsirena rom, nebo 64kB rom, kde je 128rom+48rom+nova romka+trdos rom.

Autor:  azorasoft [ 27.07.2021, 15:59 ]
Předmět příspěvku:  Re: Nove prikazy ve 48 rom

VELESOFT píše:
To vse uz klony maji. Ale vetsinou se pouziva 32kB zx rom ala zx128 kde misto 128 basicu je nova rozsirena rom, nebo 64kB rom, kde je 128rom+48rom+nova romka+trdos rom.


Je tam nějaké omezení nebo je to pružné? Dá se třeba přepínat mezi 16 stránkama a mít tak 256kB ROM a nacpat do toho nějaký hypersuperultra Basic? Vím matně, že jsou tam nějaké mapovací body na které když se skočí tam se přepne do jiné ROMky, ale nevím jak ten mechanismus přesně funguje.

Autor:  azorasoft [ 27.07.2021, 16:02 ]
Předmět příspěvku:  Re: Nove prikazy ve 48 rom

Busy píše:
To je velmi jednoduche. Akonahle romka najde nieco, co sa jej nepaci, tak skoci na error handler, ktoreho adresa je ulozena na zasobniku (ukazuje na nu sysvar ERRSP) Standartne je tam #1303 vypis chyboveho hlasenia, ale toto si mozes na zaciatku programu predefinovat na vlastny handler.


Co kdybych to nechtěl dělat takhle "škaredě" přes errorhandler, ale chtěl bych ty nové příkazy zaintegrovat přímo do interpreteru Basicu?

Autor:  dex [ 27.07.2021, 17:31 ]
Předmět příspěvku:  Re: Nove prikazy ve 48 rom

Tak to uděláš stejně.

Basic prohledává seznam příkazů, dokud nedojde na konec.
Prohledá ty, k nimž má kód tokenu, když žádný nenajde, skočí "dál".
"Dál" znamená, že se buď pokračuje v prohledávání seznamu, který jsem rozšířil, nebo dojde na konec a vyvolá chybovou hlášku.
Takže na tom nic ošklivého není, je to správné a systémové řešení.

jediné, co můžeš, je rozšířit tabulku tokenů - ale není už kam (i příkazy PLAY a SPECTRUM ve 128k verzi dělají problémy).

Stránka 11 Všechny časy jsou v UTC + 1 hodina [ Letní čas ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/