MCPcopy Create free account
hub / github.com/BlitterStudio/amiberry / getonebit

Function getonebit

src/disk.cpp:3793–3828  ·  view source on GitHub ↗

get one bit from bit stream */

Source from the content-addressed store, hash-verified

3791
3792/* get one bit from bit stream */
3793static uae_u32 getonebit(drive *drv, uae_u16 *mfmbuf, int mfmpos, int *inc)
3794{
3795 uae_u16 *buf;
3796
3797 if (inc)
3798 *inc = 1;
3799
3800#ifdef FLOPPYBRIDGE
3801 if (drv && drv->bridge) {
3802 drv->tracklen = drv->bridge->maxMFMBitPosition(); // this shouldnt happen
3803 return drv->bridge->getMFMBit(mfmpos) ? 1 : 0;
3804 }
3805#endif
3806
3807 if (inc && nextbit(drv) == 2) {
3808 // 2us -> 4us
3809 int b1 = getonebit(NULL, mfmbuf, mfmpos, NULL);
3810 int b2 = getonebit(NULL, mfmbuf, (mfmpos + 1) % drv->tracklen, NULL);
3811 if (!b1 && b2) {
3812 *inc = 3;
3813 return 1;
3814 }
3815 if (b1 && !b2) {
3816 *inc = 2;
3817 return 1;
3818 }
3819 if (b1 && b2) {
3820 *inc = 3;
3821 return 1;
3822 }
3823 *inc = 2;
3824 return 0;
3825 }
3826 buf = &mfmbuf[mfmpos >> 4];
3827 return (buf[0] & (1 << (15 - (mfmpos & 15)))) ? 1 : 0;
3828}
3829
3830void dumpdisk (const TCHAR *name)
3831{

Callers 4

dumpdiskFunction · 0.85
DISK_update_predictFunction · 0.85
disk_doupdate_readFunction · 0.85
DSKBYTR_fakeFunction · 0.85

Calls 3

nextbitFunction · 0.85
maxMFMBitPositionMethod · 0.45
getMFMBitMethod · 0.45

Tested by

no test coverage detected