10 REM pseudo-rom by s smith
20 REM get filename and find length
30 MODE 2:GOSUB 310:REM machine code for file info
40 PRINT"Enter filename.It must have 8 letters and a file extension"
50 PRINT:PRINT"E.g :- YOURCODE.BIN"
60 PRINT:INPUT file$:qq=LEN(file$)
70 IF qq<>12 THEN SOUND 1,4000,20:GOTO 40
80 IF MID$(file$,9,1)<>"." THEN SOUND 1,400,20:GOTO 40
90 REM find length
100 FOR f=1 TO qq
110 POKE &2016+f,ASC(MID$(file$,f,1))
120 NEXT
130 PRINT:PRINT"Put disc containing file in drive.Then press a key."
140 WHILE INKEY$="":WEND
150 CALL &2000
160 lobyte=PEEK(&2023):hibyte=PEEK(&2024)*256
170 length=lobyte+hibyte
180 lobyte=PEEK(&2025):hibyte=PEEK(&2026)*256
190 loadaddr=lobyte+hibyte
200 long$=HEX$(length,4):loadaddr$=HEX$(loadaddr,4)
210 PRINT"length= "long$:PRINT"load address= "loadaddr$
220 IF loadaddr<&8000 THEN PRINT"No good:Loads below &8000":END
230 REM page in bank 4 from extra ram
240 CALL &BD5B,a,a,a,a:REM firmware call kl bank switch
250 LOAD file$,&4000:REM load file
260 CALL &BD5B:REM page bank 4 out
270 REM file is now in bank 4:safe from a soft reset
280 REM now poke recall code into safe area
290 GOSUB 410
300 PRINT"Finished:Call &bf08 to recall code after reset":END
310 REM load machine code
320 MEMORY &1FFF
330 RESTORE 360:FOR f=0 TO 38
340 READ a$:POKE &2000+f,VAL("&"+a$)
350 NEXT:RETURN
360 DATA 06,0c,21,17,20,11,00,90
370 DATA cd,77,bc,ed,43,23,20,ed
380 DATA 53,25,20,cd,7a,bc,c9,00
390 DATA 00,00,00,00,00,00,00,00
400 DATA 00,00,00,00,00,00,00,00
410 REM recall code
420 RESTORE 500:FOR f=0 TO 23
430 READ a$
440 IF a$="LL" THEN a$=RIGHT$(loadaddr$,2)
450 IF a$="LH" THEN a$=LEFT$(loadaddr$,2)
460 IF a$="SL" THEN a$=RIGHT$(long$,2)
470 IF a$="SH" THEN a$=LEFT$(long$,2)
480 POKE &BF08+f,VAL("&"+a$)
490 NEXT:RETURN
500 DATA 3e,04,cd,5b,bd,21,00,40
510 DATA 11,LL,LH,01,SL,SH,ed,b0
520 DATA af,cd,5b,bd,cd,LL,LH,c9