Memory: 0x0000-0x7FFF ROM 0x8000-0xBFFF Internal RAM [MEM] 0xC000-0xFFFF Shared RAM [SHARE] I/O: 0x00-0x1F DLC MB89374 0x20-0x2F DMA MB89237A 0x40 SYN 0x60 ZFG DMA: DMA Channel 0 DMA Channel 1 DMA Channel 2 DLC-to-Memory DMA Channel 3 Memory-to-DLC Locations: 0x8040-0x8065 DMA-Config CH0,CH1 (copy of 0x00F8..) 0x8070-0x8095 DMA-Config CH0,CH1 (copy of 0x00F8..) 0x80A0-0x80B3 DMA-Config CH2 (copy of 0x0094..) 0x80C0-0x80D3 DMA-Config CH3 (copy of 0x0080..) 0x80E0-0x80F3 DMA-Config CH2 (copy of 0x0094..) 0x8100-0x8113 DMA-Config CH3 (copy of 0x0080..) Internal: 8000H VINT related flag (usualy set to 0, then read until NOT zero) 8001H VINT related counter (used by 043BH, 03D4H) 8003H ? (2 on reset) 8005H ? (set to 0) 8006H slave flag 8007H relay flag 8008H total node count - will HALT if 9 or larger. 8009H local node id 800AH ring flag? (0 on single, 1 on others) 800BH Single Byte source (Master CH3 DMA source) 800CH Single Byte destination (Master CH2 DMA destination) 800EH ? (0 on reset) 800FH ? (lo byte)\ 8010H ? (hi byte)-- 0x85CE on 1.1 8011H ? (lo byte)\ 8012H ? (hi byte)-- 0x8792 on 1.1 8013H ring flag2? (0 on 1.1; if 0 skips some code) Shared: C000H Status (5 on reset, Master: 0 > 3 > 0 > 1 > 2 > 0 ...; 3 = copy SHARE to INT; 1 = sending; 2 = copy INT to SHARE; 8 = timeout) C001H mode (0 = relay, 1 = master, 2 = slave) C002H local node id (1 = master, 0 = relay) C003H total node count C004H ? (0 on master/slave, 1 on relay) C005H ? (?) C006H-C00FH = shared memory (set by master) C00EH ? (lo byte)\ C00FH ? (hi byte)-- 0x0231
; Disassembly of the file "epr-15112.17" ; ; CPU Type: Z80 ; ; Created with dZ80 2.0 ; ; on Tuesday, 26 of May 2015 at 04:00 AM ;
# | Binary | ASM | Comment |
---|---|---|---|
void main(){ setStackPointer(0xA000); disableInterrupts(); setInterruptMode(0); setupComm(); } |
|||
0000H | 3100A0 | LD SP,0A000H | Set StackPointer to 0xA000 |
0003H | F3 | DI | disable interrupts |
0004H | ED46 | IM 0 | interrupt mode 0 |
0006H | C3A203 | JP 03A2H | Jump to SETUP_COMM |
# | Binary | ASM | Comment |
---|---|---|---|
void int5(){ byte A; A = 32; do { A--; } while(A > 0); memw(0x8000, memr(0x8000)--); enableInterrupts(); } |
|||
0028H | 08 | EX AF,AF' | Exchange AF with AF' |
0029H | 3E20 | LD A,20H | A = 32 |
002BH | 3D | DEC A | A-- |
002CH | 20FD | JR NZ,002BH ; (-03h) | While A > 0 Jump to 002BH |
002EH | 3A0080 | LD A,(8000H) | A = RAM(0H) |
0031H | 3D | DEC A | A -- |
0032H | 320080 | LD (8000H),A | RAM(0H) = A |
0035H | 08 | EX AF,AF' | Exchange AF with AF' |
0036H | FB | EI | enable interrupts |
0037H | C9 | RET | return |
# | Binary | ASM | Comment |
---|---|---|---|
void int7(){ byte A; A = ior(0x08); A = ior(0x0F); A = ior(0x0C): if(A & 1){ A ^= A; iow(0x0F, A); } enableInterrupts(); } |
|||
0038H | 08 | EX AF,AF' | Exchange AF with AF' |
0039H | DB08 | IN A,(08H) | read DLC 'Receive status 0' |
003BH | DB0F | IN A,(0FH) | read DLC 'Serial data' |
003DH | DB0C | IN A,(0CH) | read DLC 'Transmit status' |
003FH | E601 | AND 01H | check bit 0 |
0041H | 2803 | JR Z,0046H ; (+03h) | if ZERO jump to 0046H |
0043H | AF | XOR A | XOR A |
0044H | D30F | OUT (0FH),A | write DLC 'Serial data' |
0046H | 08 | EX AF,AF' | Exchange AF with AF' |
0047H | FB | EI | enable interrupts |
0048H | C9 | RET | return |
# | Binary | ASM | Comment |
---|---|---|---|
0080H | 2A | 01 I/O Address 0x2A 'Single Mask Register' | |
0081H | 07 | value 'SRST, CH3' | |
0082H | 2C | 02 I/O Address 0x2C 'Clear Flip-Flop Register' | |
0083H | 00 | - | |
0084H | 26 | 03 I/O Address 0x26 'Offset Register (CH3)' | |
0085H | 0B | value xx0B | |
0086H | 26 | 04 I/O Address 0x26 'Offset Register (CH3)' | |
0087H | 80 | value 80xx | |
0088H | 2C | 05 I/O Address 0x2C 'Clear Flip-Flop Register' | |
0089H | 00 | - | |
008AH | 27 | 06 I/O Address 0x27 'Block Size Register (CH3)' | |
008BH | 00 | value xx00 | |
008CH | 27 | 07 I/O Address 0x27 'Block Size Register (CH3)' | |
008DH | 00 | value 00xx | |
008EH | 2B | 08 I/O Address 0x2B 'Mode Register' | |
008FH | 0B | value 'MODE0, TYPE2, CH3' | |
0090H | 2A | 09 I/O Address 0x2A 'Single Mask Register' | |
0091H | 03 | value 'CH3' | |
0092H | 28 | 10 I/O Address 0x28 'Command and Status Register' | |
0093H | 30 | value 'ROTATE, EXTENDED' |
# | Binary | ASM | Comment |
---|---|---|---|
0094H | 2A | 01 I/O Address 0x2A 'Single Mask Register' | |
0095H | 06 | value 'SRST, CH2' | |
0096H | 2C | 02 I/O Address 0x2C 'Clear Flip-Flop Register' | |
0097H | 00 | - | |
0098H | 24 | 03 I/O Address 0x24 'Offset Register (CH2)' | |
0099H | 0B | value xx0B | |
009AH | 24 | 04 I/O Address 0x24 'Offset Register (CH2)' | |
009BH | 80 | value 80xx | |
009CH | 2C | 05 I/O Address 0x2C 'Clear Flip-Flop Register' | |
009DH | 00 | - | |
009EH | 25 | 06 I/O Address 0x25 'Block Size Register (CH2)' | |
009FH | 00 | value xx00 | |
00A0H | 25 | 07 I/O Address 0x25 'Block Size Register (CH2)' | |
00A1H | 00 | value 00xx | |
00A2H | 2B | 08 I/O Address 0x2B 'Mode Register' | |
00A3H | 06 | value 'MODE0, TYPE1, CH2' | |
00A4H | 2A | 09 I/O Address 0x2A 'Single Mask Register' | |
00A5H | 02 | value 'CH2' | |
00A6H | 28 | 10 I/O Address 0x28 'Command and Status Register' | |
00A7H | 30 | value 'ROTATE, EXTENDED' |
# | Binary | ASM | Comment |
---|---|---|---|
00A8H | 2A | 01 I/O Address 0x2A 'Single Mask Register' | |
00A9H | 06 | value 'SRST, CH2' | |
00AAH | 2C | 02 I/O Address 0x2C 'Clear Flip-Flop Register' | |
00ABH | 00 | - | |
00ACH | 24 | 03 I/O Address 0x24 'Offset Register (CH2)' | |
00ADH | 0C | value xx0C | |
00AEH | 24 | 04 I/O Address 0x24 'Offset Register (CH2)' | |
00AFH | 80 | value 80xx | |
00B0H | 2C | 05 I/O Address 0x2C 'Clear Flip-Flop Register' | |
00B1H | 00 | - | |
00B2H | 25 | 06 I/O Address 0x25 'Block Size Register (CH2)' | |
00B3H | 00 | value xx00 | |
00B4H | 25 | 07 I/O Address 0x25 'Block Size Register (CH2)' | |
00B5H | 00 | value 00xx | |
00B6H | 2B | 08 I/O Address 0x2B 'Mode Register' | |
00B7H | 06 | value 'MODE0, TYPE1, CH2' | |
00B8H | 2A | 09 I/O Address 0x2A 'Single Mask Register' | |
00B9H | 02 | value 'CH2' | |
00BAH | 28 | 10 I/O Address 0x28 'Command and Status Register' | |
00BBH | 30 | value 'ROTATE, EXTENDED' |
# | Binary | ASM | Comment |
---|---|---|---|
00BCH | 2A | 01 I/O Address 0x2A 'Single Mask Register' | |
00BDH | 07 | value 'SRST, CH3' | |
00BEH | 2C | 02 I/O Address 0x2C 'Clear Flip-Flop Register' | |
00BFH | 00 | - | |
00C0H | 26 | 03 I/O Address 0x26 'Offset Register (CH3)' | |
00C1H | 06 | value xx06 | |
00C2H | 26 | 04 I/O Address 0x26 'Offset Register (CH3)' | |
00C3H | C0 | value C0xx | |
00C4H | 2C | 05 I/O Address 0x2C 'Clear Flip-Flop Register' | |
00C5H | 00 | - | |
00C6H | 27 | 06 I/O Address 0x27 'Block Size Register (CH3)' | |
00C7H | 09 | value xx09 | |
00C8H | 27 | 07 I/O Address 0x27 'Block Size Register (CH3)' | |
00C9H | 00 | value 00xx | |
00CAH | 2B | 08 I/O Address 0x2B 'Mode Register' | |
00CBH | 0B | value 'MODE0, TYPE2, CH3' | |
00CCH | 2A | 09 I/O Address 0x2A 'Single Mask Register' | |
00CDH | 03 | value 'CH3' | |
00CEH | 28 | 10 I/O Address 0x28 'Command and Status Register' | |
00CFH | 30 | value 'ROTATE, EXTENDED' |
# | Binary | ASM | Comment |
---|---|---|---|
00D0H | 2A | 01 I/O Address 0x2A 'Single Mask Register' | |
00D1H | 06 | value 'SRST, CH2' | |
00D2H | 2C | 02 I/O Address 0x2C 'Clear Flip-Flop Register' | |
00D3H | 00 | - | |
00D4H | 24 | 03 I/O Address 0x24 'Offset Register (CH2)' | |
00D5H | 06 | value xx06 | |
00D6H | 24 | 04 I/O Address 0x24 'Offset Register (CH2)' | |
00D7H | C0 | value C0xx | |
00D8H | 2C | 05 I/O Address 0x2C 'Clear Flip-Flop Register' | |
00D9H | 00 | - | |
00DAH | 25 | 06 I/O Address 0x25 'Block Size Register (CH2)' | |
00DBH | 09 | value xx09 | |
00DCH | 25 | 07 I/O Address 0x25 'Block Size Register (CH2)' | |
00DDH | 00 | value 00xx | |
00DEH | 2B | 08 I/O Address 0x2B 'Mode Register' | |
00DFH | 06 | value 'MODE0, TYPE1, CH2' | |
00E0H | 2A | 09 I/O Address 0x2A 'Single Mask Register' | |
00E1H | 02 | value 'CH2' | |
00E2H | 28 | 10 I/O Address 0x28 'Command and Status Register' | |
00E3H | 30 | value 'ROTATE, EXTENDED' |
# | Binary | ASM | Comment |
---|---|---|---|
00E4H | 2A | 01 | |
00E5H | 06 | ||
00E6H | 2C | 02 | |
00E7H | 00 | ||
00E8H | 24 | 03 | |
00E9H | 00 | ||
00EAH | 24 | 04 | |
00EBH | 84 | ||
00ECH | 2C | 05 | |
00EDH | 00 | ||
00EEH | 25 | 06 | |
00EFH | 09 | ||
00F0H | 25 | 07 | |
00F1H | 00 | ||
00F2H | 2B | 08 | |
00F3H | 06 | ||
00F4H | 2A | 09 | |
00F5H | 02 | ||
00F6H | 28 | 10 | |
00F7H | 30 |
# | Binary | ASM | Comment |
---|---|---|---|
00F8H | 2F | 01 I/O Address 0x2F 'Master Mask Register' | |
00F9H | 0F | value | |
00FAH | 2C | 02 I/O Address 0x2C 'Clear Flip-Flop Register' | |
00FBH | 00 | - | |
00FCH | 20 | 03 I/O Address 0x20 'Offset Register CH0' | |
00FDH | 10 | value xx10 | |
00FEH | 20 | 04 I/O Address 0x20 'Offset Register CH0' | |
00FFH | C0 | value C0xx | |
0100H | 2C | 05 I/O Address 0x2C 'Clear Flip-Flop Register' | |
0101H | 00 | - | |
0102H | 21 | 06 I/O Address 0x21 'Block Size Register' | |
0103H | C3 | value xxC3 | |
0104H | 21 | 07 I/O Address 0x21 'Block Size Register' | |
0105H | 01 | value 01xx | |
0105H | 2C | 08 I/O Address 0x2C 'Clear Flip-Flop Register' | |
0105H | 00 | - | |
0108H | 22 | 09 I/O Address 0x22 'Offset Register CH1' | |
0109H | 0A | value xx0A | |
010AH | 22 | 10 I/O Address 0x22 'Offset Register CH1' | |
010BH | 84 | value 84xx | |
010CH | 2C | 11 I/O Address 0x2C 'Clear Flip-Flop Register' | |
010DH | 00 | - | |
010EH | 23 | 12 I/O Address 0x23 'Block Size Register' | |
010FH | C3 | value xxC3 | |
010FH | 23 | 13 I/O Address 0x23 'Block Size Register' | |
010FH | 01 | value 01xx | |
0112H | 2B | 14 I/O Address 0x2B 'Mode Register' | |
0113H | 88 | value 'MODE2, TYPE2, CH0' | |
0114H | 2B | 15 I/O Address 0x2B 'Mode Register' | |
0115H | 85 | value 'MODE2, TYPE1, CH1' | |
0116H | 2A | 16 I/O Address 0x2A 'Single Mask Register' | |
0117H | 00 | value 'CH0' | |
0118H | 2A | 17 I/O Address 0x2A 'Single Mask Register' | |
0119H | 01 | value 'CH1' | |
011AH | 28 | 18 I/O Address 0x28 'Command and Status Register' | |
011BH | 31 | value | |
011CH | 29 | 19 I/O Address 0x29 'Request Register' | |
011DH | 04 | value |
# | Binary | ASM | Comment |
---|---|---|---|
011EH | 17 | 01 I/O Address 0x17 'Mask' | |
011FH | C7 | value 'MTXDRQ, MRXDRQ, MMODEM, MTX, MRX' | |
0120H | 0E | 02 I/O Address 0x0E 'Transmit interrupt enable' | |
0121H | 00 | value (all off) | |
0122H | 0D | 03 I/O Address 0x0D 'Transmit control' | |
0123H | 08 | value 'TXRST' | |
0124H | 0B | 04 I/O Address 0x0B 'Receive interrupt enable' | |
0125H | 00 | value (all off) | |
0126H | 0A | 05 I/O Address 0x0A 'Receive control' | |
0127H | 03 | value 'HUNT, STC' | |
0128H | 1A | 06 I/O Address 0x1A 'BRG1 divide value' | |
0129H | 03 | value 'DIV1, DIV0' | |
012AH | 19 | 07 I/O Address 0x19 'BRG1/DPLL control' | |
012BH | 00 | value (all off) | |
012CH | 00 | 08 I/O Address 0x00 'Protocol select' | |
012DH | 02 | value 'PS1' | |
012EH | 01 | 09 I/O Address 0x01 'CRC select' | |
012FH | 0C | value 'CRCM1, CRCM0' | |
0130H | 02 | 10 I/O Address 0x02 'Transfer mode' | |
0131H | 21 | value 'CODE1, TXC0' | |
0132H | 14 | 11 I/O Address 0x14 'Transmit mode' | |
0133H | 02 | value 'TXUEND' | |
0134H | 07 | 12 I/O Address 0x07 'Modem control' | |
0135H | 00 | value (all off) | |
0136H | 0B | 13 I/O Address 0x0B 'Receive interrupt enable' | |
0137H | 80 | value 'RXD/I' | |
0138H | 0A | 14 I/O Address 0x0A 'Receive control' | |
0139H | 80 | value 'RXE' | |
013AH | 0E | 15 I/O Address 0x0E 'Transmit interrupt enable' | |
013BH | 80 | value 'TXD/I' | |
013CH | 0D | 16 I/O Address 0x0D 'Transmit control' | |
013DH | 80 | value 'TXE' |
# | Binary | ASM | Comment |
---|---|---|---|
013EH | 2D | 01 I/O Address 0x2D 'Master Reset Register' | |
013FH | 00 | value | |
0140H | 2F | 01 I/O Address 0x2F 'MultiChannel Mask Register' | |
0141H | 0F | value | |
0142H | 28 | 01 I/O Address 0x28 'Status Register' | |
0143H | 28 | value |
# | Binary | ASM | Comment |
---|---|---|---|
0144H | 54 | ring size = 0; 0x0154 | |
0145H | 01 | - | |
0146H | 54 | ring size = 1; 0x0154 | |
0147H | 01 | - | |
0148H | 56 | ring size = 2; 0x0156 | |
0149H | 01 | - | |
014AH | 5A | ring size = 3; 0x015A | |
014BH | 01 | - | |
014CH | 60 | ring size = 4; 0x0160 | |
014DH | 01 | - | |
014EH | 68 | ring size = 5; 0x0168 | |
014FH | 01 | - | |
0150H | 72 | ring size = 6; 0x0172 | |
0151H | 01 | - | |
0152H | 7E | ring size = 7; 0x017E | |
0153H | 01 | - | |
0154H | 8C | ring size = 8; 0x018C | |
0155H | 01 | - | |
0156H | 9E | 1.1 0x019E | |
0155H | 01 | - | |
0158H | A5 | 2.1 0x01A5 | |
0159H | 01 | - | |
015AH | B2 | 2.2 0x01B2 | |
015BH | 01 | - | |
015CH | BF | 3.1 0x01BF | |
015DH | 01 | - | |
015EH | CC | 3.2 0x01CC | |
015FH | 01 | - | |
0160H | D9 | 3.3 0x01D9 | |
0161H | 01 | - | |
0162H | E6 | 4.1 0x01E6 | |
0163H | 01 | - | |
0164H | F3 | 4.2 0x01F3 | |
0165H | 01 | - | |
0166H | 00 | 4.3 0x0200 | |
0167H | 02 | - | |
0168H | 0D | 4.4 0x020D | |
0169H | 02 | - | |
016AH | 1A | 5.1 0x021A | |
016BH | 02 | - | |
016CH | 27 | 5.2 0x0227 | |
016DH | 02 | - | |
016EH | 34 | 5.3 0x0234 | |
016FH | 02 | - | |
0170H | 41 | 5.4 0x0241 | |
0171H | 02 | - | |
0172H | 4E | 5.5 0x024E | |
0173H | 02 | - | |
0174H | 5B | 6.1 0x025B | |
0175H | 02 | - | |
0176H | 68 | 6.2 0x0268 | |
0177H | 02 | - | |
0178H | 75 | 6.3 0x0275 | |
0179H | 02 | - | |
017AH | 82 | 6.4 0x0282 | |
017BH | 02 | - | |
017CH | 8F | 6.5 0x028F | |
017DH | 02 | - | |
017EH | 9C | 6.6 0x029C | |
017FH | 02 | - | |
0180H | A9 | 7.1 0x02A9 | |
0181H | 02 | - | |
0182H | B6 | 7.2 0x02B6 | |
0183H | 02 | - | |
0184H | C3 | 7.3 0x02C3 | |
0185H | 02 | - | |
0186H | D0 | 7.4 0x02D0 | |
0187H | 02 | - | |
0188H | DD | 7.5 0x02DD | |
0189H | 02 | - | |
018AH | EA | 7.6 0x02EA | |
018BH | 02 | - | |
018CH | F7 | 7.7 0x02F7 | |
018DH | 02 | - | |
018EH | 04 | 8.1 0x0304 | |
018FH | 03 | - | |
0190H | 11 | 8.2 0x0311 | |
0191H | 03 | - | |
0192H | 1E | 8.3 0x031E | |
0193H | 03 | - | |
0194H | 2B | 8.4 0x032B | |
0195H | 03 | - | |
0196H | 38 | 8.5 0x0338 | |
0197H | 03 | - | |
0198H | 45 | 8.6 0x0345 | |
0199H | 03 | - | |
019AH | 52 | 8.7 0x0352 | |
019BH | 03 | - | |
019CH | 5F | 8.8 0x035F | |
019DH | 03 | - | |
019EH | 00 | ?? 0 | |
019FH | 0A | 0x840A | |
01A0H | 84 | - | |
01A1H | D4 | 0xC1D4 | |
01A2H | C1 | ||
01A3H | C3 | 0x01C3 | |
01A4H | 01 | - | |
01A5H | 01 | ?? 1 | |
01A6H | 0A | 0x840A | |
01A7H | 84 | - | - |
01A8H | D4 | 0xC1D4 | |
01A9H | C1 | - | |
01AAH | C3 | 0x01C3 | |
01ABH | 01 | ||
01ACH | CE | 0x85CE | |
01ADH | 85 | - | |
01AEH | 98 | 0xC398 | |
01AFH | C3 | - | |
01B0H | C3 | 0x01C3 | |
01B1H | 01 | - | |
01B2H | 01 | ?? 1 | |
01B3H | 0A | 0x840A | |
01B4H | 84 | - | |
01B5H | 98 | 0xC398 | |
01B6H | C3 | - | |
01B7H | C3 | 0x01C3 | |
01B8H | 01 | - | |
01B9H | CE | 0x85CE | |
01BAH | 85 | - | |
01BBH | D4 | 0xC1D4 | |
01BCH | C1 | - | |
01BDH | C3 | 0x01C3 | |
01BEH | 01 | - | |
01BFH | 01 | ?? 1 | |
01C0H | 0A | 0x840A | |
01C1H | 84 | - | |
01C2H | D4 | 0xC1D4 | |
01C3H | C1 | - | |
01C4H | C3 | 0x01C3 | |
01C5H | 01 | - | |
01C6H | CE | 0x85CE | |
01C7H | 85 | - | |
01C8H | 98 | 0xC398 | |
01C9H | C3 | ||
01CAH | 87 | 0x0387 | |
01CBH | 03 | - | |
01CCH | 010A84 | LD BC,840AH | |
01CFH | 98 | SBC A,B | |
01D0H | C38703 | JP 0387H | |
01D3H | 92 | SUB D | |
01D4H | 87 | ADD A,A | |
01D5H | D4C1C3 | ||
01D8H | 01010A | LD BC,0A01H | |
01DBH | 84 | ADD A,H | |
01DCH | 5C | LD E,H | |
01DDH | C5 | PUSH BC | |
01DEH | C301CE | JP 0CE01H | |
01E1H | 85 | ADD A,L | |
01E2H | D4C187 | CALL NC,87C1H | |
01E5H | 03 | INC BC | |
01E6H | 010A84 | LD BC,840AH | |
01E9H | D4C1C3 | ||
01ECH | 01CE85 | LD BC,85CEH | |
01EFH | 98 | SBC A,B | |
01F0H | C34B05 | JP 054BH | |
01F3H | 010A84 | LD BC,840AH | |
01F6H | 98 | SBC A,B | |
01F7H | C34B05 | JP 054BH | |
01FAH | 56 | LD D,(HL) | |
01FBH | 89 | ADC A,C | |
01FCH | D4 | - C1D4 | |
01FDH | C1 | - | |
01FEH | C3 | ||
01FFH | 01010A | LD BC,0A01H | |
0202H | 84 | - 5C84 | |
0203H | 5C | ||
0204H | C5 | PUSH BC | |
0205H | 87 | ADD A,A | |
0206H | 03 | INC BC | |
0207H | 92 | SUB D | |
0208H | 87 | ADD A,A | |
0209H | D4C187 | CALL NC,87C1H | |
020CH | 03 | INC BC | |
020DH | 010A84 | LD BC,840AH | |
0210H | 20C7 | JR NZ,01D9H ; (-39h) | |
0212H | C301CE | JP 0CE01H | |
0215H | 85 | ADD A,L | |
0216H | D4C14B | CALL NC,4BC1H | |
0219H | 05 | DEC B | |
021AH | 010A84 | LD BC,840AH | |
021DH | D4C1C3 | ||
0220H | 01CE85 | LD BC,85CEH | |
0223H | 98 | SBC A,B | |
0224H | C30F07 | JP 070FH | |
0227H | 010A84 | LD BC,840AH | |
022AH | 98 | SBC A,B | |
022BH | C30F07 | JP 070FH | |
022EH | 1A | LD A,(DE) | |
022FH | 8B | ADC A,E | |
0230H | D4C1C3 | ||
0233H | 01010A | LD BC,0A01H | |
0236H | 84 | ADD A,H | |
0237H | 5C | LD E,H | |
0238H | C5 | PUSH BC | |
0239H | 4B | LD C,E | |
023AH | 05 | DEC B | |
023BH | 56 | LD D,(HL) | |
023CH | 89 | ADC A,C | |
023DH | D4C187 | CALL NC,87C1H | |
0240H | 03 | INC BC | |
0241H | 010A84 | LD BC,840AH | |
0244H | 20C7 | JR NZ,020DH ; (-39h) | |
0246H | 87 | ADD A,A | |
0247H | 03 | INC BC | |
0248H | 92 | SUB D | |
0249H | 87 | ADD A,A | |
024AH | D4C14B | CALL NC,4BC1H | |
024DH | 05 | DEC B | |
024EH | 010A84 | LD BC,840AH | |
0251H | E4C8C3 | CALL PO,0C3C8H | |
0254H | 01CE85 | LD BC,85CEH | |
0257H | D4C10F | CALL NC,0FC1H | |
025AH | 07 | RLCA | |
025BH | 010A84 | LD BC,840AH | |
025EH | D4C1C3 | ||
0261H | 01CE85 | LD BC,85CEH | |
0264H | 98 | SBC A,B | |
0265H | C3D308 | JP 08D3H | |
0268H | 010A84 | LD BC,840AH | |
026BH | 98 | SBC A,B | |
026CH | C3D308 | JP 08D3H | |
026FH | DE8C | SBC A,8CH | |
0271H | D4C1C3 | ||
0274H | 01010A | LD BC,0A01H | |
0277H | 84 | ADD A,H | |
0278H | 5C | LD E,H | |
0279H | C5 | PUSH BC | |
027AH | 0F | RRCA | |
027BH | 07 | RLCA | |
027CH | 1A | LD A,(DE) | |
027DH | 8B | ADC A,E | |
027EH | D4C187 | CALL NC,87C1H | |
0281H | 03 | INC BC | |
0282H | 010A84 | LD BC,840AH | |
0285H | 20C7 | JR NZ,024EH ; (-39h) | |
0287H | 4B | LD C,E | |
0288H | 05 | DEC B | |
0289H | 56 | LD D,(HL) | |
028AH | 89 | ADC A,C | |
028BH | D4C14B | CALL NC,4BC1H | |
028EH | 05 | DEC B | |
028FH | 010A84 | LD BC,840AH | |
0292H | E4C887 | CALL PO,87C8H | |
0295H | 03 | INC BC | |
0296H | 92 | SUB D | |
0297H | 87 | ADD A,A | |
0298H | D4C10F | CALL NC,0FC1H | |
029BH | 07 | RLCA | |
029CH | 010A84 | LD BC,840AH | |
029FH | A8 | XOR B | |
02A0H | CAC301 | JP Z,01C3H | |
02A3H | CE85 | ADC A,85H | |
02A5H | D4C1D3 | CALL NC,0D3C1H | |
02A8H | 08 | EX AF,AF' | |
02A9H | 010A84 | LD BC,840AH | |
02ACH | D4C1C3 | ||
02AFH | 01CE85 | LD BC,85CEH | |
02B2H | 98 | SBC A,B | |
02B3H | C3970A | JP 0A97H | |
02B6H | 010A84 | LD BC,840AH | |
02B9H | 98 | SBC A,B | |
02BAH | C3970A | JP 0A97H | |
02BDH | A2 | AND D | |
02BEH | 8E | ADC A,(HL) | |
02BFH | D4C1C3 | ||
02C2H | 01010A | LD BC,0A01H | |
02C5H | 84 | ADD A,H | |
02C6H | 5C | LD E,H | |
02C7H | C5 | PUSH BC | |
02C8H | D308 | OUT (08H),A | |
02CAH | DE8C | SBC A,8CH | |
02CCH | D4C187 | CALL NC,87C1H | |
02CFH | 03 | INC BC | |
02D0H | 010A84 | LD BC,840AH | |
02D3H | 20C7 | JR NZ,029CH ; (-39h) | |
02D5H | 0F | RRCA | |
02D6H | 07 | RLCA | |
02D7H | 1A | LD A,(DE) | |
02D8H | 8B | ADC A,E | |
02D9H | D4C14B | CALL NC,4BC1H | |
02DCH | 05 | DEC B | |
02DDH | 010A84 | LD BC,840AH | |
02E0H | E4C84B | CALL PO,4BC8H | |
02E3H | 05 | DEC B | |
02E4H | 56 | LD D,(HL) | |
02E5H | 89 | ADC A,C | |
02E6H | D4C10F | CALL NC,0FC1H | |
02E9H | 07 | RLCA | |
02EAH | 010A84 | LD BC,840AH | |
02EDH | A8 | XOR B | |
02EEH | CA8703 | JP Z,0387H | |
02F1H | 92 | SUB D | |
02F2H | 87 | ADD A,A | |
02F3H | D4C1D3 | CALL NC,0D3C1H | |
02F6H | 08 | EX AF,AF' | |
02F7H | 010A84 | LD BC,840AH | |
02FAH | 6C | LD L,H | |
02FBH | CCC301 | CALL Z,01C3H | |
02FEH | CE85 | ADC A,85H | |
0300H | D4C197 | CALL NC,97C1H | |
0303H | 0A | LD A,(BC) | |
0304H | 010A84 | LD BC,840AH | |
0307H | D4C1C3 | ||
030AH | 01CE85 | LD BC,85CEH | |
030DH | 98 | SBC A,B | |
030EH | C35B0C | JP 0C5BH | |
0311H | 010A84 | LD BC,840AH | |
0314H | 98 | SBC A,B | |
0315H | C35B0C | JP 0C5BH | |
0318H | 66 | LD H,(HL) | |
0319H | 90 | SUB B | |
031AH | D4C1C3 | ||
031DH | 01010A | LD BC,0A01H | |
0320H | 84 | ADD A,H | |
0321H | 5C | LD E,H | |
0322H | C5 | PUSH BC | |
0323H | 97 | SUB A | |
0324H | 0A | LD A,(BC) | |
0325H | A2 | AND D | |
0326H | 8E | ADC A,(HL) | |
0327H | D4C187 | CALL NC,87C1H | |
032AH | 03 | INC BC | |
032BH | 010A84 | LD BC,840AH | |
032EH | 20C7 | JR NZ,02F7H ; (-39h) | |
0330H | D308 | OUT (08H),A | |
0332H | DE8C | SBC A,8CH | |
0334H | D4C14B | CALL NC,4BC1H | |
0337H | 05 | DEC B | |
0338H | 010A84 | LD BC,840AH | |
033BH | E4C80F | CALL PO,0FC8H | |
033EH | 07 | RLCA | |
033FH | 1A | LD A,(DE) | |
0340H | 8B | ADC A,E | |
0341H | D4C10F | CALL NC,0FC1H | |
0344H | 07 | RLCA | |
0345H | 010A84 | LD BC,840AH | |
0348H | A8 | XOR B | |
0349H | CA4B05 | JP Z,054BH | |
034CH | 56 | LD D,(HL) | |
034DH | 89 | ADC A,C | |
034EH | D4C1D3 | CALL NC,0D3C1H | |
0351H | 08 | EX AF,AF' | |
0352H | 010A84 | LD BC,840AH | |
0355H | 6C | LD L,H | |
0356H | CC8703 | CALL Z,0387H | |
0359H | 92 | SUB D | |
035AH | 87 | ADD A,A | |
035BH | D4C197 | CALL NC,97C1H | |
035EH | 0A | LD A,(BC) | |
035FH | 01 | ?? 1 | |
0360H | 0A | 0x840A | |
0361H | 84 | - | |
0362H | 30 | 0xCE30 | |
0363H | CE | - | |
0364H | C3 | 0x01C3 | |
0365H | 01 | - | |
0366H | CE | 0x85CE | |
0367H | 85 | - | |
0368H | D4 | 0xC1D4 | |
0369H | C1 | - | |
036AH | 5B | 0x0C5B | |
036BH | 0C | - |
036CH | 00 | NOP | |
---|---|---|---|
036DH | 00 | NOP | |
036EH | C30100 | JP 0001H | |
0371H | 00 | NOP | |
0372H | 00 | NOP | |
0373H | 00 | NOP | |
0374H | C30100 | JP 0001H | |
0377H | 00 | NOP | |
0378H | 00 | NOP | |
0379H | 01C301 | LD BC,01C3H | |
037CH | C30100 | JP 0001H | |
037FH | 018703 | LD BC,0387H | |
0382H | C30100 | JP 0001H | |
0385H | 014B05 | LD BC,054BH | |
0388H | C30100 | JP 0001H | |
038BH | 014B05 | LD BC,054BH | |
038EH | 87 | ADD A,A | |
038FH | 03 | INC BC | |
0390H | 00 | NOP | |
0391H | 014B05 | LD BC,054BH | |
0394H | 4B | LD C,E | |
0395H | 05 | DEC B | |
0396H | 00 | NOP | |
0397H | 014B05 | LD BC,054BH | |
039AH | 0F | RRCA | |
039BH | 07 | RLCA | |
039CH | 00 | NOP | |
039DH | 014B05 | LD BC,054BH | |
03A0H | D308 | OUT (08H),A |
# | Binary | ASM | Comment |
---|---|---|---|
void setupComm(){ byte A; resetComm(); zeroInternalMemory(); testVInt120(); resetComm(); A = memr(0xC001); A--; if (A == 0){ // Master setupRingMaster(); copyAndConfigDma(); waitVInt(); syncCommon150(); loopMaster(); } else { // Slave & Relay setupRingSlaveRelay(); copyAndConfigDma(); readCommon150(); loopSlaveRelay(); } } |
|||
03A2H | CD0304 | CALL 0403H | Call RESET_COMM |
03A5H | CD5604 | CALL 0456H | Call ZERO_INTERNAL_MEMORY |
03A8H | CD3B04 | CALL 043BH | Call TEST_VINT_120 |
03ABH | CD0304 | CALL 0403H | Call RESET_COMM |
03AEH | 3A01C0 | LD A,(0C001H) | A = SHARE(0x0001); 0 = Relay, 1 = Master, 2 = Slave |
03B1H | 3D | DEC A | A-- |
03B2H | CAC503 | JP Z,03C5H | If ZERO jump to 03C5H ; Master only |
03B5H | AF | XOR A | A ^= A (=0) |
03B6H | D340 | OUT (40H),A | write A to SYN |
03B8H | F3 | DI | disable interrupts |
03B9H | CD5A06 | CALL 065AH | Call SETUP_RING_SLAVE_RELAY |
03BCH | CD6004 | CALL 0460H | Call COPY_AND_CONFIGURE_DMA |
03BFH | CDE703 | CALL 03E7H | Call READ_COMMON_150 |
03C2H | C34108 | JP 0841H | Jump to LOOP_SLAVE_RELAY |
03C5H | CDB905 | CALL 05B9H | Call SETUP_RING_MASTER |
03C8H | CD6004 | CALL 0460H | Call COPY_AND_CONFIGURE_DMA |
03CBH | CDAA05 | CALL 05AAH | Call WAIT_VINT |
03CEH | CDD403 | CALL 03D4H | Call SYNC_COMMON_150 |
03D1H | C35707 | JP 0757H | Jump to LOOP_MASTER |
# | Binary | ASM | Comment |
---|---|---|---|
void syncCommon150(){ byte A; A = 0x96; // 150 memw(0x8001, A); do { syncCommon(); A = memr(0x8001); A--; memw(0x8001, A); } while (A > 0); } |
|||
03D4H | 3E96 | LD A,96H | A = 150 |
03D6H | 320180 | LD (8001H),A | MEM(0x0001) = A |
03D9H | CDBA07 | CALL 07BAH | Call SYNC_COMMON |
03DCH | 3A0180 | LD A,(8001H) | A = MEM(0x0001) |
03DFH | 3D | DEC A | A-- |
03E0H | 320180 | LD (8001H),A | MEM(0x0001) = A |
03E3H | C2D903 | JP NZ,03D9H | If NOT ZERO jump to 03D9H |
03E6H | C9 | RET | return |
# | Binary | ASM | Comment |
---|---|---|---|
03E7H | 3E96 | LD A,96H | A = 0x150 |
03E9H | 320180 | LD (8001H),A | MEM(0x0001) = A |
03ECH | CDCB08 | CALL 08CBH | Call READ_COMMON |
03EFH | 3A0180 | LD A,(8001H) | A = MEM(0x0001) |
03F2H | 3D | DEC A | A-- |
03F3H | 320180 | LD (8001H),A | MEM(0x0001) = A |
03F6H | C2EC03 | JP NZ,03ECH | If NOT ZERO jump to 03ECH |
03F9H | C9 | RET | return |
# | Binary | ASM | Comment |
---|---|---|---|
void resetComm(){ memw(0xC000, 5); resetDlc(); resetDma(); iow(0x60, 0); iow(0x40, 0); memw(0x800E, 0); memw(0x8006, 0); memw(0x8007, 0); memw(0x8003, 2); // 0 = relay, 1 = master, 2 = slave byte a = memr(0xC001); if (a == 0) { // relay memw(0x8007, 1); memw(0xC004, 1); return; } a--; if (a == 0) { // master return; } else { // slave memw(0x8006, 1); return; } } | |||
0403H | 3E05 | LD A,05H | A = 5 |
0405H | 3200C0 | LD (0C000H),A | SHARE(0x0000) = A |
0408H | CD8605 | CALL 0586H | Call RESET_DLC |
040BH | CD9D05 | CALL 059DH | Call RESET_DMA |
040EH | AF | XOR A | A ^= A (=0) |
040FH | D360 | OUT (60H),A | write ZFG |
0411H | D340 | OUT (40H),A | write SYN |
0413H | 320E80 | LD (800EH),A | MEM(0x000E) = A |
0416H | 320680 | LD (8006H),A | MEM(0x0006) = A |
0419H | 320780 | LD (8007H),A | MEM(0x0007) = A |
041CH | 3E02 | LD A,02H | A = 2 |
041EH | 320380 | LD (8003H),A | MEM(0x0003) = A |
0421H | 3A01C0 | LD A,(0C001H) | A = SHARE(0x0001) |
0424H | B7 | OR A | OR A |
0425H | CA3204 | JP Z,0432H | If A = 0 jump to 0432H |
0428H | 3D | DEC A | A-- |
0429H | CA3A04 | JP Z,043AH | If A = 0 jump to 043AH |
042CH | 3E01 | LD A,01H | A = 1 |
042EH | 320680 | LD (8006H),A | MEM(0x0006) = A |
0431H | C9 | RET | return |
0432H | 3E01 | LD A,01H | A = 1 |
0434H | 320780 | LD (8007H),A | MEM(0x0007) = A |
0437H | 3204C0 | LD (C004H),A | SHARE(0x0004) = A |
043AH | C9 | RET | return |
# | Binary | ASM | Comment |
---|---|---|---|
void testVInt120(){ byte A = 120; memw(0x8001, A); do { waitVInt(); A = memr(0x8001) A-- memw(0x8001, A); } while(A > 0); } |
|||
043BH | 3E78 | LD A,78H | A = 0x78 |
043DH | 320180 | LD (8001H),A | MEM(0x0001) = A |
0440H | CDA605 | CALL 05A6H | Call 05A6H |
0443H | 3A0180 | LD A,(8001H) | A = MEM(0x0001) |
0446H | 3D | DEC A | A-- |
0447H | 320180 | LD (8001H),A | MEM (0x0001) = A |
044AH | C24004 | JP NZ,0440H | If NOT ZERO jump to 0440H |
044DH | C9 | RET |
# | Binary | ASM | Comment |
---|---|---|---|
void setupRegisters(int HL, int B){ byte C; do { C = memr(HL); HL++; iow(C, memr(HL)); B--; } while (B > 0); } |
|||
044EH | 4E | LD C,(HL) | C = *HL* |
044FH | 23 | INC HL | HL++ |
0450H | EDA3 | OUTI | read from HL, write to C, decrease B |
0452H | C24E04 | JP NZ,044EH | while B > 0 jump to 044EH |
0455H | C9 | RET | return |
# | Binary | ASM | Comment |
---|---|---|---|
void zeroInternalMemory(){ zeroMemory(0x8000, 0x1FF0); } |
|||
0456H | 210080 | LD HL,8000H | HL = 0x8000 |
0459H | 01F01F | LD BC,1FF0H | BC = 0x1FF0 |
045CH | CDFA03 | CALL 03FAH | Call ZERO_MEMORY |
045FH | C9 | RET | return |
# | Binary | ASM | Comment |
---|---|---|---|
0460H | 218000 | LD HL,0080H | HL = 0x0080 |
0463H | 11C080 | LD DE,80C0H | DE = 0x80C0 |
0466H | 011400 | LD BC,0014H | BC = 0x0014 |
0469H | EDB0 | LDIR | copy 0x0014 bytes from 0x0080 to 0x80C0; DMA Config CH3 |
046BH | 219400 | LD HL,0094H | HL = 0x0094 |
046EH | 11A080 | LD DE,80A0H | DE = 0x80A0 |
0471H | 011400 | LD BC,0014H | BC = 0x0014 |
0474H | EDB0 | LDIR | copy 0x0014 bytes from 0x0094 to 0x80A0; DMA Config CH2 |
0476H | 218000 | LD HL,0080H | HL = 0x0080 |
0479H | 110081 | LD DE,8100H | DE = 0x8100 |
047CH | 011400 | LD BC,0014H | BC = 0x0014 |
047FH | EDB0 | LDIR | copy 0x0014 bytes from 0x0080 to 0x8100; DMA Config CH3 |
0481H | 219400 | LD HL,0094H | HL = 0x0094 |
0484H | 11E080 | LD DE,80E0H | DE = 0x80E0 |
0487H | 011400 | LD BC,0014H | BC = 0x0014 |
048AH | EDB0 | LDIR | copy 0x0014 bytes from 0x0094 to 0x80E0; DMA Config CH2 |
048CH | 21F800 | LD HL,00F8H | HL = 0x00F8 |
048FH | 114080 | LD DE,8040H | DE = 0x8040 |
0492H | 012600 | LD BC,0026H | BC = 0x0026 |
0495H | EDB0 | LDIR | copy 0x0026 bytes from 0x00F8 to 0x8040 |
0497H | 21F800 | LD HL,00F8H | HL = 0x00F8 |
049AH | 117080 | LD DE,8070H | DE = 0x8070 |
049DH | 012600 | LD BC,0026H | BC = 0x0026 |
04A0H | EDB0 | LDIR | copy 0x0026 bytes from 0x00F8 to 0x8070 |
04A2H | 3A0880 | LD A,(8008H) | A = MEM(0x0008); total node count |
04A5H | 87 | ADD A,A | A += A |
04A6H | 4F | LD C,A | C = A |
04A7H | 214401 | LD HL,0144H | HL = 0x0144 |
04AAH | 09 | ADD HL,BC | HL += BC; HL = 0x146 on 1.x |
04ABH | 7E | LD A,(HL) | A = *HL* |
04ACH | 23 | INC HL | HL++ |
04ADH | 66 | LD H,(HL) | H = *HL* |
04AEH | 6F | LD L,A | L = A; HL = 0x0154 on 1.x |
04AFH | 3A0980 | LD A,(8009H) | A = MEM(0x0009); local node id |
04B2H | 87 | ADD A,A | A += A |
04B3H | 5F | LD E,A | E = A |
04B4H | 1600 | LD D,00H | D = 0x00 |
04B6H | 19 | ADD HL,DE | HL += DE; HL = 0x156 on 1.1 |
04B7H | 7E | LD A,(HL) | A = *HL* |
04B8H | 23 | INC HL | HL++ |
04B9H | 66 | LD H,(HL) | H = *HL* |
04BAH | 6F | LD L,A | L = A; HL = 0x019E on 1.1 |
04BBH | 7E | LD A,(HL) | A = *HL*; A = 0x00 on 1.1 |
04BCH | 320A80 | LD (800AH),A | MEM(0x000A) = A |
04BFH | 0602 | LD B,02H | B = 0x02 |
04C1H | DD214080 | LD IX,8040H | IX = 0x8040 |
04C5H | 23 | INC HL | HL++; 0x19F on 1.1a, 0x01A5 on 1.1b |
04C6H | 7E | LD A,(HL) | A = *HL*; 0x0A on 1.1a, 0x01 on 1.1b |
04C7H | DD7705 | LD (IX+05H),A | MEM(IX+0x05) = A |
04CAH | 23 | INC HL | HL++; 0x01A0 on 1.1a, 0x01A6 on 1.1b |
04CBH | 7E | LD A,(HL) | A = *HL*; 0x84 on 1.1a, 0x0A on 1.1b |
04CCH | DD7707 | LD (IX+07H),A | MEM(IX+0x07) = A |
04CFH | 23 | INC HL | HL++; 0x01A1 on 1.1a, 0x01A7 on 1.1b |
04D0H | 7E | LD A,(HL) | A = *HL*; 0xD4 on 1.1a, 0x84 on 1.1b |
04D1H | DD7711 | LD (IX+11H),A | MEM(IX+0x11) = A |
04D4H | 23 | INC HL | HL++; HL = 0x01A2 on 1.1a, 0x01A8 on 1.1b |
04D5H | 7E | LD A,(HL) | A = *HL*; 0xC1 on 1.1a, 0xD4 on 1.1b |
04D6H | DD7713 | LD (IX+13H),A | MEM(IX+0x13) = A |
04D9H | 23 | INC HL | HL++; 0x01A3 on 1.1a, 0x01A9 on 1.1b |
04DAH | 7E | LD A,(HL) | A = *HL*; 0xC3 on 1.1a, 0xC1 on 1.1b |
04DBH | DD770B | LD (IX+0BH),A | MEM(IX+0x0B) = A |
04DEH | DD7717 | LD (IX+17H),A | MEM(IX+0x17) = A |
04E1H | 23 | INC HL | HL++; 0x01A4 on 1.1a, 0x01AA on 1.1b |
04E2H | 7E | LD A,(HL) | A = *HL*; 0x01 on 1.1a, 0xC3 on 1.1b |
04E3H | DD770D | LD (IX+0DH),A | MEM(IX+0x0D) = A |
04E6H | DD7719 | LD (IX+19H),A | MEM(IX+0x19) = A |
04E9H | DD217080 | LD IX,8070H | IX = 0x8070 |
04EDH | 10D6 | DJNZ 04C5H ; (-2ah) | B--; If B > 0 jump to 04C5H |
04EFH | DD21C080 | LD IX,80C0H | |
04F3H | FD21A080 | LD IY,80A0H | |
04F7H | 216D03 | LD HL,036DH | HL = 0x36D |
04FAH | 09 | ADD HL,BC | HL += BC |
04FBH | 09 | ADD HL,BC | HL += BC |
04FCH | 09 | ADD HL,BC | HL += BC; BC = 0x02 on 1.1; HL = 0x0373 on 1.1 |
04FDH | 7E | LD A,(HL) | A = *HL*; 0x00 on 1.1 |
04FEH | 321380 | LD (8013H),A | MEM(0x0013H) = A |
0501H | 23 | INC HL | HL++; 0x0374 on 1.1 |
0502H | 4E | LD C,(HL) | C = *HL*; 0xC3 on 1.1 |
0503H | DD710B | LD (IX+0BH),C | |
0506H | FD710B | LD (IY+0BH),C | |
0509H | 23 | INC HL | HL++; 0x0375 on 1.1 |
050AH | 46 | LD B,(HL) | B = *HL*; 0x01 on 1.1 |
050BH | DD700D | LD (IX+0DH),B | |
050EH | FD700D | LD (IY+0DH),B | |
0511H | 23 | INC HL | HL++; 0x0376 on 1.1 |
0512H | 03 | INC BC | BC++; 0x01C4 on 1.1 |
0513H | EB | EX DE,HL | Exchange DE and HL |
0514H | 210A84 | LD HL,840AH | HL = 0x840A |
0517H | DD7505 | LD (IX+05H),L | |
051AH | DD7407 | LD (IX+07H),H | |
051DH | DD210081 | LD IX,8100H | |
0521H | 09 | ADD HL,BC | HL += BC; HL = 0x85CE on 1.1 |
0522H | DD7505 | LD (IX+05H),L | |
0525H | DD7407 | LD (IX+07H),H | |
0528H | 3A0780 | LD A,(8007H) | A = MEM(0x0007) |
052BH | B7 | OR A | A |= A |
052CH | 201C | JR NZ,054AH ; (+1ch) | If NOT ZERO jump to 054AH; 1 = Relay, 0 = Master/Slave |
052EH | 21CE85 | LD HL,85CEH | HL = 0x85CE; start master/slave |
0531H | 220F80 | LD (800FH),HL | MEM(0x000F) = L; MEM(0x0010) = H; |
0534H | FD7505 | LD (IY+05H),L | |
0537H | FD7407 | LD (IY+07H),H | |
053AH | FD21E080 | LD IY,80E0H | |
053EH | 09 | ADD HL,BC | HL += BC; HL = 0x8792 on 1.1; BC = 0x01C4 on 1.1 |
053FH | FD7505 | LD (IY+05H),L | |
0542H | FD7407 | LD (IY+07H),H | |
0545H | 221180 | LD (8011H),HL | MEM(0x0011) = L; MEM(0x0012) = H |
0548H | 1822 | JR 056CH ; (+22h) | Jump to 056CH; end of master/slave |
054AH | 210A84 | LD HL,840AH | ; start relay |
054DH | FD7505 | LD (IY+05H),L | |
0550H | FD7407 | LD (IY+07H),H | |
0553H | FD21E080 | LD IY,80E0H | |
0557H | 09 | ADD HL,BC | |
0558H | FD7505 | LD (IY+05H),L | |
055BH | FD7407 | LD (IY+07H),H | |
055EH | 217A84 | LD HL,847AH | |
0561H | 220F80 | LD (800FH),HL | |
0564H | 09 | ADD HL,BC | |
0565H | 221180 | LD (8011H),HL | |
0568H | AF | XOR A | |
0569H | 3202C0 | LD (0C002H),A | ; end of relay |
056CH | 1A | LD A,(DE) | ; DE = 0x0376 on 1.1; A = 0x00 on 1.1 |
056DH | DD770B | LD (IX+0BH),A | |
0570H | FD770B | LD (IY+0BH),A | |
0573H | 13 | INC DE | ; DE = 0x0377 on 1.1 |
0574H | 1A | LD A,(DE) | ; A = 0x00 on 1.1 |
0575H | DD770D | LD (IX+0DH),A | |
0578H | FD770D | LD (IY+0DH),A | |
057BH | 3E01 | LD A,01H | A = 0x01 |
057DH | D360 | OUT (60H),A | write A to ZFG |
057FH | 213102 | LD HL,0231H | HL = 0x0231 |
0582H | 220EC0 | LD (0C00EH),HL | SHARE(0x000E) = L; SHARE(0x000F) = H |
0585H | C9 | RET | return |
# | Binary | ASM | Comment |
---|---|---|---|
void resetDlc(){ ior(0x0C); iow(0x0C, 0x60); for(b=0x10;b>0;b--){ ior(0x08); ior(0x0F); } setupRegisters(0x011E, 0x0C); } |
|||
0586H | DB0C | IN A,(0CH) | read DLC 'Transmit status' |
0588H | 3E60 | LD A,60H | A = 0x60 |
058AH | D30C | OUT (0CH),A | write DLC 'Transmit status' |
058CH | 0610 | LD B,10H | B = 0x10 |
058EH | DB08 | IN A,(08H) | read DLC 'Receive status 0' |
0590H | DB0F | IN A,(0FH) | read DLC 'Serial data' |
0592H | 10FA | DJNZ 058EH ; (-06h) | B--; if (B != 0) jump to 058EH |
0594H | 211E01 | LD HL,011EH | HL = 0x011E |
0597H | 060C | LD B,0CH | B = 0x0C |
0599H | CD4E04 | CALL 044EH | Call 044EH |
059CH | C9 | RET | return |
# | Binary | ASM | Comment |
---|---|---|---|
void resetDma(){ setupRegisters(0x013E, 0x03); } |
|||
059DH | 213E01 | LD HL,013EH | HL = 0x013E |
05A0H | 0603 | LD B,03H | B = 0x03 |
05A2H | CD4E04 | CALL 044EH | Call 044EH |
05A5H | C9 | RET | return |
# | Binary | ASM | Comment |
---|---|---|---|
void waitVInt(){ byte a = 2; iow(0x40, a); // enable vint a ^= a; // 2 ^ 2 = 0? memw(0x8000, a); enableIrqs(); hl = 0x8000; while (memr(hl) - a == 0){} memw(hl, a); } |
|||
05A6H | 3E02 | LD A,02H | A = 2 |
05A8H | D340 | OUT (40H),A | write A to SYN |
05AAH | AF | XOR A | A ^= A (=0) |
05ABH | 320080 | LD (8000H),A | MEM(0x0000) = A |
05AEH | FB | EI | enable interrupts |
05AFH | 210080 | LD HL,8000H | HL = 0x8000 |
05B2H | AF | XOR A | A ^= A (=0) |
05B3H | BE | CP (HL) | X = A - *HL* |
05B4H | CAB305 | JP Z,05B3H | If ZERO jump to 05B3H |
05B7H | 77 | LD (HL),A | *HL* = A |
05B8H | C9 | RET | return |
# | Binary | ASM | Comment |
---|---|---|---|
void setupRingMaster(){ byte A; byte R; ior(0x08); setupRegisters(0x011E, 0x10); iow(0x40, 0x02); // enable vint A = 0x4B; do { R = sendByteBeforeVInt(A); } while(R != A); wait255(); A = 0x61; do { R = sendByteBeforeVInt(A); } while(R != A); wait255(); A = 0x7A; do { R = sendByteBeforeVInt(A); } while(R != A); waitVInt; wait255(); do { R = sendByteBeforeVInt(A); } while(R != A); waitVInt; wait255(); A = 0x01; memw(0x8009) = A; memw(0xC002) = A; // this is the node id R = sendByteBeforeVInt(A); memw(0x8008) = R; memw(0xC003) = R; // this is the node count waitVInt; wait255(); A = memr(0x8008); R = sendByteBeforeVInt(A); flushRXTX(); disableRXTX(); validateRingSize(); } |
|||
05B9H | DB08 | IN A,(08H) | read DLC 'Receive status 0' |
05BBH | 211E01 | LD HL,011EH | HL = 0x011E |
05BEH | 0610 | LD B,10H | B = 0x10 |
05C0H | CDF409 | CALL 09F4H | Call SETUP_REGISTERS_HL_B |
05C3H | 3E02 | LD A,02H | A = 2 |
05C5H | D340 | OUT (40H),A | write A to SYN |
05C7H | 3E4B | LD A,4BH | A = 0x4B |
05C9H | CD2006 | CALL 0620H | Call SEND_BYTE_BEFORE_VINT |
05CCH | FE4B | CP 4BH | x = A - 0x4B |
05CEH | C2C705 | JP NZ,05C7H | If NOT ZERO jump to 05C7H; loop to test if A gets sent over the ring before a VINT happens. |
05D1H | CD4307 | CALL 0743H | Call WAIT_255 |
05D4H | 3E61 | LD A,61H | A = 0x61 |
05D6H | CD2006 | CALL 0620H | Call SEND_BYTE_BEFORE_VINT |
05D9H | FE61 | CP 61H | x = A - 0x61 |
05DBH | C2D405 | JP NZ,05D4H | If NOT ZERO jump to 05D4H; loop to test if A gets sent over the ring before a VINT happens. |
05DEH | CD4307 | CALL 0743H | Call WAIT_255 |
05E1H | 3E7A | LD A,7AH | A = 0x7A |
05E3H | CD2006 | CALL 0620H | Call SEND_BYTE_BEFORE_VINT |
05E6H | FE7A | CP 7AH | x = A - 0x7A |
05E8H | C2E105 | JP NZ,05E1H | If NOT ZERO jump to 05E1H; loop to test if A gets sent over the ring before a VINT happens. |
05EBH | CDAA05 | CALL 05AAH | Call WAIT_VINT |
05EEH | CD4307 | CALL 0743H | Call WAIT_255 |
05F1H | CD2006 | CALL 0620H | Call SEND_BYTE_BEFORE_VINT |
05F4H | CDAA05 | CALL 05AAH | Call WAIT_VINT |
05F7H | CD4307 | CALL 0743H | Call WAIT_255 |
05FAH | 3E01 | LD A,01H | A = 0x01 |
05FCH | 320980 | LD (8009H),A | MEM(0x0009) = A |
05FFH | 3202C0 | LD (0C002H),A | SHARE(0x0002) = A |
0602H | CD2006 | CALL 0620H | Call SEND_BYTE_BEFORE_VINT; this gets called with A = 0x01, result value may be larger |
0605H | 320880 | LD (8008H),A | MEM(0x0008) = A |
0608H | 3203C0 | LD (0C003H),A | SHARE(0x0003) = A |
060BH | CDAA05 | CALL 05AAH | Call WAIT_VINT |
060EH | CD4307 | CALL 0743H | Call WAIT_255 |
0611H | 3A0880 | LD A,(8008H) | A = MEM(0x0008) |
0614H | CD2006 | CALL 0620H | Call SEND_BYTE_BEFORE_VINT |
0617H | CDFA06 | CALL 06FAH | Call FLUSH_RXTX |
061AH | CD1B07 | CALL 071BH | Call DISABLE_RXTX |
061DH | C3AC06 | JP 06ACH | Jump to VALIDATE_RING_SIZE |
# | Binary | ASM | Comment |
---|---|---|---|
0620H | 320B80 | LD (800BH),A | MEM(0x000B) = A |
0623H | CDAA05 | CALL 05AAH | Call WAIT_VINT |
0626H | CD3107 | CALL 0731H | Call FLUSH_RX |
0629H | 21A800 | LD HL,00A8H | HL = 0x00A8 |
062CH | 060A | LD B,0AH | B = 0x0A |
062EH | CDF409 | CALL 09F4H | Call SETUP_REGISTERS_HL_B |
0631H | 218000 | LD HL,0080H | HL = 0x0080 |
0634H | 060A | LD B,0AH | B = 0x0A |
0636H | CDF409 | CALL 09F4H | Call SETUP_REGISTERS_HL_B |
0639H | CD2807 | CALL 0728H | Call ENABLE_RXTX |
063CH | 3E3F | LD A,3FH | A = 0x3F |
063EH | D317 | OUT (17H),A | write A to DLC 'Mask'; this may trigger a DMA transfer |
0640H | DB28 | IN A,(28H) | read DMA 'Status Register'; 0x88, 0x80, ... 0xC4 |
0642H | E604 | AND 04H | A &= 4 |
0644H | C25306 | JP NZ,0653H | If NON ZERO jump to 0653H |
0647H | 3A0080 | LD A,(8000H) | A = MEM(0x0000) |
064AH | B7 | OR A | A |= A |
064BH | F24006 | JP P,0640H | If ?? jump to Call 0640H |
064EH | 3EFF | LD A,0FFH | A = 0xFF |
0650H | 320B80 | LD (800BH),A | MEM(0x000B) = A |
0653H | CD3107 | CALL 0731H | Call FLUSH_RX |
0656H | 3A0C80 | LD A,(800CH) | A = MEM(0x000C) |
0659H | C9 | RET | return |
# | Binary | ASM | Comment |
---|---|---|---|
065AH | DB08 | IN A,(08H) | read DLC 'Receive status 0' |
065CH | 211E01 | LD HL,011EH | HL = 0x011E |
065FH | 0610 | LD B,10H | B = 0x10 |
0661H | CDF409 | CALL 09F4H | Call SETUP_REGISTERS_HL_B |
0664H | CDBA06 | CALL 06BAH | Call TRANSFER_SINGLE_BYTE_0 |
0667H | FE4B | CP 4BH | x = A - 4BH |
0669H | C26406 | JP NZ,0664H | If NOT ZERO jump to 0664H |
066CH | CDBA06 | CALL 06BAH | Call TRANSFER_SINGLE_BYTE_0 |
066FH | FE61 | CP 61H | x = A - 61H |
0671H | C26C06 | JP NZ,066CH | If NOT ZERO jump to 066CH |
0674H | CDBA06 | CALL 06BAH | Call TRANSFER_SINGLE_BYTE_0 |
0677H | FE7A | CP 7AH | x = A - 7AH |
0679H | C27406 | JP NZ,0674H | If NOT ZERO jump to 0674H |
067CH | CDBA06 | CALL 06BAH | Call TRANSFER_SINGLE_BYTE_0 |
067FH | 3A0680 | LD A,(8006H) | A = MEM(0x0006) |
0682H | 57 | LD D,A | D = A; 0x01 on slave, 0x00 on relay |
0683H | CDBC06 | CALL 06BCH | Call TRANSFER_SINGLE_BYTE_D |
0686H | 320980 | LD (8009H),A | MEM(0x0009) = A |
0689H | CDBA06 | CALL 06BAH | Call TRANSFER_SINGLE_BYTE_0 |
068CH | 320880 | LD (8008H),A | MEM(0x0008) = A |
068FH | 3203C0 | LD (0C003H),A | SHARE(0x0003) = A |
0692H | CDFA06 | CALL 06FAH | Call FLUSH_RXTX |
0695H | CD1B07 | CALL 071BH | Call DISABLE_RXTX |
0698H | 3A0980 | LD A,(8009H) | A = MEM(0x0009) |
069BH | FE01 | CP 01H | x = A - 0x01 |
069DH | 2807 | JR Z,06A6H ; (+07h) | If ZERO jump to 06A6H |
069FH | 47 | LD B,A | B = A |
06A0H | 3A0880 | LD A,(8008H) | A = MEM(0x0008) |
06A3H | C602 | ADD A,02H | A += 0x02 |
06A5H | 90 | SUB B | x = A - B |
06A6H | 320980 | LD (8009H),A | MEM(0x0009) = A |
06A9H | 3202C0 | LD (0C002H),A | SHARE(0x0002) = A |
continued in VALIDATE_RING_SIZE |
# | Binary | ASM | Comment |
---|---|---|---|
void validateRingSize(){ byte A; A = memr(0x8008); if (A < 9){ return; } else { memw(0xC000, A); disableInterrupts(); System.exit(A); } } |
|||
06ACH | 3A0880 | LD A,(8008H) | A = MEM(0x0008) |
06AFH | FE09 | CP 09H | x = A - 0x09 |
06B1H | DAB906 | JP C,06B9H | If LESS jump to 06B9H |
06B4H | 3200C0 | LD (0C000H),A | SHARE(0x0000) = A |
06B7H | F3 | DI | disable interrupts |
06B8H | 76 | HALT | halt cpu |
06B9H | C9 | RET | return |
# | Binary | ASM | Comment |
---|---|---|---|
06BAH | 1600 | LD D,00H | D = 0 |
06BCH | CD3107 | CALL 0731H | Call FLUSH_RX |
06BFH | 219400 | LD HL,0094H | HL = 0x0094 |
06C2H | 060A | LD B,0AH | B = 0x0A |
06C4H | CDF409 | CALL 09F4H | Call SETUP_REGISTERS_HL_B |
06C7H | 218000 | LD HL,0080H | HL = 0x0080 |
06CAH | 060A | LD B,0AH | B = 0x0A |
06CCH | CDF409 | CALL 09F4H | Call SETUP_REGISTERS_HL_B |
06CFH | 3E80 | LD A,80H | A = 0x80 |
06D1H | D30A | OUT (0AH),A | write A to DLC 'Receive control' |
06D3H | 3EBF | LD A,0BFH | A = 0x0B |
06D5H | D317 | OUT (17H),A | write A to DLC 'Mask' |
06D7H | DB28 | IN A,(28H) | read DMA 'Status Register' to A |
06D9H | E604 | AND 04H | A &= 0x04 |
06DBH | CAD706 | JP Z,06D7H | If ZERO jump to 06D7H |
06DEH | 3A0B80 | LD A,(800BH) | A = MEM(0x000B) |
06E1H | 82 | ADD A,D | A += D |
06E2H | 57 | LD D,A | D = A |
06E3H | 320B80 | LD (800BH),A | MEM(0x000B) = A |
06E6H | 3E80 | LD A,80H | A = 0x80 |
06E8H | D30D | OUT (0DH),A | write A to DLC 'Transmit control' |
06EAH | 3E7F | LD A,7FH | A = 0x7F |
06ECH | D317 | OUT (17H),A | write A to DLC 'Mask' |
06EEH | DB28 | IN A,(28H) | read DMA 'Status Register' to A |
06F0H | E608 | AND 08H | A &= 0x08 |
06F2H | CAEE06 | JP Z,06EEH | If ZERO jump to 06EEH |
06F5H | CD3107 | CALL 0731H | Call FLUSH_RX |
06F8H | 7A | LD A,D | A = D |
06F9H | C9 | RET | return |
# | Binary | ASM | Comment |
---|---|---|---|
06FAH | DB0C | IN A,(0CH) | read DLC 'Transmit status' to A |
06FCH | E604 | AND 04H | A &= 0x04 |
06FEH | CAFA06 | JP Z,06FAH | If ZERO jump to 06FAH |
0701H | DB09 | IN A,(09H) | read DLC 'Receive status 1' to A |
0703H | DB08 | IN A,(08H) | read DLC 'Receive status 0' to A |
0705H | E601 | AND 01H | A &= 0x01 |
0707H | CA0F07 | JP Z,070FH | If ZERO jump to 070FH |
070AH | DB0F | IN A,(0FH) | read DLC 'Serial data' to A |
070CH | C30107 | JP 0701H | Jump to 0701H |
070FH | DB0C | IN A,(0CH) | read DLC 'Transmit status' to A |
0711H | AF | XOR A | A ^= A (=0) |
0712H | D30C | OUT (0CH),A | write A to DLC 'Transmit status' |
0714H | 3EFF | LD A,0FFH | A = 0xFF |
0716H | D317 | OUT (17H),A | write A to DLC 'Mask' |
0718H | DB28 | IN A,(28H) | read DMA 'Status Register' to A |
071AH | C9 | RET | return |
# | Binary | ASM | Comment |
---|---|---|---|
void flushRX(){ byte A; flushRXTX(); do { ior(0x09); A = ior(0x08); A &= 0x01; if (A == 0) { break; } A = ior(0x0F); } } |
|||
0731H | CDFA06 | CALL 06FAH | Call FLUSH_RXTX |
0734H | DB09 | IN A,(09H) | read DLC 'Receive status 1' to A |
0736H | DB08 | IN A,(08H) | read DLC 'Receive status 0' to A |
0738H | E601 | AND 01H | A &= 0x01 |
073AH | CA4207 | JP Z,0742H | If ZERO jump to 0742H |
073DH | DB0F | IN A,(0FH) | read DLC 'Serial data' |
073FH | C33407 | JP 0734H | Jump to 0734H |
0742H | C9 | RET | return |
# | Binary | ASM | Comment |
---|---|---|---|
void wait255(){ byte a = 0; ' a ^= a do (){ a--; } while (a > 0); } |
|||
0743H | AF | XOR A | A ^= A |
0744H | 3D | DEC A | A-- |
0745H | C24407 | JP NZ,0744H | If NON ZERO jump to 0744H |
0748H | C9 | RET | return |
# | Binary | ASM | Comment |
---|---|---|---|
void wait20(){ byte a = 0x14; do (){ a--; } while (a > 0); } |
|||
0749H | 3E14 | LD A,14H | |
074BH | 3D | DEC A | |
074CH | C24B07 | JP NZ,074BH | |
074FH | C9 | RET |
# | Binary | ASM | Comment |
---|---|---|---|
void wait40(){ byte a = 0x28; do (){ a--; } while (a > 0); } |
|||
0750H | 3E28 | LD A,28H | |
0752H | 3D | DEC A | |
0753H | C25207 | JP NZ,0752H | |
0756H | C9 | RET |
# | Binary | ASM | Comment |
---|---|---|---|
0757H | 3E00 | LD A,00H | |
0759H | 3200C0 | LD (0C000H),A | ; Status = 0 |
075CH | CDBA07 | CALL 07BAH | Call SYNC_COMMON |
075FH | CD4307 | CALL 0743H | Call WAIT_255 |
0762H | CDB409 | CALL 09B4H | Call COPY_SHARE_TO_INT |
0765H | 3E01 | LD A,01H | |
0767H | 3200C0 | LD (0C000H),A | ; Status = 1 |
076AH | 21A080 | LD HL,80A0H | |
076DH | 060A | LD B,0AH | |
076FH | CDF409 | CALL 09F4H | Call SETUP_REGISTERS_HL_B |
0772H | 21C080 | LD HL,80C0H | |
0775H | 060A | LD B,0AH | |
0777H | CDF409 | CALL 09F4H | Call SETUP_REGISTERS_HL_B |
077AH | CDA007 | CALL 07A0H | Call TRANSFER_DATA |
077DH | CDBA07 | CALL 07BAH | Call SYNC_COMMON |
0780H | 3A1380 | LD A,(8013H) | A = MEM(0x0013) |
0783H | B7 | OR A | A |= A |
0784H | CA9A07 | JP Z,079AH | If ZERO jump to 079AH |
0787H | 21E080 | LD HL,80E0H | |
078AH | 060A | LD B,0AH | |
078CH | CDF409 | CALL 09F4H | Call SETUP_REGISTERS_HL_B |
078FH | 210081 | LD HL,8100H | |
0792H | 060A | LD B,0AH | |
0794H | CDF409 | CALL 09F4H | Call SETUP_REGISTERS_HL_B |
0797H | CDA007 | CALL 07A0H | Call TRANSFER_DATA |
079AH | CDCB09 | CALL 09CBH | Call COPY_INT_TO_SHARE |
079DH | C35707 | JP 0757H | Jump to LOOP_MASTER |
# | Binary | ASM | Comment |
---|---|---|---|
07A0H | CD2807 | CALL 0728H | Call ENABLE_RXTX |
07A3H | 3EBF | LD A,0BFH | |
07A5H | D317 | OUT (17H),A | write 0xBF to DLC 'Mask' |
07A7H | CD4307 | CALL 0743H | Call WAIT_255 |
07AAH | CD4307 | CALL 0743H | Call WAIT_255 |
07ADH | 3E3F | LD A,3FH | |
07AFH | D317 | OUT (17H),A | write 0x3F to DLC 'Mask'; this starts transmitting |
07B1H | 0604 | LD B,04H | |
07B3H | CD5409 | CALL 0954H | Call 0954H |
07B6H | CDFA06 | CALL 06FAH | Call FLUSH_RXTX |
07B9H | C9 | RET | return |
# | Binary | ASM | Comment |
---|---|---|---|
07BAH | CDFA06 | CALL 06FAH | Call FLUSH_RXTX |
07BDH | 21A800 | LD HL,00A8H | HL = 0x00A8 |
07C0H | 060A | LD B,0AH | B = 0x0A |
07C2H | CDF409 | CALL 09F4H | Call SETUP_REGISTERS_HL_B |
07C5H | 218000 | LD HL,0080H | HL = 0x0080 |
07C8H | 060A | LD B,0AH | B = 0x0A |
07CAH | CDF409 | CALL 09F4H | Call SETUP_REGISTERS_HL_B |
07CDH | DB08 | IN A,(08H) | read DLC 'Receive status 0' to A |
07CFH | CD2807 | CALL 0728H | Call ENABLE_RXTX |
07D2H | 3E33 | LD A,33H | A = 0x33 |
07D4H | 320C80 | LD (800CH),A | MEM(0x000C) = A |
07D7H | 3EBF | LD A,0BFH | A = 0xBF |
07D9H | D317 | OUT (17H),A | write A to DLC 'Mask' |
07DBH | 210080 | LD HL,8000H | HL = 0x8000 |
07DEH | AF | XOR A | A ^= A (=0) |
07DFH | 77 | LD (HL),A | *HL* = A |
07E0H | BE | CP (HL) | x = A - *HL* |
07E1H | CAE007 | JP Z,07E0H | If ZERO jump to 07E0H |
07E4H | 3A04C0 | LD A,(0C004H) | A = SHARE(0x0004) |
07E7H | 320B80 | LD (800BH),A | MEM(0x000B) = A |
07EAH | 3E3F | LD A,3FH | A = 0x3F |
07ECH | D317 | OUT (17H),A | write A to DLC 'Mask' |
07EEH | AF | XOR A | A ^= A (=0) |
07EFH | 320080 | LD (8000H),A | MEM(0x0000) = A |
07F2H | 320580 | LD (8005H),A | MEM(0x0005) = A |
07F5H | 210C80 | LD HL,800CH | HL = 0x800C |
07F8H | 3A0080 | LD A,(8000H) | A = MEM(0x0000) |
07FBH | B7 | OR A | A |= A |
07FCH | CA0F08 | JP Z,080FH | If ZERO jump to 080FH |
07FFH | 3A0580 | LD A,(8005H) | |
0802H | 3C | INC A | |
0803H | FE06 | CP 06H | |
0805H | D27A09 | JP NC,097AH | |
0808H | 320580 | LD (8005H),A | |
080BH | AF | XOR A | |
080CH | 320080 | LD (8000H),A | |
080FH | 7E | LD A,(HL) | A = *HL* |
0810H | FE33 | CP 33H | x = A - 0x33 |
0812H | CAF807 | JP Z,07F8H | If ZERO jump to 07F8H |
0815H | CDFA06 | CALL 06FAH | Call FLUSH_RXTX |
0818H | DB28 | IN A,(28H) | read DMA 'Status Register' to A |
081AH | CD4307 | CALL 0743H | Call WAIT_255 |
081DH | 21D000 | LD HL,00D0H | |
0820H | 060A | LD B,0AH | |
0822H | CDF409 | CALL 09F4H | Call SETUP_REGISTERS_HL_B |
0825H | 21BC00 | LD HL,00BCH | |
0828H | 060A | LD B,0AH | |
082AH | CDF409 | CALL 09F4H | Call SETUP_REGISTERS_HL_B |
082DH | DB08 | IN A,(08H) | read DLC 'Receive status 0' |
082FH | CD2807 | CALL 0728H | Call ENABLE_RXTX |
0832H | 3E3F | LD A,3FH | |
0834H | D317 | OUT (17H),A | write to DLC 'Mask' |
0836H | 0604 | LD B,04H | |
0838H | CD5409 | CALL 0954H | Call 0954H |
083BH | CDFA06 | CALL 06FAH | Call FLUSH_RXTX |
083EH | DB28 | IN A,(28H) | read DLC 'Receive status 0' |
0840H | C9 | RET | return |
# | Binary | ASM | Comment |
---|---|---|---|
0841H | 3E00 | LD A,00H | |
0843H | 3200C0 | LD (0C000H),A | ; Status = 0 |
0846H | CDCB08 | CALL 08CBH | Call READ_COMMON |
0849H | 3A0780 | LD A,(8007H) | A = MEM(0x0007) |
084CH | B7 | OR A | |
084DH | 2003 | JR NZ,0852H ; (+03h) | If NON ZERO jump to 0852H |
084FH | CDB409 | CALL 09B4H | Call COPY_SHARE_TO_INT |
0852H | 3E01 | LD A,01H | |
0854H | 3200C0 | LD (0C000H),A | ; Status = 1 |
0857H | 21A080 | LD HL,80A0H | |
085AH | 060A | LD B,0AH | |
085CH | CDF409 | CALL 09F4H | Call SETUP_REGISTERS_HL_B |
085FH | 21C080 | LD HL,80C0H | |
0862H | 060A | LD B,0AH | |
0864H | CDF409 | CALL 09F4H | Call SETUP_REGISTERS_HL_B |
0867H | 2A0F80 | LD HL,(800FH) | |
086AH | CD9308 | CALL 0893H | Call 0893H |
086DH | CDCB08 | CALL 08CBH | Call READ_COMMON |
0870H | 3A1380 | LD A,(8013H) | |
0873H | B7 | OR A | |
0874H | CA8D08 | JP Z,088DH | If ZERO jump to 088DH |
0877H | 21E080 | LD HL,80E0H | |
087AH | 060A | LD B,0AH | |
087CH | CDF409 | CALL 09F4H | Call SETUP_REGISTERS_HL_B |
087FH | 210081 | LD HL,8100H | |
0882H | 060A | LD B,0AH | |
0884H | CDF409 | CALL 09F4H | Call SETUP_REGISTERS_HL_B |
0887H | 2A1180 | LD HL,(8011H) | |
088AH | CD9308 | CALL 0893H | Call 0893H |
088DH | CDCB09 | CALL 09CBH | Call COPY_INT_TO_SHARE |
0890H | C34108 | JP 0841H | Jump to LOOP_SLAVE_RELAY |
# | Binary | ASM | Comment |
---|---|---|---|
0893H | CD2807 | CALL 0728H | Call ENABLE_RXTX |
0896H | 3EDB | LD A,0DBH | |
0898H | 77 | LD (HL),A | |
0899H | 47 | LD B,A | |
089AH | 3EBF | LD A,0BFH | |
089CH | D317 | OUT (17H),A | |
089EH | AF | XOR A | |
089FH | 3205C0 | LD (0C005H),A | |
08A2H | 320580 | LD (8005H),A | |
08A5H | 3A05C0 | LD A,(0C005H) | |
08A8H | B7 | OR A | |
08A9H | CABC08 | JP Z,08BCH | |
08ACH | 3A0580 | LD A,(8005H) | |
08AFH | 3C | INC A | |
08B0H | FE06 | CP 06H | |
08B2H | D27A09 | JP NC,097AH | |
08B5H | 320580 | LD (8005H),A | |
08B8H | AF | XOR A | |
08B9H | 3205C0 | LD (0C005H),A | |
08BCH | 78 | LD A,B | |
08BDH | BE | CP (HL) | |
08BEH | CAA508 | JP Z,08A5H | |
08C1H | 3E3F | LD A,3FH | |
08C3H | D317 | OUT (17H),A | |
08C5H | 0608 | LD B,08H | |
08C7H | CD5409 | CALL 0954H | Call 0954H |
08CAH | C9 | RET |
# | Binary | ASM | Comment |
---|---|---|---|
08CBH | CDFA06 | CALL 06FAH | Call FLUSH_RXTX |
08CEH | 219400 | LD HL,0094H | |
08D1H | 060A | LD B,0AH | |
08D3H | CDF409 | CALL 09F4H | Call SETUP_REGISTERS_HL_B |
08D6H | 218000 | LD HL,0080H | |
08D9H | 060A | LD B,0AH | |
08DBH | CDF409 | CALL 09F4H | Call SETUP_REGISTERS_HL_B |
08DEH | DB08 | IN A,(08H) | |
08E0H | CD2807 | CALL 0728H | Call ENABLE_RXTX |
08E3H | 210B80 | LD HL,800BH | |
08E6H | 3EBF | LD A,0BFH | |
08E8H | 3633 | LD (HL),33H | |
08EAH | D317 | OUT (17H),A | |
08ECH | AF | XOR A | A ^= A (=0) |
08EDH | 3205C0 | LD (0C005H),A | |
08F0H | 320580 | LD (8005H),A | |
08F3H | 3A05C0 | LD A,(0C005H) | |
08F6H | B7 | OR A | |
08F7H | CA0A09 | JP Z,090AH | If ZERO jump to 090AH |
08FAH | 3A0580 | LD A,(8005H) | |
08FDH | 3C | INC A | |
08FEH | FE06 | CP 06H | |
0900H | D27A09 | JP NC,097AH | |
0903H | 320580 | LD (8005H),A | |
0906H | AF | XOR A | |
0907H | 3205C0 | LD (0C005H),A | |
090AH | 7E | LD A,(HL) | A = MEM(0x000B) |
090BH | FE33 | CP 33H | x = A - 33 |
090DH | CAF308 | JP Z,08F3H | If ZERO jump to 08F3H |
0910H | 3E3F | LD A,3FH | |
0912H | D317 | OUT (17H),A | |
0914H | 3E01 | LD A,01H | |
0916H | D340 | OUT (40H),A | write 0x01 to SYN; enables DOP |
0918H | AF | XOR A | |
0919H | D340 | OUT (40H),A | write 0x00 to SYN; disables DOP |
091BH | DB28 | IN A,(28H) | read DMA 'Status Register' |
091DH | E608 | AND 08H | x = A &= 0x08 |
091FH | CA1B09 | JP Z,091BH | If ZERO jump to 091BH |
0922H | CDFA06 | CALL 06FAH | Call FLUSH_RXTX |
0925H | DB28 | IN A,(28H) | |
0927H | 21D000 | LD HL,00D0H | |
092AH | 060A | LD B,0AH | |
092CH | CDF409 | CALL 09F4H | Call SETUP_REGISTERS_HL_B |
092FH | 21BC00 | LD HL,00BCH | |
0932H | 060A | LD B,0AH | |
0934H | CDF409 | CALL 09F4H | Call SETUP_REGISTERS_HL_B |
0937H | DB08 | IN A,(08H) | |
0939H | CD2807 | CALL 0728H | Call ENABLE_RXTX |
093CH | 3EBF | LD A,0BFH | |
093EH | D317 | OUT (17H),A | |
0940H | 0604 | LD B,04H | |
0942H | CD5409 | CALL 0954H | Call 0954H |
0945H | 3E3F | LD A,3FH | |
0947H | D317 | OUT (17H),A | |
0949H | 0608 | LD B,08H | |
094BH | CD5409 | CALL 0954H | Call 0954H |
094EH | CDFA06 | CALL 06FAH | Call FLUSH_RXTX |
0951H | DB28 | IN A,(28H) | |
0953H | C9 | RET |
# | Binary | ASM | Comment |
---|---|---|---|
0954H | AF | XOR A | A = 0 |
0955H | 320580 | LD (8005H),A | MEM(0x0005) = A |
0958H | 3205C0 | LD (0C005H),A | SHARE(0x0005) = A |
095BH | 3A05C0 | LD A,(0C005H) | A = SHARE(0x0005) |
095EH | B7 | OR A | A |= A |
095FH | CA7209 | JP Z,0972H | If ZERO jump to 0972H |
0962H | 3A0580 | LD A,(8005H) | |
0965H | 3C | INC A | |
0966H | FE06 | CP 06H | |
0968H | D27A09 | JP NC,097AH | |
096BH | 320580 | LD (8005H),A | |
096EH | AF | XOR A | |
096FH | 3205C0 | LD (0C005H),A | |
0972H | DB28 | IN A,(28H) | read DMA 'Status Register' to A |
0974H | A0 | AND B | x = A &= B |
0975H | B8 | CP B | x = A - B |
0976H | C25B09 | JP NZ,095BH | If NON ZERO jump to 095BH |
0979H | C9 | RET | return |
# | Binary | ASM | Comment |
---|---|---|---|
097AH | AF | XOR A | |
097BH | 320A80 | LD (800AH),A | write 0x00 to MEM(0x000A) |
097EH | 21F800 | LD HL,00F8H | |
0981H | 114080 | LD DE,8040H | |
0984H | 012600 | LD BC,0026H | |
0987H | EDB0 | LDIR | copy 0x0026 bytes from 0x00F8 to 0x8040 |
0989H | 3E08 | LD A,08H | |
098BH | 3200C0 | LD (0C000H),A | |
098EH | 320E80 | LD (800EH),A | |
0991H | 3E01 | LD A,01H | |
0993H | 3203C0 | LD (0C003H),A | |
0996H | 3202C0 | LD (0C002H),A | |
0999H | 320980 | LD (8009H),A | |
099CH | 3E02 | LD A,02H | |
099EH | D340 | OUT (40H),A | write 0x02 to SYN (enable VINT) |
09A0H | FB | EI | enable interrupts |
09A1H | CDAF05 | CALL 05AFH | Call 05AFH |
09A4H | 3A04C0 | LD A,(0C004H) | |
09A7H | B7 | OR A | |
09A8H | CAA109 | JP Z,09A1H | If ZERO jump to 09A1H |
09ABH | CDD009 | CALL 09D0H | Call COPY_INT_TO_SHARE_X |
09AEH | CDB909 | CALL 09B9H | Call COPY_SHARE_TO_INT_X |
09B1H | C3A109 | JP 09A1H | Jump to 09A1H |
# | Binary | ASM | Comment |
---|---|---|---|
09B4H | 3E03 | LD A,03H | |
09B6H | 3200C0 | LD (0C000H),A | |
09B9H | 21F800 | LD HL,00F8H | |
09BCH | CDF209 | CALL 09F2H | Call SETUP_REGISTERS_HL_13 |
09BFH | 0603 | LD B,03H | |
09C1H | CDFC09 | CALL 09FCH | Call WAIT_DMA_STATUS_B |
09C4H | 3A0E80 | LD A,(800EH) | |
09C7H | 3200C0 | LD (0C000H),A | |
09CAH | C9 | RET |
# | Binary | ASM | Comment |
---|---|---|---|
09CBH | 3E02 | LD A,02H | |
09CDH | 3200C0 | LD (0C000H),A | SHARE(0x0000) = 0x02 |
09D0H | 3EFF | LD A,0FFH | |
09D2H | D32F | OUT (2FH),A | write 0xFF to DMA 'MultiChannel Mask Register' |
09D4H | CDEF09 | CALL 09EFH | Call SETUP_REGISTERS_8040_13 |
09D7H | 0603 | LD B,03H | |
09D9H | CDFC09 | CALL 09FCH | Call WAIT_DMA_STATUS_B |
09DCH | 3A0A80 | LD A,(800AH) | A = MEM(0x000A) |
09DFH | B7 | OR A | A |= A |
09E0H | CAEE09 | JP Z,09EEH | If ZERO jump to 09EEH |
09E3H | 217080 | LD HL,8070H | |
09E6H | CDF209 | CALL 09F2H | Call SETUP_REGISTERS_HL_13 |
09E9H | 0603 | LD B,03H | |
09EBH | CDFC09 | CALL 09FCH | Call WAIT_DMA_STATUS_B |
09EEH | C9 | RET | return |
# | Binary | ASM | Comment |
---|---|---|---|
void setupRegisters_HLB(){ setupRegisters_HLB(0x8040); } void setupRegisters_HLB(int HL){ setupRegisters_HLB(HL, 0x13); } void setupRegisters_HLB(int HL, int B){ do { byte C = memr(HL); HL++; iow(C, memr(HL)); B--; } while (B > 0); } |
|||
09EFH | 214080 | LD HL,8040H | HL = 0x8040 |
09F2H | 0613 | LD B,13H | B = 19 |
09F4H | 4E | LD C,(HL) | C = *HL* |
09F5H | 23 | INC HL | HL++ |
09F6H | EDA3 | OUTI | read from HL, write to C, decrease B |
09F8H | C2F409 | JP NZ,09F4H | while B > 0 jump to SETUP_REGISTERS_HL_B |
09FBH | C9 | RET | return |
# | Binary | ASM | Comment |
---|---|---|---|
09FCH | DB28 | IN A,(28H) | read DMA 'Status Register' |
09FEH | A0 | AND B | x = A &= B |
09FFH | B8 | CP B | x = x - B |
0A00H | C2FC09 | JP NZ,09FCH | If NON ZERO jump to 09FCH |
0A03H | C9 | RET | return |
0A04H | FF | RST 38H |
---|