Faits :
A.
Le 21 avril 2016, A._ a déposé une plainte pénale pour diffamation, consécutive à une condamnation pour injures et menaces et à un refus d'entrer en matière sur une plainte précédente pour menaces et contrainte. Le 4 mai suivant, le Procureur chargé de la cause lui a retourné sa plainte, la jugeant incompréhensible et prolixe, et lui a fixé un délai pour y remédier. Le 10 mai 2016, A._ a écrit au Procureur général que le procureur saisi n'avait pas "les compétences nécessaires pour comprendre [son] français", voire négligeait systématiquement ses devoirs professionnels. Il demandait de "transférer toute procédure qui me concerne à un autre procureur". Le 17 mai 2016, le Procureur général lui a répondu qu'il n'entendait pas dessaisir le magistrat. Dans sa réponse, du 20 mai 2016, A._ lui a notamment demandé de "prendre connaissance" de sa demande de récusation. Celle-ci a été transmise, avec les observations du magistrat concerné, à la Chambre pénale de recours de la Cour de justice du canton de Genève. Par arrêt du 30 juin 2016, celle-ci a rejeté la requête de récusation, faute d'indices de partialité ou d'inimitié de la part du procureur. A._ a demandé à la cour cantonale de "rétracter" sa décision en prétendant n'avoir jamais requis de récusation. Il lui fut répondu que les lettres des 10 et 20 mai 2016 contenaient bien une demande en ce sens.
B.
Le 26 juillet 2016, A._ a adressé au Tribunal fédéral par courrier électronique, via IncaMail, un recours contre cet arrêt. Il fait valoir qu'il n'aurait jamais requis la récusation du procureur, ce qu'il aurait confirmé dans sa réplique du 6 juin 2016. Une telle demande serait par ailleurs sans objet puisque le procureur avait entre-temps transmis la cause au juge du fond.
Le recourant a été plusieurs fois invité à adresser son recours avec une signature valable ou à en faire parvenir une version avec signature manuscrite par poste ordinaire. Par lettre du 20 octobre 2016, le recourant a produit un exemplaire de son recours muni d'une signature manuscrite. Une avance de frais lui a été demandée; il y a par la suite été renoncé.
Invités à se déterminer, la Cour de justice et le Ministère public se réfèrent à l'arrêt attaqué, sans autres observations.

Considérant en droit :
1.
L'arrêt attaqué se rapporte à une demande de récusation en matière pénale. Conformément aux art. 78 et 92 al. 1 LTF, une telle décision peut faire immédiatement l'objet d'un recours en matière pénale. Le recours est formé contre une décision prise en dernière instance cantonale. Le recourant est destinataire de l'arrêt attaqué qui rejette une demande de récusation que le recourant prétend ne pas avoir formée, et qui met à sa charge 1'000 fr. de frais judiciaires. Il a donc qualité pour agir en vertu de l'art. 81 al. 1 LTF.
2.
Le recourant estime qu'il n'aurait pas requis la récusation du Ministère public. Invité par la Cour cantonale à se prononcer sur les déterminations du Ministère public, il aurait clairement indiqué qu'il n'entendait pas requérir de récusation sans pouvoir vérifier le contenu du dossier; une demande de récusation n'aurait d'ailleurs pas de sens puisque le Ministère public s'était déjà dessaisi de la cause.
2.1. En vertu de l'art. 42 al. 1 LTF, les mémoires de recours doivent être motivés. Conformément à l'art. 42 al. 2 LTF, les motifs doivent exposer succinctement en quoi l'acte attaqué viole le droit. Pour satisfaire à cette exigence, il appartient au recourant de discuter au moins brièvement les considérants de la décision litigieuse (<ref-ruling> consid. 2.1 p. 245). En outre, s'il entend se plaindre de la violation de ses droits fondamentaux, il doit respecter le principe d'allégation et indiquer précisément quelle disposition constitutionnelle a été violée en démontrant par une argumentation précise en quoi consiste la violation (art. 106 al. 2 LTF; <ref-ruling> consid. 3.2 p. 88).
2.2. En l'occurrence, le recourant reproche à la cour cantonale d'avoir statué sur une demande qu'il n'aurait pas formée. Il ne se plaint toutefois ni d'un formalisme excessif, ni d'une violation du principe de la bonne foi ou de son droit d'être entendu. Conformément à l'obligation de motiver rappelée ci-dessus, le Tribunal fédéral n'examine pas les griefs qui ne sont soulevés qu'implicitement, en particulier lorsqu'il s'agit de griefs d'ordre constitutionnel.
Le recours n'apparaît dès lors pas suffisamment motivé.
3.
A supposer qu'il le soit, il devrait de toute façon être rejeté.
3.1. Selon le principe de la bonne foi posé à l'art. 9 Cst. et l'interdiction du formalisme excessif (art. 29 al. 2 Cst.), l'autorité doit interpréter les actes de procédure qui lui sont adressés dans le sens que l'on peut raisonnablement leur prêter, sans s'arrêter aux éventuelles expressions inexactes (<ref-ruling> consid. 3b p. 58; <ref-ruling> consid. 2 p. 96 ss et les références).
3.2. Il ressort du dossier que le recourant a déposé le 21 avril 2016 une plainte pénale pour diffamation que le procureur lui a retournée le 4 mai suivant, la jugeant incompréhensible et prolixe. Le 10 mai 2016, le recourant a écrit au Procureur général, estimant que le procureur saisi n'avait pas "les compétences nécessaires pour comprendre [son] français", voire négligeait systématiquement ses devoirs professionnels, et demandant de "transférer toute procédure qui me concerne à un autre procureur". Le 17 mai 2016, le Procureur général lui a répondu qu'il n'était pas une autorité de recours contre les décisions des procureurs et qu'il n'entendait pas dessaisir le magistrat au seul motif que ses décisions ne convenaient pas au recourant. Dans sa réponse, du 20 mai 2016, le recourant expose clairement qu'il a déposé une demande de récusation. Celle-ci a été transmise, avec les observations du magistrat concerné, à la Chambre pénale de recours. Ces observations ont ensuite été communiquées au recourant avec un délai de cinq jours pour présenter d'éventuelles observations. Le recourant a alors déposé un mémoire de douze pages intitulé "Demande de récusation". Il estimait toutefois qu'aucune demande n'avait été déposée à la cour cantonale et sollicitait un accès aux pièces du dossier; il considérait qu'une demande de récusation n'avait plus d'utilité puisque le procureur avait déjà rédigé un acte d'accusation. Cet acte ne concerne toutefois pas la plainte du 21 avril 2016 qui avait justifié le dépôt de la demande de récusation. Par ailleurs, le recourant persistait à reprocher au procureur un manque d'impartialité à son égard; il déclarait aussi (p. 5) maintenir sa demande. Celle-ci n'a certes pas été déposée directement devant la cour cantonale, mais auprès du Ministère public qui l'a transmise à l'autorité de recours conformément à l'art. 59 al. 1 let. b CPP. Le recourant en a dûment été informé et il était clair que s'il n'entendait pas requérir de récusation à ce stade, il lui appartenait de retirer sa demande. Les termes ambigus de son mémoire du 6 juin 2016 ne sauraient être interprétés comme un tel retrait. La cour cantonale était dès lors tenue de statuer, sauf à commettre un déni de justice.
On ne discerne dès lors pas en quoi l'arrêt attaqué violerait le droit.
4.
Supposé recevable, le recours devrait donc être rejeté. Conformément à l'art. 66 al. 1 LTF, les frais judiciaires sont mis à la charge du recourant qui succombe.

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté, en tant qu'il est recevable.
2.
Les frais judiciaires, arrêtés à 1'000 fr., sont mis à la charge du recourant.
3.
Le présent arrêt est communiqué aux parties et à la Cour de justice de la République et canton de Genève, Chambre pénale de recours.
Lausanne, le 23 novembre 2016
Au nom de la Ire Cour de droit public
du Tribunal fédéral suisse
Le Président : Fonjallaz
Le Greffier : Kurz