I just found this writeup on the Apple Cassette Interface (see Appendix C incl. schematic):
http://myapplecomputer.net/docs/ACIBuildGuide.pdf"INTRODUCTION: The Apple Cassette Interface [ACI] is a peripheral device for Apple Computer which enables the user to store and retrieve information using a
standard audio grade cassette recorder. ..... The ACI reads and writes data at a rate of
approximately 1500 baud. All the ACI timing is done in software, resulting in extreme accuracy, no adjustments, and consistency between units."
TAPE RECORDERS & TAPE: Almost
any cassete recorder will work well with the ACI. ....
SPEED: The ACI uses the
technique of recording a whole cycle of either 1kHz (representing a 'one' data bit)
or a 2kHz cycle (representing a 'zero' bit). Therefore, with an average data mix of one's and zero's,
data will be recorded at 1500 baud. A ten second header of all ones will automatically be recorded on the tape prior to memory data. This is to insure that the clear leader portion of the tape will have passed."
Apparently, using a single [square wave] cycle per bit is possible in an audio interface! Nice sine waves are not required and no need to interface directly with the tape head either. The read circuit is just a schmitt trigger, although, I haven't a clue why it's being fed into the low address bit (A0) of a PROM. Woz' wizardry? I guess your software can just count the width of each pulse read (1kHz=0.5ms=H or 2kHz=0.25ms=L).
EDIT: Here's the PROM contents. See WOZACI.ASM (includes comments) in
https://www.sbprojects.net/projects/apple1/roms.zipSee nicer schematic here: