home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / EXTRA-ST / CPM-80-E / CPM-0.2 / CPM-0 / cpm-0.2 / z80-sources / mylib / params.mac < prev    next >
Encoding:
Text File  |  1994-06-06  |  1.4 KB  |  60 lines

  1.         .z80            ;
  2.         entry _parms        ;
  3.  
  4. _parms:        ld a,' '        ;
  5.         ld (ix-1),a        ; leading spaces
  6.         ld a,0ffh        ; number of digits
  7.         ld (ix-2),a        ;
  8.         xor a            ; mask_h
  9.         ld (ix-3),a        ; normally Byte-only
  10.         ld a,(hl)        ; what?
  11.         cp '0'            ;
  12.         ret c            ; if error
  13.         jr nz,isnt_zero        ;
  14.         ld (ix-1),a        ; leading zeroes
  15.         inc hl            ;
  16.         ld a,(hl)        ;
  17.         cp '1'            ;
  18.         ret c            ; no correct spec.
  19. isnt_zero:    cp '9'+1        ; number?
  20.         jr nc,no_n        ;
  21. next_digit:    sub '0'            ;
  22.         ld (ix-2),a        ;
  23.         inc hl            ;
  24.         ld a,(hl)        ;
  25.         sub '0'            ;
  26.         cp 10            ;
  27.         jr nc,no_further    ;
  28.         ld a,(ix-2)        ;
  29.         add a,a            ;
  30.         ld (ix-2),a        ;
  31.         add a,a            ;
  32.         add a,a            ;
  33.         add a,(ix-2)        ;
  34.         add a,(hl)        ;
  35.         jr next_digit        ;
  36.  
  37. no_further:    ld a,(hl)        ;
  38. no_n:        cp 'a'            ; kleinbuchstabe?
  39.         jr nc,is_ok        ;
  40.         ld a,0ffh        ;
  41.         ld (ix-3),a        ; do not mask top bit!
  42.         ld a,(hl)        ; get char
  43.         or ' '            ; tolower
  44. is_ok:        sub 'a'            ;
  45.         cp 26            ;
  46.         ccf            ;
  47.         ret c            ; no alphabetic follows
  48.         push hl            ;
  49.         ld hl,base_tab        ;
  50.         call _adda##        ; hl+a => hl
  51.         ld a,(hl)        ; get that base
  52.         pop hl            ; restore pointer
  53.         or a            ; no carry, Sign-Flag
  54.         ret            ; base in Akku
  55.  
  56. base_tab:    db 0fdh, 2 ,0feh,10, 11 , 5 ,7, 16 ,0fdh,0fdh
  57.         db 15 ,0fdh, 13 , 9, 8 ,0fdh,4,0fdh,0ffh, 3
  58.         db 6, 14 ,0fdh,16,0fdh, 12
  59.         end            ;
  60.