Prev: 954E Up: Map Next: 959B
9579: Get Random Number
Input
A A random number between 00-34
The R register is incremented every instruction, providing a pseudo-random value.
GetRandomNumber 9579 LD A,R H=R.
957B LD H,A
WasteTime_Loop_1 957C DEC A Count down to zero from the refresh value.
957D JR NZ,WasteTime_Loop_1
957F LD A,R L=R.
9581 LD L,A
9582 LD DE,($5C79) HL+=*FRAMES+01.
9586 ADD HL,DE
9587 LD A,%00111111 Keep only the lower 6 bits of H.
9589 AND H
958A LD H,A
958B LD A,(HL) Load the byte from the ZX Spectrum ROM pointed to by HL, store it in H.
958C LD H,A
WasteTime_Loop_2 958D DEC A Count down to zero from the ZX Spectrum ROM byte value.
958E JR NZ,WasteTime_Loop_2
Ensure the value in A is in the range 00-34.
9590 LD A,H A=H.
9591 LD H,$34 H=34.
GetRandomNumber_Loop 9593 SUB H Subtract 34 from A.
9594 JR Z,GetRandomNumber_Loop Jump back to GetRandomNumber_Loop if the result is zero.
9596 CP $35 Jump back to GetRandomNumber_Loop if the result is higher than, or equal to 35.
9598 JR NC,GetRandomNumber_Loop
959A RET Return.
Prev: 954E Up: Map Next: 959B