aboutsummaryrefslogtreecommitdiff
path: root/amforth-6.5/common/words/set-base.asm
blob: 8e9c10b3a480c66424908620cda1d8ea3ad7e9ad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
; ( addr len -- addr' len' ) 
; Numeric IO
; skip a numeric prefix character

.if cpu_msp430==1
    HEADLESS(XT_BASES,DOROM)
.endif

.if cpu_avr8==1
XT_BASES:
    .dw PFA_DOCONSTANT
.endif
    .dw 10,16,2,10 ; last one could a 8 instead.

.if cpu_msp430==1
    HEADLESS(XT_SET_BASE,DOCOLON)
.endif

.if cpu_avr8==1
XT_SET_BASE:
    .dw DO_COLON 
PFA_SET_BASE:        ; ( adr1 len1 -- adr2 len2 ) 
.endif
    .dw XT_OVER
    .dw XT_CFETCH
    .dw XT_DOLITERAL
    .dw 35
    .dw XT_MINUS
    .dw XT_DUP
    .dw XT_ZERO
    .dw XT_DOLITERAL
    .dw 4
    .dw XT_WITHIN
    .dw XT_DOCONDBRANCH
    DEST(SET_BASE1)
	.if cpu_msp430==1
	    .dw XT_CELLS
	.endif
	.dw XT_BASES
	.dw XT_PLUS
	.dw XT_FETCHI
	.dw XT_BASE
	.dw XT_STORE
	.dw XT_ONE
	.dw XT_SLASHSTRING
	.dw XT_DOBRANCH
	DEST(SET_BASE2)
SET_BASE1:
	.dw XT_DROP
SET_BASE2:
    .dw XT_EXIT 

; create bases 10 , 16 , 2 , 8 ,
; : set-base 35 - dup 0 4 within if 
;    bases + @i base ! 1 /string 
;   else 
;    drop
;   then ;