10 ; BITZ, LISTING 2›20 ; BY DON LEBOW›30 ; (c) 1985, ANTIC PUBLISHING›40 ;›50 *= $0600›60 ;›70 ;EQUATES...z page free bytes›80 ;›90 FIRST = $CB ;first number›0100 SECOND = $CC ;optional mask›0110 RESULT = $CD ;what we got›0120 FLAGS = $CE ;status register›0130 FLAGOPT = $CF ;user option›0140 STRING = $D0 ;string address pointer›0150 ;›0160 ;MODULE 1 (USR 1536....)›0170 ;The Bit Shifter›0180 ;›0190 PLA ;Pop argument count›0200 CMP #2 ;2 means 2 parameters passed›0210 BEQ DOUBLE ;so go to double byte routine›0220 ;›0230 ;One byte routine›0240 ;›0250 LDA FLAGOPT ;carry option›0260 BEQ CLEAR ;0 means user has specified 'clear carry'›0270 LDA FLAGS ;otherwise, get the old status register›0280 PHA ;push it›0290 PLP ;pull it to current status›0300 JMP DOTARGET ;detour around the CLC instruction›0310 ;›0320 CLEAR›0330 CLC ›0340 ;›0350 DOTARGET›0360 PLA ›0370 PLA ;target byte›0380 NOP ;opcode poked from Basic: 'accumulator' mode›0390 STA RESULT ;save new byte›0400 ;›0410 ;Get the flags and return›0420 ;›0430 RETURN›0440 PHP ;push Status Register›0450 PLA ;get it back›0460 STA FLAGS ;put it where we can get at it›0470 RTS ;done›0480 ;›0490 ;›0500 ;Double byte routine›0510 ;›0520 ;›0530 DOUBLE›0540 CLC ;default clear›0550 PLA ›0560 PLA ›0570 STA FIRST ;target›0580 PLA ›0590 PLA ›0600 STA SECOND ;mask›0610 LDA FIRST›0620 NOP ;opcode poked from Basic:'Zero Page' mode›0630 .BYTE SECOND ;z page mask›0640 STA RESULT ;save result›0650 JMP RETURN ;common return›0660 ;›0670 ;›0680 ;MODULE 2 (USR 1581,ADR(B$),NUM)›0690 ;Byte to Binary String for Basic›0700 ;›0710 PLA ;pop argument count›0720 PLA ›0730 STA STRING+1 ;hi byte of string address›0740 PLA ›0750 STA STRING ;and lo›0760 PLA ›0770 PLA ;number to convert›0780 LDY #7 ;index string›0790 ROTATE›0800 LSR A ;shift right to carry›0810 PHA ;save current value›0820 BCC ZERO ;zero in carry flag›0830 ;›0840 ;Put "1" in string›0850 ;›0860 ONE›0870 LDA #'1›0880 STA (STRING),Y›0890 JMP NEXT›0900 ;›0910 ;Put "O" in string›0920 ;›0930 ZERO›0940 LDA #'O›0950 STA (STRING),Y›0960 ;›0970 ;Next bit›0980 ;›0990 NEXT›1000 PLA ;get the current value back›1010 DEY ;decrement index›1020 BPL ROTATE ;done all 8 bits?›1030 ;›1040 ;All finished›1050 ;›1060 RTS ›