Create readable text `.bas' for each tokenized BASIC `,ffb' file.
[ssr] / StraySrc / Libraries / Sapphire / bsh / flex.bas
1 REM Sapphire flex macro library -- © 1994 Straylight
2
3 DEF FNflex_test=0
4
5 REM --- Support functions ---
6
7 DEF FNflex__m(mask$)
8 LOCAL reg$,sep$,mask%,r%,s%,i%
9 mask%=0
10 WHILE 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
28 ENDWHILE
29 =mask%
30
31 DEF FNflex__g(RETURN mask$,RETURN reg$,RETURN sep$)
32 IF mask$="" THEN =FALSE
33 reg$=""
34 sep$=""
35 REPEAT
36 reg$+=sep$
37 sep$=LEFT$(mask$,1)
38 mask$=MID$(mask$,2)
39 UNTIL mask$="" OR INSTR("-,",sep$)
40 IF INSTR("-,",sep$)=0 THEN
41 reg$+=sep$
42 sep$=""
43 ENDIF
44 =TRUE
45
46 REM --- Macros ---
47
48 DEF 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
56 DEF FNflex_load(r$)
57 [ opt 4
58 FNimport("flex_load")
59 bl flex_load
60 dcd FNflex__m(r$) OR &e93e0000
61 ]
62 =0