90 'IF PEEK(&H2D) <> 0 THEN GOTO 420'is it MSX-1 ?
100 '
110 ' MSX BIOS & BASIC
120 '
130 ADR=PEEK(&HFCC1)' address of main ROMs: BIOS & BASIC
140 PRINT"BIOS and BASIC in slot";
150 IF (ADR AND &H80) = &H80 THEN PRINT ADR AND 3;"-";:T=ADR AND &HC:POKE &HD00B,(SS AND &HF0) OR (T OR (T / 4)):PRINT T / 4 ELSE PRINT ADR AND 3:POKE &HD00B,SS
160 POKE &HD010,(PS AND &HF0) OR ((ADR AND &H3) OR ((ADR AND &H3)*4))
170 POKE &HD015,0:PRINT"Fetching and saving BIOS: MSXBIOS.ROM":A=USR(0):BSAVE "MSXBIOS.ROM",&H9000,&HCFFF
180 POKE &HD015,&H40:PRINT"Fetching and saving MSX-BASIC: MSXBASIC.ROM":A=USR(0):BSAVE "MSXBASIC.ROM",&H9000,&HCFFF
190 '
200 ' DISK-ROM/DISK-BASIC
210 '
220 IF PEEK(&HFFA7) = &HC9 THEN PRINT"There's no disk adapter present":GOTO 320
230 I=&HFB21:IF PEEK(I) <> 0 THEN GOTO 240 ELSE IF I < &HFB27 THEN I=I+2:GOTO 230 ELSE PRINT "Found disk adapter... but no drives connected ?!":GOTO 320
240 ADR=PEEK(I+1)' address of first disk ROM
250 PRINT PEEK(I);"drives connected to disk adapter and DISK-ROM in slot";
260 IF (ADR AND &H80) = &H80 THEN PRINT ADR AND 3;"-";:T=ADR AND &HC:POKE &HD00B,(SS AND &HFC) OR T:PRINT T / 4 ELSE PRINT ADR AND 3:POKE &HD00B,SS
270 POKE &HD010,((PS AND &HFC) OR (ADR AND &HC))
280 POKE &HD015,&H40:PRINT"Fetching and saving DISK-ROM: MSXDISK.ROM":A=USR(0):BSAVE "MSXDISK.ROM",&H9000,&HCFFF
290 '
300 ' MSX-2 subROM
310 '
320 ADR=PEEK(&HFAF8)' address of MSX-2 subROM
330 PRINT"MSX-2 subROM in slot";
340 IF (ADR AND &H80) = &H80 THEN PRINT ADR AND 3;"-";:T=ADR AND &HC:POKE &HD00B,(SS AND &HF3) OR T:PRINT T / 4 ELSE PRINT ADR AND 3:POKE &HD00B,SS
350 POKE &HD010,((PS AND &HF3) OR (ADR AND 3))
360 POKE &HD015,&H0:PRINT"Fetching and saving MSX-2 subROM: MSX2SUB.ROM":A=USR(0):BSAVE "MSX2SUB.ROM",&H9000,&HCFFF
370 END
380 DATA F3,DB,A8,F5,3A,FF,FF,EE,FF,F5
390 DATA 3E,AC,32,FF,FF,3E,F0,D3,A8,21
400 DATA 00,00,11,00,90,01,00,40,ED,B0
410 DATA F1,32,FF,FF,F1,D3,A8,FB,C9
420 PRINT "This is not a MSX-1 machine, you'll have to get the MSX-1 BIOS":PRINT"and BASIC from a real MSX-1 machine.":PRINT"The diskROM however can probably be fetched from a non-MSX-1 machine":PRINT:GOTO 220
430 '
440 ' This is merely information. The program does nothing with the results
450 '
460 PRINT "The following information is only to inform you about what's inside your MSX"
470 PRINT"You could e.g. use it to verify the slot addresses this programs uses"
480 PRINT"to fetch the ROMs"
490 PRINT
500 PS=0:PC=0:SS=0:FOR I=&HFCC9 TO &HFD09 STEP 4
510 FOR J=0 TO 3
520 S=PEEK(I+J)
530 IF (S AND &H80) = &H80 THEN N$="BASIC program":GOSUB 610
540 IF (S AND &H40) = &H40 THEN N$="device handler":GOSUB 610
550 IF (S AND &H20) = &H20 THEN N$="CALL handler":GOSUB 610
560 NEXT
570 SS=SS+1:PC=PC+1:IF PC = 4 THEN PS=PS+1:SS=0:PC=0
580 NEXT
590 PRINT
600 RETURN
610 PRINT "SLOT";PS;
620 IF PEEK(&HFCC1+PS) = &H80 THEN PRINT "-";SS; ELSE PRINT " ";