DISASSEMBLY OF CCCP V0.94 CODE (C) COPYRIGHT TORCH COMPUTERS COMMENTARY (C) COPYRIGHT J.G.HARSTON RESET: 0000 AF ¯ XOR A ; CLEAR A TO FLAG 'RESET' 0001 08 . EX AF,AF' 0002 18 0B .. JR &000F 0004 00 . NOP 0005 00 . NOP 0006 89 . ADC A,C 0007 00 . NOP .RomCopy: ; COPY DATA FROM ROM TO RAM ; BC=COUNT, DE=DEST, HL=SOURCE 0008 DB 02 Û. IN A,(&02) ; Page Rom in 000A ED B0 í° LDIR ; Copy from Rom to Ram 000C DB 06 Û. IN A,(&06) ; Page Rom out 000E C9 É RET 000F 31 80 00 1.. LD SP,&0080 ; INITIALISE STACK 0012 06 FF .. LD B,&FF ; Set B='Not RESET' 0014 26 00 &. LD H,&00 ; USE HL TO HOLD RETURN ADDRESSES 0016 08 . EX AF,AF' 0017 20 10 . JR NZ,&0029 ; JUMP IF NOT RESET 0019 3E AE >® LD A,&AE ; SET 8522 CONTROL INFORMATION 001B D3 03 Ó. OUT (&03),A ; TALK TO TUBE 001D CB 80 Ë. RES 0,B ; Set B='RESET' 001F 2E 23 .# LD L,&23 ; Set return address 0021 18 54 .T JR &0077 ; Wait for a byte from Tube 0023 0E 44 .D LD C,&44 0025 2E 29 .) LD L,&29 0027 18 57 .W JR &0080 ; Send &44 to Tube port A .InitNotReset: 0029 0E 0F .. LD C,&0F 002B 2E 2F ./ LD L,&2F 002D 18 51 .Q JR &0080 ; Send &0F to Tube port A 002F 0E 18 .. LD C,&18 0031 2E 35 .5 LD L,&35 0033 18 4B .K JR &0080 ; Send &18 to Tube port A ; Get Boot Control Byte 0035 2E 39 .9 LD L,&39 0037 18 3E .> JR &0077 ; Wait for NET+DRIVE from Tube 0039 4F O LD C,A ; Save in C 003A CB 40 Ë@ BIT 0,B ; Check flag 003C 20 05 . JR NZ,&0043 ; If not RESET, don't set DRIVE 003E E6 0F æ. AND &0F ; Get DRIVE from bottom nybble 0040 32 04 00 2.. LD (&0004),A ; Store in DRIVE 0043 3E F0 >ð LD A,&F0 0045 A1 ¡ AND C ; Get NETSTATUS from top nybble 0046 28 02 (. JR Z,&004A ; If NETSTATUS=0, jump 0048 CB 88 Ë. RES 1,B ; Clear a flag 004A D9 Ù EXX ; Save BC in alternate regs 004B 21 89 00 !.. LD HL,&0089 ; Point to relocation table 004E 7E ~ LD A,(HL) 004F 23 # INC HL 0050 FE FF þ. CP &FF ; End of table? 0052 28 14 (. JR Z,&0068 ; Jump to finish 0054 4E N LD C,(HL) 0055 23 # INC HL 0056 46 F LD B,(HL) ; BC=count 0057 23 # INC HL 0058 5E ^ LD E,(HL) 0059 23 # INC HL 005A 56 V LD D,(HL) ; DE=dest 005B 23 # INC HL 005C D9 Ù EXX 005D A0   AND B ; Check startup flag 005E D9 Ù EXX ; Skip this one if not RESER and 005F 20 04 . JR NZ,&0065 ; ...we don't need to do this one 0061 ED B0 í° LDIR ; Copy data to memory 0063 18 E9 .é JR &004E ; Go back for next part 0065 09 . ADD HL,BC ; Skip this one, adjust HL 0066 18 E6 .æ JR &004E ; Go back for next part 0068 21 00 01 !.. LD HL,&0100 006B E5 å PUSH HL ; Save &0100 as return address 006C 21 08 00 !.. LD HL,&0008 006F 11 08 00 ... LD DE,&0008 0072 01 07 00 ... LD BC,&0007 ; Copy RomCopy routine to Ram 0075 18 91 .. JR &0008 ; and jump to CCP at &0100 ; Wait for byte from Tube: 0077 DB 02 Û. IN A,(&02) ; Read Tube status reg. 0079 CB 4F ËO BIT 1,A 007B 28 FA (ú JR Z,&0077 ; Loop until data ready 007D DB 01 Û. IN A,(&01) ; Get data byte 007F E9 é JP (HL) ; 'Return' ; Send byte from C to Tube: 0080 DB 02 Û. IN A,(&02) ; Read Tube status reg. 0082 17 . RLA 0083 30 FB 0û JR NC,&0080 ; Loop until output ready 0085 79 y LD A,C 0086 D3 00 Ó. OUT (&00),A ; Send byte from C 0088 E9 é JP (HL) ; 'Return' 0089 00 . EQUB &00 ; Always copy 008A 59 05 Y. EQUW &0559 ; Copy &0559 bytes 008C 00 FA .ú EQUW &FA00 ; to &FA00 to &FFF8 008E Code copied to &FA00 to 05E6 05E7 01 . EQUB &01 ; Copy if ??? 05E8 4C 00 L. EQUW &004C ; Copy &004C bytes 05EA B4 FF ´. EQUW &FFB4 ; to &FFB4 Copied to &FFB4... 0638 02 . EQUB &02 ; Copy if ??? 0639 56 01 V. EQUW &0156 ; Copy &0156 bytes 063B 00 F8 .ø EQUW &F800 ; to BIOS at &F800 Copied to &F800... 0793 00 . DEFB &00 ; Always copy 0794 04 00 .. DEFW &0004 ; Copy &0004 bytes 0796 00 00 .. DEFW &0000 ; to RESET code at &0000 0000 C3 CF FF ÃÏ. JP &FFCF ; RESET jumps to BIOS hi jump block 0003 00 . NOP ; IOBYTE set to &00 ; End of data 079C 01 . DEFB &01 ; Copy if no NET 079D 03 00 .. DEFW &0003 ; Copy &0003 bytes 079F 30 00 0. DEFW &0030 ; to &0030 0030 C3 07 FA Ã.ú JP &FA07 ; RST &30 jumps to non-NET BDOS_RST entry ; End of data 07A4 03 . DEFB &03 ; Copy if NET 07A5 03 00 .. DEFW &0003 ; Copy &0003 bytes 07A7 30 00 0. DEFW &0030 ; to &0030 0030 C3 07 F8 Ã.ø JP &F807 ; RST &30 jumps to NET BIOS BDOS_RST entry ; End of data 07AC 01 . DEFB &03 ; Copy if no NET 07AD 03 00 .. DEFW &0003 ; Copy &0003 bytes 07AF 05 00 .. DEFW &0005 ; to BDOS entry jump at &0005 0005 C3 00 FA Ã.ú JP &FA00 ; Jump to non-NET BDOS entry point ; End of data 07B4 03 . DEFB &03 ; Copy if NET 07B5 03 00 .. DEFW &0003 ; Copy &0003 bytes 07B7 05 00 .. DEFW &0005 ; to BDOS entry jump at &0005 0005 C3 00 F8 Ã.ø JP &F800 ; Jump to NET BDOS entry point 07BC 00 . DEFB &00 ; Always copy 07BD 02 00 . DEFW &0002 ; Copy &0002 bytes 07BF 35 00 5. DEFW &0035 ; to &0035 0035 00 00 .. DEFW &0000 ; Set address store to zero ; End of data 07C3 01 . DEFB &01 ; Copy if no NET 07C4 01 00 .. DEFW &0001 ; Copy &0001 byte 07C6 38 00 8. DEFW &0038 ; to RST &38 entry at &0038 0038 C9 É RET ; Just returns ; End of data 07C9 00 . DEFB &00 ; Copy always 07CA 73 01 s. DEFW &0173 ; Copy &0173 bytes 07CC 00 20 .. DEFW &2000 ; to &2000 ; End of data 0941 00 . DEFB &00 ; Copy always 0942 03 00 .. DEFW &0003 ; Copy &0003 bytes 0944 00 01 .. DEFW &0100 ; to TPA at &0100 0946 C3 00 30 Ã.0 JP &3000 ; Jump to &3000 ; End of data 0949 02 . DEFB &02 ; Copy if ??? 094A 12 00 .. DEFW &0012 ; Copy &0012 bytes 094C 00 01 .. DEFW &0100 ; to TPA at &0100 0100 3E 00 >. LD A,&00 ; Modify the code at &3000 0102 32 44 30 2D0 LD (&3044),A 0105 3E 4E >N LD A,&4E 0107 32 19 3A 2.: LD (&3A19),A 010A 3E 41 >A LD A,&41 010C 32 FA 32 2ú2 LD (&32FA),A 010F C3 00 30 Ã.0 JP &3000 ; Jump to &3000 ; End of data 0960 00 . DEFB &00 ; Copy always 0961 FC 15 ü. DEFW &15FC ; Copy &15FC bytes 0963 00 30 .0 DEFW &3000 ; to &3000 0965 Copied... ; End of data 1F61 FE þ DEFB &FE 1F62 11 00 .. DEFW &0011 ; Copy &0011 bytes 1F64 88 88 .. DEFW &8888 ; to &8888 1F66 54 6F 72 63 68 20 43 43 43 50 4E 20 DEFM "Torch CCCPN " 1F72 30 2E 39 34 2E DEFM "0.94." ; End of data 1F77 FE þ DEFB &FE 1F78 27 00 '. DEFW &0027 ; Copy &0027 bytes 1F7A 88 88 .. DEFW &8888 ; to &8888 1F7C 43 6F 70 79 72 69 67 68 74 20 29 43 DEFM "Copyright (C" 1F88 29 20 31 39 38 33 20 54 6F 72 63 68 DEFM ") 1983 Torch" 1F94 20 43 6F 6D 70 75 74 65 72 73 20 4C DEFM " Computers L" 1FA0 74 64 2E DEFM "td." ; End of data 1FA3 FF . DEFB &FF ; No more data 1FA4 FF FF FF FF FF FF FF FF FF FF FF FF 1FB0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 1FC0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 1FD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 1FE0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 1FF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF