10 REM > MOSnosp/src
   20 REM Remove Speech code from BBC MOS ROM to free space for other code
   30 :
   40 IF HIMEM>&FFFF:SYS "OS_GetEnv"TOA$:IFLEFT$(A$,5)<>"B6502":OSCLI"B6502"+MID$(A$,INSTR(A$," "))
   50 DIM mem% &3FFF:OSCLI "LOAD MOS120 "+STR$~mem%
   60 DEFFNo(A%):P%=A%:O%=P%-&C000+mem%:=opt%
   70 :
   80 FOR P=0 TO 1:opt%=P*3+4
   90   REM Remove Speech system
  100   [OPT FNo(&DB11):BCS &DB27:EQUS STRING$(&DB27-P%,CHR$&EA):]:REM Speech Init
  110   [OPT FNo(&DD6F):JMP &DE7F:EQUS STRING$(&DDCA-P%,CHR$&EA):]:REM Speech IRQ
  120   [OPT FNo(&DE1A):JMP &DE2B:EQUS STRING$(&DE2B-P%,CHR$&EA):]:REM Speech ticker
  130   [OPT FNo(&E633):EQUW &FFA6:EQUW &FFA6:]             :REM Speech OSBYTEs
  140   [OPT FNo(&E830):NOP:NOP:NOP:NOP:]                   :REM Sound &FFxx branch
  150   [OPT FNo(&E88B):PLA:JSR &E4B0:PLA:JSR &E4B0         :\   Insert into sound buffer
  160   PLP:RTS                                             :\   Restore flags and return
  170   EQUS STRING$(&E8AE-P%,CHR$&EA):]                    :REM SOUND &FFxx
  180   [OPT FNo(&EE13):LDA #&FF:]                          :REM Start searching ROMs at ROM 0-1
  190   [OPT FNo(&EE1E):CPY #&10:BCC &EE59:RTS              :\   Only search ROMFS
  200   EQUS STRING$(&EE51-P%,CHR$&EA):]                    :REM Initialise PHROM
  210   [OPT FNo(&EE55):NOP:NOP:]                           :REM PRHOM service
  220   [OPT FNo(&EE62):EQUS STRING$(&EEAD-P%,CHR$&EA):]    :REM Speech processor access
  230   [OPT FNo(&EEBB):EQUS STRING$(&EEDA-P%,CHR$&EA):]    :REM Speech processor access
  240   [OPT FNo(&F075):EQUS STRING$(6,CHR$0):]             :REM Speech data
  250 NEXT
  260 REM Spare space released:
  270 REM  &DB13-&DB26  20 bytes  Initialisation within RESET
  280 REM  &DD72-&DDC9  88 bytes  Speech IRQ handler
  290 REM  &DE1D-&DE2A  14 bytes  Speech ticker IRQ
  300 REM  &E895-&E8AD  25 bytes  SOUND &FFxx
  310 REM  &EE23-&EE50  46 bytes  PHROM access
  320 REM  &EE62-&EEAE  77 bytes  Speech processor access
  330 REM  &EEBB-&EED9  31 bytes  Speech processor access
  340 REM  &F075-&EE7A   6 bytes  Speech data
  350 REM              307 bytes
  360 A$="SAVE MOS120nosp "+STR$~mem%+"+4000"
  370 PRINT A$;:OSCLI A$:PRINT