+ dec hl
+ ld a, $02 ; Reply!
+ ld [hli], a
+ ld d, h
+ ld e, l
+ ld hl, 10 ; SHA + SPA
+ add hl, de ; Now DE points at SHA, and HL points at THA
+ ld c, 10
+.dcl: ld a, [de]
+ ld [hli], a
+ inc de
+ dec c
+ jr nz, .dcl
+ pop hl ; HL now points at SHA
+ ld de, myMAC
+ ld c, $06
+.mcl: ld a, [de]
+ ld [hli], a
+ inc de
+ dec c
+ jr nz, .mcl
+ ld de, myIP ; HL now points at SPA
+ ld c, $04
+.icl: ld a, [de]
+ ld [hli], a
+ inc de
+ dec c
+ jr nz, .icl
+ ld d, h
+ ld e, l ; HL now points at THA
+ ld hl, -32
+ add hl, de ; HL has now been backed up to the start of the ethernet header.
+ ld d, h
+ ld e, l ; DE now points at the dest
+ ld hl, 6
+ add hl, de ; HL now points at the source
+ ld c, $06
+.sdcl: ld a, [hli]
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .sdcl
+ ld hl, myMAC ; DE now points at the source
+ ld c, $06
+.smcl: ld a, [hli]
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .smcl
+ ld hl, -12
+ add hl, de ; HL now points at the start of the packet -- should be C000!
+ ld b, 0
+ ld c, 64 ; Minimum size packet; avoid transmitting a runt
+ call packet_send
+ PUTSIL "arp_input.req: sent response!"
+ ret
+.notourip:
+ PUTSIL "arp_input.req: Not aimed at us; ignoring."
+ pop hl
+ ret
+
+.resp:
+ PUTSIL "arp_input.resp: Response"