The Past Master Club

ZX81 LOAD CODE 0340:
0340 CD A8 03  CALL 03A8 Carry = 1 if no name/tail.
0343 CB 12    RL D   Make bit 7 of D = 1/high
0345 CB 0A    RRC D   if no name/tail given.
0347 CD 4C 03 ,--------->CALL 034C Wait for silent or RET to DOS ==>
034A 18 FB   ^---------<JR 0347 period.
034C 0E 01   |   LD C 01 Start of 'read a
034E 06 00   | ,------->LD B 00 byte' routine.
0350 3E 7F   | |     ,->LD A 7F  
0352 DB FE   | | |  IN A (FE) Flash
0354 D3 FF   | | |  OUT (FF) A TV, check
0356 1F     | | |  RRA     keyboard.
0357 30 49   | | |  JR nc 03A2 Quit if break pressed.RET to DOS ==>
0359 17     | | |  RLA     Goto 0385 if.
035A 17     | | |  RLA     cassette input
035B 38 28   | | ,---+-<JR c 0385 found: carry=1.
035D 10 F1   | | |   '-<DJNZ 0350  Back for next bit.
035F F1     | | |      POP af   Quit if silence for
0360 BA     | | |      CP D   longer than 5ms.
0361 D2 E5 03 | | |      JP nc 03E5 RET to DOS ==>
0364 62     | | |      LD H D Point HL to start
0365 6B     | | |      LD L E of name.
0366 CD 4C 03 | | | ,--->CALL 034C BYTE from tape in C.
0369 CB 7A   | | | |    BIT 7 D Jump if
036B 79     | | | |    LD A C no name
036C 20 03   | | | | ,-<JR nz 0371 was given.
036E BE     | | | | |  CP (HL)   Check name try again.
036F 20 D6   '-+-+-+-+-<JR nz 0347 if wrong.
0371 23       | | | '->INC HL    
0372 17       | | |    RLA      
0373 30 F1     | | '---<JR nc 0366 End if BIT 7 is 1
0375 FD 34 15   | |      INC (IY+15)  
0378 21 09 40   | |      LD HL 4009 Start of RAM
037B 50       | |   ,->LD D B to be loaded.
037C CD 4C 03   | |   |  CALL 034C Get next BYTE
037F 71       | |   |  LD (HL) C Save it
0380 CD FC 01   | |   |  CALL 01FC Enough?
0383 18 F6     | |   '-<JR 037B Go get another.
0385 D5       | '----->PUSH DE   Start to get
0386 1E 94     |        LD E 94 BYTE from tape in C.
0388 06 1A     |   ,--->LD B 1A  
038A 1D       |   | ,->DEC E   Dec E while tone
038B DB FE     |   | |  IN A (FE)  tone burst
038D 17       |   | |  RLA      being
038E CB 7B     |   | |  BIT 7 E  received.
0390 7B       |   | |  LD A E  
0391 38 F5     |   '-+-<JR c 0338 Jump if cassette i/p.
0393 10 F5     |     '-<DJNZ 038A   
0395 D1       |        POP DE 94  
0396 20 04     |     ,-<JR nz 039C Put BIT in
0398 FE 56     |     |  CP 56   C register.
039A 30 B2     ^-----+-<JR nc 034E Jump to 034E
039C 3F       |     '->CCF      after BITS 0-6,
039D CB 11     |        RL C   Return after
039F 30 AD     '-------<JR nc 034E  seventh BIT.
03A1 C9      RET     RET to DOS ==>


1