|  | Routines | 
| Prev: 37604 | Up: Map | Next: 37676 | 
|  | ||||
| Time_Counter | 37631 | DEFB 240,216 | Guessing at the length. | |
| 37633 | DEFB 24,252 | |||
| 37635 | DEFB 156,255 | |||
| 37637 | DEFB 246,255 | |||
| 37639 | DEFB 255,255 | Terminator. | ||
| 
On entry HL contains the time as the LSB, e.g. for 30s HL will be 0030.
 | ||||
| Process_Time | 37641 | PUSH HL | Pushes HL, DE and BC onto the stack. | |
| 37642 | PUSH DE | |||
| 37643 | PUSH BC | |||
| 37644 | LD DE,37631 | Point to Time_Counter. | ||
| Process_Time_Loop | 37647 | LD A,(DE) | Load the next byte pair from the address pointer into BC. | |
| 37648 | LD C,A | |||
| 37649 | INC DE | |||
| 37650 | LD A,(DE) | |||
| 37651 | LD B,A | |||
| 37652 | INC DE | Increase the address pointer by one and stash it on the stack for later. | ||
| 37653 | PUSH DE | |||
| 37654 | LD A,47 | Store 47 in A. | ||
| 
Count "up" from ASCII "0" until the correct representation is reached.
 | ||||
| Process_Time_Char | 37656 | INC A | Increment A by one (so on the first pass A will now contain ASCII "0"). | |
| 37657 | LD D,H | Copy the remaining time into DE. | ||
| 37658 | LD E,L | |||
| 37659 | ADD HL,BC | Adds the remaining time to the 16-bit number held in BC. | ||
| 37660 | JR C,Process_Time_Char | If the carry flag is set loop back to Process_Time_Char. | ||
| 37662 | EX DE,HL | Swap the DE and HL registers. | ||
| 37663 | LD (IX+0),A | Write the processed ASCII number character to the time print buffer. | ||
| 37666 | INC IX | Increment IX by one to process the next character in the time buffer once looped around. | ||
| 37668 | POP DE | Restore the byte pair address pointer from the stack. | ||
| 37669 | INC C | Loop back to Process_Time_Loop until the terminator is reached (255+1 will set the zero flag). | ||
| 37670 | JR NZ,Process_Time_Loop | |||
| 37672 | POP BC | Restores BC, DE and HL from the stack. | ||
| 37673 | POP DE | |||
| 37674 | POP HL | |||
| 37675 | RET | Return. | ||
| Prev: 37604 | Up: Map | Next: 37676 |