home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol090 / seval4.mac < prev    next >
Encoding:
Text File  |  1984-04-29  |  981 b   |  59 lines

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