| Routines

31594: Let Sam out of jail if necessary

Used by the command list at 64764. Does nothing if Sam is not in jail; otherwise sets Sam's bail to some amount that he can afford, and lets him out of jail.
Input
H | 219 (Jailer)
31594 | XOR A | Remove the address of this primary command routine from bytes 8 and 9 of the jailer's buffer, triggering a move to the next command in the command list after we are finished here
31595 | LD L,9
31597 | LD (HL),A
31598 | LD HL,32747 | The police flags are stored at 32747
31601 | BIT 7,(HL) | Is Sam in jail?
31603 | RET Z | Return if not
31604 | LD (HL),A | Clear the police flags
31605 | LD H,A | H=0
31606 | LD DE,(32670) | Collect the number of bucks from 32670
31610 | CALL 61823 | Get a random number in A
31613 | AND 7 | Now HL holds a randomly chosen multiple of 10 between 20 and 90
31615 | ADD A,2
31617 | LD C,A
31618 | ADD A,A
31619 | ADD A,A
31620 | ADD A,C
31621 | ADD A,A
31622 | LD L,A
31623 | SBC HL,DE | Subtract Sam's cash supply from this number
31625 | JR NC,31610 | Jump back to generate another bail amount if Sam's cash supply is too small (which could lead to an infinite loop)
31627 | LD A,C | A=ASCII code for the tens digit of the bail amount
31628 | ADD A,48
31630 | LD (32720),A | Store this at 32720
31633 | LD A,C | Subtract the bail amount from Sam's cash supply
31634 | CALL 28295
31637 | LD A,52 | Message 52: ' THE BAIL WAS ${tens digit}0'
31639 | JP 28357 | Queue this message