Create readable text `.bas' for each tokenized BASIC `,ffb' file.
[ssr] / StraySrc / Libraries / Sapphire / bsh / flex.bas
CommitLineData
c1b567d8
MW
1REM Sapphire flex macro library -- © 1994 Straylight
2
3DEF FNflex_test=0
4
5REM --- Support functions ---
6
7DEF FNflex__m(mask$)
8LOCAL reg$,sep$,mask%,r%,s%,i%
9mask%=0
10WHILE FNflex__g(mask$,reg$,sep$)
11 IF reg$="" THEN ERROR 1,"Expected register, found `"+sep$+"'"
12 r%=EVAL(reg$)
13 IF sep$="-" THEN
14 IF FNflex__g(mask$,reg$,sep$) THEN
15 IF reg$="" THEN ERROR 1,"Expected register, found `"+sep$+"'"
16 IF sep$="-" THEN ERROR 1,"Unexpected `-' in register list"
17 s%=EVAL(reg$)
18 IF s%<r% THEN SWAP s%,r%
19 FOR i%=r% TO s%
20 mask%=mask% OR (1<<i%)
21 NEXT
22 ELSE
23 ERROR 1,"Missing register name"
24 ENDIF
25 ELSE
26 mask%=mask% OR (1<<r%)
27 ENDIF
28ENDWHILE
29=mask%
30
31DEF FNflex__g(RETURN mask$,RETURN reg$,RETURN sep$)
32IF mask$="" THEN =FALSE
33reg$=""
34sep$=""
35REPEAT
36 reg$+=sep$
37 sep$=LEFT$(mask$,1)
38 mask$=MID$(mask$,2)
39UNTIL mask$="" OR INSTR("-,",sep$)
40IF INSTR("-,",sep$)=0 THEN
41 reg$+=sep$
42 sep$=""
43ENDIF
44=TRUE
45
46REM --- Macros ---
47
48DEF FNflex_save(r$)
49[ opt 4
50 FNimport("flex_save")
51 bl flex_save
52 dcd FNflex__m(r$) OR &e8ae0000
53]
54=0
55
56DEF FNflex_load(r$)
57[ opt 4
58 FNimport("flex_load")
59 bl flex_load
60 dcd FNflex__m(r$) OR &e93e0000
61]
62=0