ALWAYS 16FEB1 HEXIO ;17FEB1 .PSECT ;**-1 .MCALL DIR$,CALL$R .PAGE .SBTTL GETHX4 - GET 4-DIGIT HEX VALUE ; ; ENTRY PARAMETERS: ; ; R0 POINTS TO A BUFFER FROM WHICH A ; 4-DIGIT HEX NUMBER IS TO BE OBTAINED ; ; EXIT PARAMETERS: ; ; R0 POINTS JUST BEYOND THE HEX NUMBER ; R1 CONTAINS THE BINARY VALUE ; CARRY FLAG INDICATES SUCCESS (CLEAR) OR FAILURE (SET) ; NO OTHER REGISTERS ARE AFFECTED ; ; AUTHOR: KEVIN ANGLEY ; ; DATE: 02-SEP-80 ; GETHX4:: CALL GETHX2 ; GET HIGH BYTE BCC 10$ ; CC: SUCCESS RETURN 10$: SWAB R1 ; THAT WAS THE HIGH BYTE CALL$R GETHX2 ; GET LOW BYTE & RETURN ; AT THIS POINT FLAGS ARE CORRECT ; EXIT .PAGE .SBTTL GETHX2 - GET 2-DIGIT HEX VALUE ; ; ENTRY PARAMETERS: ; ; R0 POINTS TO A BUFFER FROM WHICH A ; 2 DIGIT HEX NUMBER IS TO BE OBTAINED ; ; EXIT PARAMETERS: ; ; R0 POINTS JUST BEYOND THE HEX NUMBER ; R1 CONTAINS THE BINARY VALUE (LOW BYTE) ; NO OTHER REGISTERS (OR HIGH BYTE OF R1) ; ARE AFFECTED ; ; AUTHOR: LONNIE C BAKER JR. ; ; DATE: 02-SEP-80 GETHX2:: PUSH R2 PUSH R3 PUSH R4 PUSH R0 ;17FEB1 ; MOVE THE 2 DIGITS POINTED TO BY R0 ; TO A STORAGE LOCATION CALLED WORKBUF. MOVB (R0)+,WORKBUF MOVB (R0)+,WORKBUF+1 ; CHECK THE DIGITS TO SEE IF THEY ARE ; IN HEXIDECIMAL FORMAT. ;17FEB1 MOV #WORKBUF,R0 ;**-2 MOV #2,R2 50$: CMPB (R0),#'0 BLT ERROR CMPB (R0),#'9 BLE 55$ CMPB (R0),#'A BLT ERROR CMPB (R0),#'F BLE 55$ BR ERROR 55$: INC R0 SOB R2,50$ ; CONVERSION ROUTINE. 66$: MOV #WORKBUF,R4 MOVB (R4),R0 SUB #60,R0 TSTB R0 BLT ERROR CMPB R0,#11 BLE 67$ SUB #7,R0 67$: MOVB R0,(R4) MOV #4,R4 70$: ASLB WORKBUF SOB R4,70$ MOV #WORKBUF+1,R4 MOVB (R4),R0 SUB #60,R0 TSTB R0 BLT ERROR CMPB R0,#11 BLE 73$ SUB #7,R0 73$: MOVB R0,(R4) BISB WORKBUF,WORKBUF+1 CLRB R1 BISB WORKBUF+1,R1 CLC BR FINISH ; IF DIGITS NOT HEX, SET BIT ;17FEB1 ; C OF THE CONDITION CODE. ;17FEB1 ERROR: ;17FEB1 OUTPUT HCE ; HEX CONVERSION ;17FEB1 POP R0 ; RESTORE ORIGINAL POINTER ;17FEB1 SEC ; FLAG ERROR ;17FEB1 BR ENDIT ;17FEB1 FINISH: ;17FEB1 POP R0 ;17FEB1 INC R0 ; POINT AFTER THE RETRIEVED NUMBER ;17FEB1 INC R0 ;17FEB1 ENDIT: ;17FEB1 POP R4 ;**-7 POP R3 POP R2 RETURN .PAGE .SBTTL PUTHX4 - PUT 4-DIGIT HEX VALUE ; ; ENTRY PARAMETERS: ; ; R0 POINTS TO A BUFFER IN WHICH THE HEX ; NUMBER IS TO BE PLACED. ; ; R1 CONTAINS THE BINARY VALUE TO BE OUTPUT ; ; EXIT PARAMETERS: ; ; R0 POINTS JUST BEYOND THE HEX NUMBER ; R1 & OTHER REGISTERS ARE NOT AFFECTED ; ; AUTHOR: KEVIN ANGLEY ; ; DATE: 02-SEP-80 ; PUTHX4:: SWAB R1 ; PUT HIGH BYTE FIRST CALL PUTHX2 ; PUT HIGH BYTE SWAB R1 ; PUT LOW BYTE CALL$R PUTHX2 ; PUT & EXIT .PAGE .SBTTL PUTHX2 - PUT 2-DIGIT HEX VALUE ; ; ENTRY PARAMETERS: ; ; R0 POINTS TO A BUFFER IN WHICH THE ; HEX NUMBER IS TO BE PLACED. ; ; ; R1 CONTAINS THE VALUE TO BE OUTPUT(LOW BYTE) ; ; EXIT PARAMETERS: ; ; R0 POINTS JUST BEYOND THE HEX NUMBER ; R1 & OTHER REGISTERS ARE NOT AFFECTED ; ; AUTHOR: LONNIE C BAKER JR. ; ; DATE: 02-SEP-80 ; PUTHX2:: PUSH R2 PUSH R3 PUSH R4 PUSH R5 20$: MOV #WORKBUF+2,R3 66$: MOVB R1,R2 MOV #2,R5 BIC #177760,R2 65$: CMPB R2,#9. BLE 64$ ADD #7,R2 64$: ADD #60,R2 MOVB R2,-(R3) MOVB R1,R2 BIC #177417,R2 MOV #-4,R4 ASH R4,R2 SOB R5,65$ POP R5 POP R4 POP R3 POP R2 MOVB WORKBUF,(R0)+ MOVB WORKBUF+1,(R0)+ RETURN .END