.TITLE MG13.. STRING PROCEDURES IN MACRO .IDENT /MG13../ ; ; ; ; ; .SBTTL INDICATE PARITY STATE OF REGISTER R0 ; ; R$PARITY:: ;PROCEDURE TO INDICATE PARITY STATE ; ; ; ENTRY CONDITIONS ; R0 -> CHARACTER TO ANALYSISE ; ; EXIT CONDITIONS ; STATUS = SUCCESS IF PARITY IS EVEN ; STATUS = ERROR IF PARITY IS ODD ; -8(SP) = ONES COUNT OF INPUT VALUE ; ; SAVE R0,R1 ;PROTECT REGISTERS R0 AND R1 MOV #16.,R1 ;COUNT OF NUMBER OF POSIBLE BITS IN R0 CLR -(SP) ;SHIFT POINTER TO GIVE WORK REGISTER 10$: BIT #1,R0 ;IS BOTTOM BIT SET ????? BEQ 20$ ;J IF BOTTOM BIT CLEAR INC @SP ;BUMP UP NUMBER OF ONES 20$: ASR R0 ;SHIFT ALL BITS IN R0 ONE PLACE RIGHT (DOWN) SOB R1,10$ ;LOOP 16 TIMES HENCE CHECKING ALL BITS TST (SP)+ ;FUDGE WORK SPACE POINTER SETSUCCESS ;ASSUME THAT NUMBER OF ONES IS EVEN BIT #1,-2(SP) ;FIND OUT IF ABOVE IS TRUE BEQ 30$ ;J IF EVEN NUMBER OF BITS SETERROR ;INDICATE ODD PARITY 30$: UNSAVE R0,R1 ;RESTORE USED REGISTERS RETURN ;PARITY PROCESS COMPLETE GO HOME ; ; .END ; ;