home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / ZSYS / SIMTEL20 / SYSLIB / SLIB2.LBR / SEVAL4.Z80 < prev    next >
Text File  |  2000-06-30  |  1KB  |  55 lines

  1. ;
  2. ; SYSLIB Module Name:  SEVAL4
  3. ; Author:  Richard Conn
  4. ; SYSLIB Version Number:  3.6
  5. ; Module Version Number:  1.1
  6.  
  7.     public    eval2
  8.  
  9. ;
  10. ;  EVAL2 --
  11. ;    Convert the string of ASCII binary digits pointed to by HL
  12. ; into a binary value; string is converted until invalid digit is
  13. ; encountered.
  14. ;    On return, HL points to error character, DE=value, A=E (low
  15. ; order 8 bits of value).  BC not affected.
  16. ;
  17. EVAL2:
  18.     PUSH    BC    ; SAVE BC
  19.     LD    DE,0    ; SET DE=0 INITIALLY
  20.  
  21. ;  Get next digit and check for '0' - '1'
  22. E2L:
  23.     LD    A,(HL)    ; GET BYTE
  24.     SUB    '0'    ; CHECK FOR RANGE
  25.     JP    C,DONE
  26.     CP    2
  27.     JP    NC,DONE
  28.  
  29. ;  Multiply DE by 2
  30. MUL2:
  31.     PUSH    HL    ; SAVE HL
  32.     LD    HL,0    ; ACC=0
  33.     ADD    HL,DE    ; HL=DE
  34.     ADD    HL,DE    ; HL=DE+DE
  35.     LD    D,H    ; DE=HL
  36.     LD    E,L
  37.     POP    HL    ; RESTORE HL
  38.     ADD    A,E    ; A=A+E
  39.     LD    E,A
  40.     LD    A,D    ; ADD TO D IF NECESSARY
  41.     ADC    0
  42.  
  43. ;  Continue
  44.     INC    HL    ; PT TO NEXT CHARACTER
  45.     JP    E2L
  46.  
  47. ;  Done -- Result already in DE; Set A=E
  48. DONE:
  49.     LD    A,E    ; A=E
  50.     POP    BC    ; RESTORE BC
  51.  
  52.     RET
  53.  
  54.     END
  55.