Technician Ted | Routines |
Prev: AE77 | Up: Map | Next: B0DC |
Used by the routine at AA65.
|
||||
AF5D | LD HL,$A45B | |||
Check for TUNE ON / OFF, and toggle the status if pressed
|
||||
AF60 | LD A,$BF | |||
AF62 | IN A,($FE) | |||
AF64 | OR $E0 | |||
AF66 | INC A | |||
AF67 | JR Z,$AF75 | |||
AF69 | BIT 1,(HL) | |||
AF6B | RES 1,(HL) | |||
AF6D | JR Z,$AF77 | |||
AF6F | LD A,(HL) | |||
AF70 | XOR $01 | |||
AF72 | LD (HL),A | |||
AF73 | JR $AF77 | |||
AF75 | SET 1,(HL) | |||
AF77 | LD HL,$A42A | |||
AF7A | LD A,(HL) | |||
AF7B | SUB $08 | |||
AF7D | AND $18 | |||
AF7F | LD (HL),A | |||
Move conveyor belts
|
||||
AF80 | LD E,A | |||
AF81 | LD D,$00 | |||
AF83 | LD IX,$7FD0 | |||
AF87 | PUSH DE | |||
AF88 | CALL $B398 | |||
AF8B | POP DE | |||
AF8C | LD A,$18 | |||
AF8E | SUB E | |||
AF8F | LD E,A | |||
AF90 | CALL $B398 | |||
AF93 | LD A,($A461) | |||
AF96 | LD ($A462),A | |||
Advance all moving objects on by one frame
|
||||
AF99 | LD IX,$7E00 | |||
AF9D | LD A,(IX+$00) | |||
AFA0 | OR (IX+$01) | |||
AFA3 | JR Z,$AFB9 | |||
AFA5 | LD HL,$A462 | |||
AFA8 | SRL (HL) | |||
AFAA | JR C,$AFB2 | |||
AFAC | CALL $B82E | |||
AFAF | CALL $BAE5 | |||
AFB2 | LD DE,$0021 | |||
AFB5 | ADD IX,DE | |||
AFB7 | JR $AF9D | |||
AFB9 | LD A,($A439) | Get game flags | ||
AFBC | BIT 2,A | Are we moving automatically? | ||
AFBE | JR Z,$AFC7 | Move on if so | ||
AFC0 | CALL $BD9E | Update automatic movement by one frame | ||
AFC3 | AND A | |||
AFC4 | PUSH AF | |||
AFC5 | JR $B009 | |||
AFC7 | CALL $BB17 | |||
AFCA | JR NC,$AFE8 | |||
AFCC | LD HL,$0210 | |||
AFCF | LD ($A400),HL | |||
AFD2 | LD HL,($A40A) | |||
AFD5 | LD BC,($A408) | |||
AFD9 | ADD HL,BC | |||
AFDA | EX DE,HL | |||
AFDB | LD HL,($A406) | |||
AFDE | LD A,($A40F) | |||
AFE1 | LD C,A | |||
AFE2 | CALL $B7CC | |||
AFE5 | OR $FF | |||
AFE7 | SCF | |||
AFE8 | RET Z | |||
AFE9 | PUSH AF | |||
Check for PAUSE. If A-G is pressed, loop around until it isn't
|
||||
AFEA | LD A,$FD | |||
AFEC | IN A,($FE) | |||
AFEE | CPL | |||
AFEF | AND $1F | |||
AFF1 | JR Z,$B009 | |||
AFF3 | LD A,$32 | |||
AFF5 | DJNZ $AFF5 | |||
AFF7 | DEC A | |||
AFF8 | JR NZ,$AFF5 | |||
AFFA | LD A,$02 | |||
AFFC | IN A,($FE) | |||
AFFE | CPL | |||
AFFF | AND $1F | |||
B001 | JR Z,$AFF3 | |||
B003 | XOR A | Set FRAMES to 0 | ||
B004 | LD ($5C78),A | |||
B007 | JR $AFEA | |||
B009 | LD A,$40 | |||
B00B | LD ($A441),A | |||
B00E | LD IX,$7E00 | |||
B012 | LD L,(IX+$00) | |||
B015 | LD H,(IX+$01) | |||
B018 | LD A,H | |||
B019 | OR L | |||
B01A | JR Z,$B031 | |||
B01C | LD C,(IX+$07) | |||
B01F | LD B,(IX+$08) | |||
B022 | LD D,(IX+$06) | |||
B025 | BIT 7,D | |||
B027 | CALL $B3E4 | |||
B02A | LD DE,$0021 | |||
B02D | ADD IX,DE | |||
B02F | JR $B012 | |||
B031 | LD IX,$7FD0 | |||
B035 | LD B,$02 | |||
B037 | PUSH BC | |||
B038 | LD A,(IX+$00) | |||
B03B | INC IX | |||
B03D | AND A | |||
B03E | JR Z,$B057 | |||
B040 | LD ($A455),A | |||
B043 | LD L,(IX+$01) | |||
B046 | LD A,(IX+$02) | |||
B049 | ADD A,$C0 | |||
B04B | LD H,A | |||
B04C | LD A,$08 | |||
B04E | CALL $B409 | |||
B051 | LD C,$03 | |||
B053 | ADD IX,BC | |||
B055 | JR $B038 | |||
B057 | POP BC | |||
B058 | DJNZ $B037 | |||
B05A | LD HL,($A406) | |||
B05D | LD BC,$0210 | |||
B060 | LD A,($A422) | |||
B063 | CP $30 | |||
B065 | JR NZ,$B068 | |||
Special case for room 30 - display "Game over"
|
||||
B067 | INC B | |||
B068 | LD D,B | |||
B069 | OR B | |||
B06A | CALL $B3E4 | |||
B06D | POP AF | |||
B06E | RET C | |||
B06F | LD A,$10 | |||
B071 | LD ($A441),A | |||
B074 | LD A,($5C78) | Get FRAMES variable | ||
B077 | AND A | |||
B078 | JR Z,$B074 | |||
B07A | CALL $B440 | |||
B07D | LD IX,$7E00 | |||
B081 | LD L,(IX+$00) | |||
B084 | LD H,(IX+$01) | |||
B087 | LD A,H | |||
B088 | OR L | |||
B089 | JR Z,$B09F | |||
B08B | LD A,(IX+$08) | |||
B08E | INC A | |||
B08F | LD ($A455),A | |||
B092 | LD A,(IX+$07) | |||
B095 | CALL $B803 | |||
B098 | LD DE,$0021 | |||
B09B | ADD IX,DE | |||
B09D | JR $B081 | |||
B09F | LD A,($A45B) | |||
B0A2 | BIT 2,A | |||
B0A4 | JR Z,$B0B1 | |||
B0A6 | LD HL,$A42E | |||
B0A9 | LD A,($A42F) | |||
B0AC | ADD A,(HL) | |||
B0AD | LD (HL),A | |||
B0AE | CALL C,$B0DC | |||
B0B1 | LD HL,$A438 | |||
B0B4 | LD A,($A440) | |||
B0B7 | ADD A,(HL) | |||
B0B8 | LD (HL),A | |||
B0B9 | SUB $7D | |||
B0BB | CALL NC,$B770 | |||
Check for ABORT (CAPS + SPACE). If pressed, restart the game, otherwise loop back
|
||||
B0BE | LD A,$7F | |||
B0C0 | IN A,($FE) | |||
B0C2 | RRA | |||
B0C3 | JP C,$AF5D | |||
B0C6 | LD A,$FE | |||
B0C8 | IN A,($FE) | |||
B0CA | RRA | |||
B0CB | JP C,$AF5D | |||
B0CE | LD A,$BF | |||
B0D0 | IN A,($FE) | |||
B0D2 | OR $EE | |||
B0D4 | INC A | |||
B0D5 | JP NZ,$AF5D | |||
B0D8 | POP HL | |||
B0D9 | JP $AA81 |
Prev: AE77 | Up: Map | Next: B0DC |