100 WHEN ERRor
110 BEEP 0,-1
120 BEEP 0,-1
125 PAUSE 100
127 BEEP
130 REPORT
140 STOP
150 END WHEN
160 of$=FILE_SELECT$('SMSQ file','_',DATAD$&'load_',1)
170 f$=READ_STRING$('New SMSQ file ',of$,' Press ESC to use original',45)
175 IF LEN(f$)<6:STOP:END IF
180 m$=FILE_SELECT$('New module file','_',DATAD$&'load_')
185 IF LEN(m$)<6:m$=f$
190 mn$=READ_STRING$('Module name',m$(6 TO LEN(m$)),'',45)
200 v$=READ_STRING$('version','1.00','',4)
210 IF LEN(f$)<6
220 f$=of$
230 ELSE
240 IF NOT(of$==f$)
250 COPY_O of$,f$
260 END IF
270 END IF
280 v$=v$&FILL$(' ',4-LEN(v$))
290 OPEN#3,f$
300 fln=FLEN(#3)
310 OPEN_IN#4,m$
320 mln=FLEN(#4)
330 DIM mod$(mln)
340 BGET#4,mod$(1 TO mln):mod$(0)=mln
350 mnlen=LEN(mn$)
360 mnlen2=mnlen+(mnlen&&1)
370 mhead=$18+2+mnlen2+4
380 LGET#3\fln-$18+$4,mod_ptr
390 LGET#3\fln-$18+$10,fix_up,bln
400 IF bln :bln=bln+mhead+mln
410 LPUT#3\fln-$18,mhead,mln,mln,0,0,$1000002
420 PUT#3,mn$:IF mnlen&&1:BPUT#3,0
430 BPUT#3,v$
440 BPUT#3,mod$
450 LPUT#3,0,mod_ptr,fix_up,0,0,bln
460 fln=fln+mhead+mln
470 IF fix_up
480 REPeat
490 LGET #3\(fix_up),addr,offset
500 IF addr==0 :EXIT
510 LPUT#4\(addr+fix_up),fln+offset
520 fix_up=fix_up+8
530 END REPeat
540 END IF
550 CLOSE
