| 1 | REM crunched "b.buildstub" |
| 2 | ONERRORERROREXT0,REPORT$+"["+STR$(ERL)+"]" |
| 3 | PROCA_:PROCB_(FNC_):END |
| 4 | DEFPROCA_:DIMq% 256:LIBRARY"libs:bas":PROCbas_init:ENDPROC |
| 5 | DEFFNC_:LOCALD_$:SYS16TOD_$:IFINSTR(D_$,"-quit")=0THENERROR1,"SapphStub must be started using *Run" |
| 6 | D_$=MID$(D_$,INSTR(D_$,"""")+1):D_$=MID$(D_$,INSTR(D_$," ")+1):D_$=LEFT$(D_$,INSTR(D_$,"""")-1):=D_$ |
| 7 | DEFFNE_(RETURNF_$):LOCALE_$:IFINSTR(F_$," ")THEN |
| 8 | E_$=LEFT$(F_$,INSTR(F_$," ")-1):F_$=MID$(F_$,INSTR(F_$," ")+1) |
| 9 | ELSE:E_$=F_$:F_$="" |
| 10 | ENDIF:=E_$ |
| 11 | DEFFNG_(F_$):LOCALi%:$q%=F_$:FORi%=0TOLEN(F_$)-1:IFq%?i%>=97ANDq%?i%<=122THENq%?i%-=32 |
| 12 | NEXT:=$q% |
| 13 | DEFPROCB_(F_$):LOCALH_$,I_$,J_$,K_%,L_%,E_$:REPEAT:E_$=FNE_(F_$):CASEFNG_(E_$)OF |
| 14 | WHEN"-HELP":PROCM_:L_%=TRUE |
| 15 | WHEN"-LIBFN":H_$=FNE_(F_$) |
| 16 | WHEN"-LIB":J_$=FNE_(F_$) |
| 17 | WHEN"-STUB":I_$=FNE_(F_$) |
| 18 | WHEN"-OFFSET":K_%=VAL(FNE_(F_$)) |
| 19 | OTHERWISE:CASETRUEOF |
| 20 | WHENJ_$="":J_$=E_$ |
| 21 | WHENI_$="":I_$=E_$ |
| 22 | WHENH_$="":H_$=E_$ |
| 23 | WHENK_%=0:K_%=VAL(E_$) |
| 24 | ENDCASE |
| 25 | ENDCASE:UNTILF_$="":IFL_%THENEND |
| 26 | IFH_$=""ORJ_$=""ORI_$=""THENERROR0,"Bad arguments" |
| 27 | PROCN_(J_$,I_$,H_$,K_%):ENDPROC |
| 28 | DEFPROCN_(J_$,I_$,H_$,K_%):zero=0:PROCbas_aofInit(&1000):FORo=4TO6STEP2:[opt o:FNpass:FNimportAs("Sapphire$$LibData$$Base","sapph_base"):FNimportAs("Sapphire$$LibData$$Limit","sapph_limit"):FNarea("!Stub$$Code","CODE,READONLY") |
| 29 | FNexportAs("stubfn",H_$):.stubfn:adr r0,O_:ldmia r0,{r0-2}:movs pc,r14:.O_:dcd sapph_base:dcd sapph_limit:dcd K_%:FNexportAs("zero","sapphire_init"):FNexportAs("zero","sapphire_libInit"):FNexportAs("zero","sapphire_disable"):] |
| 30 | offDiff%=K_%-4:[opt o:FNexportAs("offDiff%","__sph_workoff"):]:NEXT:PROCbas_aofSaveAs(J_$):PROCbas_aofInit(0):FORo=4TO6STEP2:[opt o:FNpass:FNimportAs(H_$,"stubfn"):FNarea("Sapphire$$ExtTable","CODE,READONLY"):dcd stubfn:]:NEXT:PROCbas_aofSaveAs(I_$) |
| 31 | ENDPROC |