Fun with RANDOMIZE USR

Y'know, other stuff, Sinclair related.
equinox
Dynamite Dan
Posts: 1052
Joined: Mon Oct 08, 2018 1:57 am
Location: SE England

Re: Fun with RANDOMIZE USR

Post by equinox »

WhatHoSnorkers wrote: Thu Oct 19, 2023 6:38 am I bought Xcel as I wanted to play it, and it's "distribution denied". I played it once in 1990 or so and it intrigued me. Of course, the tape doesn't work...
The game is fairly bad. I think we had a long discussion about it before, because you have a big universe of "n" planets and you have to pick the correct ones and play a maze and space invaders. There is a savage time limit so unless you guess amazingly well you are going to have a bad time. -- But the tape loading is truly great, it's an experience. Weird colour stripes and that "peppering" moment when it suddenly blasts the logo onto the screen. This thing was made to test emulators.
AndyC
Dynamite Dan
Posts: 1408
Joined: Mon Nov 13, 2017 5:12 am

Re: Fun with RANDOMIZE USR

Post by AndyC »

ParadigmShifter wrote: Wed Oct 18, 2023 11:58 pm Many will depend on what is currently in registers though and I don't know enough about BASIC to know if the register contents will be consistent or not.
Probably reasonably predictable. After all you will have always just run the code for decoding a USR instruction, which will probably have caused most of the registers to get into a knowable state.
User avatar
Oloturia
Manic Miner
Posts: 476
Joined: Sat Jan 15, 2022 9:11 pm

Re: Fun with RANDOMIZE USR

Post by Oloturia »

equinox wrote: Thu Oct 19, 2023 4:52 am God, how did I not see this EXCELLENT thread previously?
Mate, for me, it was OUT, which is much more mysterious -- because we know what USR does, that's just saying "run a piece of code that I put at this address" (and if there is no code, then keep cycling through the zero 0...0...0... until you find some. Even if it's USR 0 reboot.)
OUT is much more subtle and bizarre. I used to mess with random numbers there, as a kid, and I will never forget the time when I managed to create the "opening menu" (Tape loader, BASIC, Calculator...) but all broken and crazy and green. Thing is, you can't do it twice. Even if you remembered the numbers. It's all connected to what the hell was going on at that millisecond. OUT is magic.

OUTing is also a good way to generate the "pyjama stripes". If you don't know what I'm saying then you haven't OUTed enough.

Later I graduated to "deleting every file I didn't personally like" and I screwed up the Windows 95 PC pretty bad. (I didn't like DLLs much.) I remember having to call some ATI hotline "please help, how do we get back from 16 colours to 256 colours again"...
I've never tried OUT, after my brother's scolding I never tried to play little hacker again :\
Also, lacking a proper BASIC manual for me there were some taboo commands like CAT (my bro said "it's for the disk drive and we don't have one"), I really wanted to see that and play with that CAT, I was disappointed when I discovered that the command isn't about the feline (it isn't, eh?).

Anyway this is my first try... unfortunately I forgot to write down the values before the screen was filled with these two patterns.
Image

Image

The second has better visuals than many games.
User avatar
Oloturia
Manic Miner
Posts: 476
Joined: Sat Jan 15, 2022 9:11 pm

Re: Fun with RANDOMIZE USR

Post by Oloturia »

equinox wrote: Thu Oct 19, 2023 4:59 am Load the game "Xcel" (no fastloader, no emulator bullsh*t), you will enjoy it.
I played it but unfortunately a pirat... aheh... a try-before-you-buy copy, and the pira... aheh... the guys that converted it removed the custom loader :(
User avatar
lister_of_smeg
Microbot
Posts: 145
Joined: Thu Nov 16, 2017 1:44 pm

Re: Fun with RANDOMIZE USR

Post by lister_of_smeg »

Chuntey field distortion on demand ;)

Code: Select all

RANDOMIZE USR 2054
User avatar
Van_Dammesque
Manic Miner
Posts: 435
Joined: Sat Jul 11, 2020 12:09 pm

Re: Fun with RANDOMIZE USR

Post by Van_Dammesque »

equinox wrote: Thu Oct 19, 2023 4:57 am Speccy experts know that USR 1300, 1301, 1302... through 1307 will produce pseudo loading stripes in different colours. Truly each one is a different colour. But beware, I dunno if it's corrupting anything.
I remember a thread like I started I think on WoS and was told the fake loading was the rest of the ROM being read probably continuing into the RAM.
User avatar
lister_of_smeg
Microbot
Posts: 145
Joined: Thu Nov 16, 2017 1:44 pm

Re: Fun with RANDOMIZE USR

Post by lister_of_smeg »

Van_Dammesque wrote: Thu Oct 19, 2023 12:40 pm I remember a thread like I started I think on WoS and was told the fake loading was the rest of the ROM being read probably continuing into the RAM.
It'll be determined by whatever the values of the DE (length) and IX (start address) registers contain at the time.
User avatar
ParadigmShifter
Manic Miner
Posts: 670
Joined: Sat Sep 09, 2023 4:55 am

Re: Fun with RANDOMIZE USR

Post by ParadigmShifter »

If you RANDOMIZE USR 1218 that calls the proper save routine (headerless though) and it appears to be saving 23770 bytes from address 980 when I try that. 1331 is right in the middle of that routine.

Main bit saves DE bytes from IX I did not check if different entry points adjust DE and IX before the main saving loop starts.

Easy to check in an emulator anyway.

With the help of the ROM disassembly it's fairly easy to work out what is happening anyway, this is well commented

https://skoolkid.github.io/rom/dec/maps/all.html#1507

And it's far easier to read ASM than to write it :) Even I used to debug stuff on processors I had no idea how the assembler opcodes worked fairly easily (RS3000 on PS1 and x86 for device drivers on PC). RS3000 was a bit silly though where if it did a jump it also executed the next instruction before it took the jump.
Post Reply