![]() |
Load routines |
| Prev: 23831 | Up: Map | Next: 32815 |
|
Used by the routine at 32815.
|
||
| 32768 | INC SP | Place the address 0 on the stack above the current return address, so the Spectrum will reset if there's a loading error |
| 32769 | INC SP | |
| 32770 | EX (SP),HL | |
| 32771 | LD H,0 | |
| 32773 | LD L,H | |
| 32774 | EX (SP),HL | |
| 32775 | DEC SP | |
| 32776 | DEC SP | |
| 32777 | LD A,6 | |
| 32779 | CALL 32785 | Listen for one edge |
| 32782 | RET NC | Return if no edge was found within the time limit |
|
This entry point is also used by the routine at 32815.
|
||
| 32783 | LD A,11 | Wait a bit |
| 32785 | DEC A | |
| 32786 | JR NZ,32785 | |
| 32788 | AND A | Reset the carry flag |
| 32789 | INC B | Have we run out of time to find an edge? |
| 32790 | RET Z | Return with the carry flag reset if so |
| 32791 | LD A,127 | Collect an EAR port reading in bit 6 of A |
| 32793 | IN A,(254) | |
| 32795 | RRA | Move it to bit 5 of A |
| 32796 | AND A | In the analogous ROM routine, the instruction here is 'RET NC', causing a return if BREAK was pressed; in this routine, that behaviour is disabled (pressing BREAK does nothing) |
| 32797 | XOR C | Compare this EAR port reading with the previous one |
| 32798 | AND 32 | |
| 32800 | JR Z,32789 | Jump back if they are the same (i.e. no edge was found) |
| 32802 | LD A,C | Alternate the border colour |
| 32803 | CPL | |
| 32804 | LD C,A | |
| 32805 | AND 7 | |
| 32807 | OR 8 | |
| 32809 | OUT (254),A | |
| 32811 | SCF | Signal: an edge was found within the time limit |
| 32812 | RET | Return with B indicating the time taken to find the edge |
| Prev: 23831 | Up: Map | Next: 32815 |