Chase H.Q. | Routines |
Prev: 8014 | Up: Map | Next: 81DD |
Used by the routine at load_stage.
|
||||
tape_load_5C00 | 80B9 | LD IX,$5C00 | Setup to load a block at $5C00 of length $1AF0 | |
80BD | LD DE,$1AF0 | |||
This entry point is used by the routine at start. IX = address DE = bytes
|
||||
tape_load | 80C0 | INC D | D++ | |
80C1 | LD A,$98 | A = 152 | ||
80C3 | SCF | Set carry flag | ||
80C4 | EX AF,AF' | bank | ||
80C5 | DEC D | D-- -- weird inc then dec | ||
80C6 | DI | Disable interrupts | ||
80C7 | LD A,$08 | Set MIC bit (deactivates MIC) | ||
80C9 | OUT ($FE),A | output | ||
80CB | IN A,($FE) | input | ||
80CD | RRA | why shift? | ||
80CE | AND $20 | Check EAR input bit 6 | ||
80D0 | OR $02 | set border? | ||
80D2 | LD C,A | |||
80D3 | CP A | A == A ? | ||
tape_load_5C00_0 | 80D4 | RET NZ | ||
tape_load_5C00_1 | 80D5 | CALL sub_814b | Call sub_814b | |
80D8 | JR NC,tape_load_5C00_0 | |||
80DA | LD HL,$0415 | Delay time | ||
tape_load_5C00_2 | 80DD | DJNZ tape_load_5C00_2 | Delay for B iterations -- is B not initialised? | |
80DF | DEC HL | HL-- | ||
80E0 | LD A,H | Loop while HL > 0 | ||
80E1 | OR L | |||
80E2 | JR NZ,tape_load_5C00_2 | |||
80E4 | CALL sub_8147 | Call sub_8147 | ||
80E7 | JR NC,tape_load_5C00_0 | |||
tape_load_5C00_3 | 80E9 | LD B,$9C | B = 156 | |
80EB | CALL sub_8147 | Call sub_8147 | ||
This entry point is used by the routine at entrypt_48k.
|
||||
tape_load_5C00_4 | 80EE | JR NC,tape_load_5C00_0 | ||
80F0 | LD A,$C6 | A = 198 | ||
80F2 | CP B | |||
80F3 | JR NC,tape_load_5C00_1 | |||
80F5 | INC H | |||
80F6 | JR NZ,tape_load_5C00_3 | |||
tape_load_5C00_5 | 80F8 | LD B,$C9 | B = 201 | |
80FA | CALL sub_814b | Call sub_814b | ||
80FD | JR NC,tape_load_5C00_0 | |||
80FF | LD A,B | |||
8100 | CP $D4 | 212 | ||
8102 | JR NC,tape_load_5C00_5 | |||
8104 | CALL sub_814b | Call sub_814b | ||
8107 | RET NC | |||
8108 | LD A,C | A = C ^= 3 | ||
8109 | XOR $03 | |||
810B | LD C,A | |||
810C | LD H,$00 | |||
810E | LD B,$B0 | B = 176 | ||
8110 | JR tape_load_5C00_11 | |||
tape_load_5C00_6 | 8112 | EX AF,AF' | ||
8113 | JR NZ,tape_load_5C00_8 | wuuuut? | ||
8115 | JR NZ,tape_load_5C00_7 | |||
tape_load_5C00_7 | 8117 | LD (IX+$00),L | ||
811A | JR tape_load_5C00_9 | |||
tape_load_5C00_8 | 811C | RL C | ||
811E | XOR L | A ^= L | ||
811F | RET NZ | |||
8120 | LD A,C | RR C and copy to A? | ||
8121 | RRA | |||
8122 | LD C,A | |||
8123 | INC DE | DE++ | ||
8124 | JR tape_load_5C00_10 | |||
tape_load_5C00_9 | 8126 | INC IX | ||
tape_load_5C00_10 | 8128 | DEC DE | ||
8129 | EX AF,AF' | |||
812A | LD B,$B2 | B = 178 | ||
tape_load_5C00_11 | 812C | LD L,$01 | ||
tape_load_5C00_12 | 812E | CALL sub_8147 | Call sub_8147 | |
8131 | RET NC | |||
8132 | LD A,$C8 | A = 200 | ||
8134 | CP B | |||
8135 | RL L | |||
8137 | LD B,$B0 | B = 176 | ||
8139 | JP NC,tape_load_5C00_12 | |||
813C | LD A,H | A = H ^ L | ||
813D | XOR L | |||
813E | LD H,A | Save A | ||
813F | LD A,D | Loop while DE > 0 | ||
8140 | OR E | |||
8141 | JR NZ,tape_load_5C00_6 | |||
8143 | LD A,H | Restore A | ||
8144 | CP $01 | Is it 1? | ||
8146 | RET | Return (with flags?) | ||
sub_8147 | 8147 | CALL sub_814b | ||
814A | RET NC | |||
sub_814b | 814B | LD A,$16 | Delay loop of 22 iterations | |
tape_load_5C00_13 | 814D | DEC A | ||
814E | JR NZ,tape_load_5C00_13 | |||
8150 | AND A | Clear carry flag | ||
tape_load_5C00_14 | 8151 | INC B | what's in B? | |
8152 | RET Z | Return if zero (failure) | ||
8153 | LD A,$7F | %01111111 | ||
8155 | IN A,($FE) | Read from port | ||
8157 | RRA | |||
8158 | RET Z | |||
8159 | XOR C | A ^= C | ||
815A | AND $20 | check EAR input bit 6 | ||
815C | JR Z,tape_load_5C00_14 | loop if zero | ||
815E | LD A,C | A = C = ~C | ||
815F | CPL | |||
8160 | LD C,A | |||
8161 | AND $02 | |||
8163 | OR $08 | Set MIC bit (deactivate MIC) | ||
8165 | OUT ($FE),A | Output | ||
8167 | SCF | Set carry | ||
8168 | RET | Return (success) | ||
rewind_tape | 8169 | DEFB $70 | attr? | |
816A | DEFW $F001 | Screen position (8,64) | ||
816C | DEFW $5901 | Screen attribute position (1,8) | ||
816E | DEFM "REWIND TAPE TO START OF SIDE ",$B2 | "REWIND TAPE TO START OF SIDE 2" | ||
start_tape | 818C | DEFB $68 | attr? | |
818D | DEFW $F04B | Screen position (88,96) | ||
818F | DEFW $598B | Screen attribute position (11,12) | ||
8191 | DEFM "START TAP",$C5 | "START TAPE" | ||
819B | DEFB $68 | attr? | ||
819C | DEFW $F089 | Screen position (72,128) | ||
819E | DEFW $5A09 | Screen attribute position (9,16) | ||
searching_for_n | 81A0 | DEFM "SEARCHING FOR ",$B1 | "SEARCHING FOR 1" | |
81AF | DEFB $68 | attr? | ||
81B0 | DEFW $F0CD | Screen position (104,160) | ||
81B2 | DEFW $5A8D | Screen attribute position (13,20) | ||
found_n | 81B4 | DEFM "FOUND ",$B1 | "FOUND 1" | |
stop_the_tape_press_gear | 81BB | DEFB $70 | attr? | |
81BC | DEFW $F04A | Screen position (80,96) | ||
81BE | DEFW $598A | Screen attribute position (10,12) | ||
81C0 | DEFM "STOP THE TAP",$C5 | "STOP THE TAPE" | ||
81CD | DEFB $60 | attr? | ||
81CE | DEFW $F08B | Screen position (88,128) | ||
81D0 | DEFW $5A0B | Screen attribute position (11,16) | ||
81D2 | DEFM "PRESS GEA",$D2 | "PRESS GEAR" |
Prev: 8014 | Up: Map | Next: 81DD |