
                                            DECBIN

00010 ;   DECBIN

00020 ;4/2/86             J. DUNMYER

00030 ;

00040 ; A SUBROUTINE TO CONVERT A STRING

00050 ; OF NUMERIC CHARACTERS TO A BINARY

00060 ; NUMBER

00070 ;

00080 ;

00090 CLS		EQU		01C9H

00100 OUTC	EQU		0033H

00110 CHKIO	EQU		002BH

00120 GODOS	EQU		402DH

00130 ;

00140 ;

00150 		ORG		7000H

00160 SETUP	LD		HL,STCHAR		;LOC'N CHAR STG IN HL

00170 		LD		B,3			;MAX NO. OF DIGITS TO GET

00180 		LD		IX,0000H		;STORE BINARY NO. IN IX

00190		 					;START W/ ZERO

00200 		CALL		CLS			;START W/ NEW SCREEN

00210 		LD		A,'?'		;PRINT FIRST PROMPT

00220 		CALL		OUTC			;

00230 		XOR		A			; CLEAR A REG

00240 GETDIG	CALL		CHKIO		;GET CHAR

00250 		JP		Z,GETDIG	

00260 		CALL		OUTC			;DISPLAY IT

00280 		CP		0DH			;CARRIAGE RETURN?

00290 		JP		Z,EXIT		;THEN QUIT

00300 		OR		A			;RESET FLAGS
00320 CONV	SUB		30H			;CONVERT ASCII TO NUMBER

00330 		JP		M,GETDIG		;LT "0", GET ANOTHER DIG.

00340 		CP		10			;

00350 		JP		P,GETDIG		;GT "9", GET ANOTHER DIG.

00360 MULT10	ADD		IX,IX		;STORED BINARY *2

00370 		PUSH 	IX			;SAVE IT

00380 		ADD		IX,IX		; *4

00390 		ADD		IX,IX		; *8

00400 		POP		DE			; RESTORE *2

00410 		ADD		IX,DE		; *10 IN IX

00420 TOTAL	LD		E,A			;MOVE CHAR FROM A TO DE

00430 		LD		D,0			;NOW IN DE

00440 		ADD		IX,DE		;ADD TO IX

00450 KEEP	LD		(HL),A		;SAVE DIGIT IN MEMORY

00460 		INC		HL			;BUMP POINTER

00470 		DJNZ		GETDIG		;GET ANOTHER

00480 EXIT	LD		(STNUM),IX	;SAVE IX 

00490 		JP		GODOS		;QUIT

00500 STCHAR	DEFS		3		

00510 STNUM	DEFW		0000H

00520 		END		SETUP
                                                                                                                                                             