| Dynamite Dan | Routines |
| Prev: FEAB | Up: Map | Next: FF2A |
| FEFA | EX AF,AF' | Save the flags | ||
| FEFB | JR NZ,$FF02 | Check if this is the flag byte | ||
| FEFD | LD (IX+$00),L | This is data, store this byte and move on | ||
| FF00 | JR $FF0C | |||
| FF02 | RL C | Remember the carry flag | ||
| FF04 | XOR L | Check the flag byte is correct | ||
| FF05 | NOP | The corresponding routine in the ROM would exit here - in this custom loader, the flag byte is ignored | ||
| FF06 | LD A,C | Restore carry flag | ||
| FF07 | RRA | |||
| FF08 | LD C,A | |||
| FF09 | INC DE | Length should not be decreased for the flag byte | ||
| FF0A | JR $FF0E | Move on to get next byte | ||
| FF0C | INC IX | Point to next byte | ||
| FF0E | DEC DE | Decrease length | ||
| FF0F | EX AF,AF' | Restore flags | ||
| FF10 | LD B,$E3 | Set timing constant | ||
|
This entry point is used by the routine at FEAB.
|
||||
| FF12 | LD L,$01 | Clear bits in the byte to collect | ||
| FF14 | CALL $FF4E | Get a tape edge | ||
| FF17 | RET NC | Return if it took too long | ||
| FF18 | LD A,$ED | See how quickly an edge was found. If less than ED, a 0 was found, otherwise a 1 | ||
| FF1A | CP B | |||
| FF1B | RL L | Store the relevant bit | ||
| FF1D | LD B,$E1 | Set timing constant for next bit | ||
| FF1F | JP NC,$FF14 | Jump back while there are still bits to retrieve | ||
| FF22 | LD A,H | Update "parity matching" byte in H | ||
| FF23 | XOR L | |||
| FF24 | LD H,A | |||
| FF25 | LD A,D | Any more bytes to load? | ||
| FF26 | OR E | |||
| FF27 | JR NZ,$FEFA | Loop back if there are | ||
| FF29 | RET | All done | ||
| Prev: FEAB | Up: Map | Next: FF2A |