home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Antic Magazine 1986 March
/
Antic_Magazine_1986_03_Antic.atr
/
bitz.m65
< prev
next >
Wrap
Text File
|
2023-02-26
|
3KB
|
1 lines
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 ¢