To USR byla funkce (na rozdíl od příkazu nešla spustit samostatně) která spustila strojový kód od zadané adresy a po jeho skončení vrátila hodnotu myslím dvojregistru BC (kdyžtak mě opravte), a pokud jsí jí nepotřeboval (jako třeba nechtěl vypsat na obrazovku tím PRINT USR), tak se musela někam „zamést“. No a tím RANDOMIZE se zametla do nastavení generátoru náhodných čísel. Stejně tak bys mohl použít třeba nějakou nepotřebnou proměnnou: LET null = USR 65000
A pokud člověk chtěl ušetřit pár bajtů paměti, tak místo 65000 napsal VAL"65e3" ;-)
Přesně tak jak píše kolega pode mnou, USR vracela hodnotu, tudíž RUN USR nebo GOTO USR bylo možné použít ovšem člověk musel (a nebo to tak udělal schválně) počítat s tím že po návratu do Basicu se příkaz RUN/GOTO provedl s vrácenou hodnotou – tedy pokud se vůbec s návratem do Basicu počítalo. Typicky u her existoval návrat pouze přes reset nebo vytažení ze zástrčky.
Navíc, při PRINT se „usr“ vykonávalo v „print“ rutinách a v tu chvíli byly tuším exx-ované registry (tedy používalo se bc' místo bc, …). S tím, že obsah původních bc,de,hl potřeboval být zachován. Což mohlo být nebezpečné, pokud pak ten volaný asm program sám využíval exx (jako dočasné zálohy registrů) či volal ROM rutiny které použily exx, resp. předpokládaly nějaký přesný stav.
Pokud se nemýlím – zmatení nevylučuji, už je to nějaké doba, jestli to bylo u PRINT či LET či někde jinde, musel bych se znovu prohrabat výpisem ROMky. Ale něco takového tam bylo.
RANDOMIZE byl v tomto ohledu nejméně „agresivní“.
Ano, pokud to byl „random“ pro nějakou hru, resp. všude tam, kde bylo celkem jedno jak kvalitní ta pseudonáhodná hodnota bude.
Ale to už fakt bylo jednodušší použít LET či něco jiného. Pokud se nemohl obsadit RANDOMIZE. V exx-ovaném stavu to zůstane (dostane se do naší rutiny) jen při RST10, tedy u tisku znaku (či tokenu) na otevřený kanál (CURCHL). Při PRINT. Nad vše ostatní je ok, k dispozici.
Případně v BC vracet aktuální (SEED) hodnotu /pak je problém jen při nulové, kdy se pro randomize 0 použije hodnota aktuálního 20ms čítače (FAMES) a ne „0“/.
Těch možností je mnoho.