OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů

OldCompu nen nikdy dost!

Právě je 29.11.2021, 11:47

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 11 ] 
Autor Zpráva
 Předmět příspěvku: Nove prikazy ve 48 rom
PříspěvekNapsal: 23.07.2021, 20:58 
Offline
Pan Štábní

Registrován: 29.06.2013, 16:52
Příspěvky: 1509
Has thanked: 26 times
Been thanked: 290 times
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.

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Nove prikazy ve 48 rom
PříspěvekNapsal: 24.07.2021, 20:09 
Offline
Pan Generální

Registrován: 22.05.2013, 21:14
Příspěvky: 3215
Bydliště: Bratislava
Has thanked: 326 times
Been thanked: 646 times
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.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Nove prikazy ve 48 rom
PříspěvekNapsal: 25.07.2021, 09:31 
Offline
Pan Generální

Registrován: 16.06.2014, 12:23
Příspěvky: 3407
Bydliště: Jesenice u Prahy
Has thanked: 25 times
Been thanked: 213 times
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 ?

_________________
Diagnóza: Touretteův syndrom, Koprolálie, Dyslexie, Obsedantně kompulzivní porucha.
Kalkulačky: Privileg PR56, TI51-III, TI57, TI58, TI59, TI83, TI-83 Premium CE, TI89
Počítadla: BOBO64, ZX48 plus, DG-88, Didaktik-M, C16, C64C, Amiga 500+, MZ800, MUPID C2A2


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Nove prikazy ve 48 rom
PříspěvekNapsal: 25.07.2021, 09:45 
Offline
Pan Generální

Registrován: 22.05.2013, 21:14
Příspěvky: 3215
Bydliště: Bratislava
Has thanked: 326 times
Been thanked: 646 times
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.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Nove prikazy ve 48 rom
PříspěvekNapsal: 25.07.2021, 14:52 
Offline
Pan Generální
Uživatelský avatar

Registrován: 11.06.2013, 15:27
Příspěvky: 2435
Has thanked: 1755 times
Been thanked: 560 times
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.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Nove prikazy ve 48 rom
PříspěvekNapsal: 27.07.2021, 00:02 
Offline
Pan Štábní

Registrován: 29.06.2013, 16:52
Příspěvky: 1509
Has thanked: 26 times
Been thanked: 290 times
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.

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Nove prikazy ve 48 rom
PříspěvekNapsal: 27.07.2021, 08:26 
Offline
Pan Generální

Registrován: 16.06.2014, 12:23
Příspěvky: 3407
Bydliště: Jesenice u Prahy
Has thanked: 25 times
Been thanked: 213 times
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.

_________________
Diagnóza: Touretteův syndrom, Koprolálie, Dyslexie, Obsedantně kompulzivní porucha.
Kalkulačky: Privileg PR56, TI51-III, TI57, TI58, TI59, TI83, TI-83 Premium CE, TI89
Počítadla: BOBO64, ZX48 plus, DG-88, Didaktik-M, C16, C64C, Amiga 500+, MZ800, MUPID C2A2


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Nove prikazy ve 48 rom
PříspěvekNapsal: 27.07.2021, 14:33 
Offline
Pan Štábní

Registrován: 29.06.2013, 16:52
Příspěvky: 1509
Has thanked: 26 times
Been thanked: 290 times
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.

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Nove prikazy ve 48 rom
PříspěvekNapsal: 27.07.2021, 15:59 
Offline
Kecálek

Registrován: 27.09.2013, 19:59
Příspěvky: 98
Bydliště: Havirov
Has thanked: 0 time
Been thanked: 11 times
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.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Nove prikazy ve 48 rom
PříspěvekNapsal: 27.07.2021, 16:02 
Offline
Kecálek

Registrován: 27.09.2013, 19:59
Příspěvky: 98
Bydliště: Havirov
Has thanked: 0 time
Been thanked: 11 times
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?


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Nove prikazy ve 48 rom
PříspěvekNapsal: 27.07.2021, 17:31 
Offline
Pan Štábní

Registrován: 12.05.2013, 22:24
Příspěvky: 1192
Bydliště: u Prahy
Has thanked: 23 times
Been thanked: 263 times
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).


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 11 ] 

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz