home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 28
/
amigaformatcd28.iso
/
-coverdisks-
/
subscribers
/
subs.dms
/
subs
/
ksc.lzx
/
ksc
/
hex.asm
< prev
next >
Wrap
Assembly Source File
|
1981-01-05
|
812b
|
51 lines
; by Kyzer/CSG
; IN:
; A0=string containing ASCII hex digits
; OUT:
; D0=value of hex string (32 bit)
; D1=validity: -1 = valid number, 0 = invalid number
; ALSO TRASHED
; A0/A1/D2/D3
cmp.b #'$',(a0)
bne.s .noadd
addq.l #1,a0
.noadd cmp.b #'0',(a0)
bne.s .noadd2
cmp.b #'x',1(a0)
bne.s .noadd2
addq.l #2,a0
.noadd2
moveq #0,d0
moveq #0,d1
moveq #0,d2
.next lea .table(pc),a1
.cmp move.b (a1),d2
beq.s .fail
addq.l #2,a1
cmp.b (a0),d2
bne.s .cmp
move.b -1(a1),d1
asl.l #4,d0
add.b d1,d0
addq.l #1,a0
tst.b (a0)
bne.s .next
.done moveq #-1,d1 ; OK
rts
.fail moveq #0,d1 ; FAIL
rts
.table dc.b '0',0, '1',1, '2',2, '3',3, '4',4, '5',5
dc.b '6',6, '7',7, '8',8, '9',9, 'a',10, 'A',10
dc.b 'b',11, 'B',11, 'c',12, 'C',12, 'd',13, 'D',13
dc.b 'e',14, 'E',14, 'f',15, 'F',15, 0,0