Listing of file='BUFPRO.MAC;03' on disk='vmedia/asm_utility_4-sideB-sector.ccvf'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; UTILITY ROUTINES FOR PROCESSING AN INPUT BUFFER ; ; NOTE: IN ALL CASES, HL => INPUT BUFFER ON ENTRY ; ; ; SCAN PAST SPACES AND COMMA FOR DIGIT ; ENTRY SCND SCND: INX H ;IGNORE SPACES MOV A,M ; CPI ' ' ; JZ SCND ; CPI ',' ;IGNORE COMMAS JZ SCND ; CALL DIG ;DIGIT? <C>=YES CMC ; <NC>=YES RET ; ; CHECK FOR A LETTER ; ENTRY LET LET: MOV A,M ;GET CHAR CPI 'Z'+1 ;IS IT A LETTER? RNC ;NO! CPI 'A' ;CHECK OTHER END CMC ;SET <C> CORRECTLY RET ;RETURN <C> IF LETTER ; ; CHECK FOR A LETTER OR A DIGIT ; ENTRY LODG LODG: CALL LET ;IS IT A LETTER? RC ;YES! ; CHECK FOR A DIGIT ENTRY DIG DIG: MOV A,M ;GET CHAR CPI '9'+1 ;IS IT A DIGIT? RNC ;NO! CPI '0' ;CHECK OTHER END CMC ;SET <C> CORRECTLY RET ;RETURN <C> IF DIGIT ; ; GETS VALUE FROM BUFFER TO <A> ; ENTRY GVAL GVAL: MVI B,0 ;CLEAR <B> CALL G01 ;GET SUM IN <B> MOV A,B ;TO <A> STC ;SET CARRY CMC ;SET <NC> FOR ERROR RET G01: MOV A,M ;GET DIGIT SUI '0' ;CHECK IF 0-9 RC ;NO CPI '9'+1 RNC ;NO MOV M,A ;BACK TO MEM MOV A,B ;GET CURRENT SUM RLC ; *2 RLC ; *4 ADD B ; *5 RLC ; *10 FOR SUM ADD M ;ADD DIGIT MOV B,A ;SAVE IN B INX H ;POINT TO NEXT DIGIT JMP G01 END