Commit | Line | Data |
---|---|---|
c1b567d8 MW |
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 |