100 REM Next BASIC port and paging testbed 110 REM Simon N Goodwin's March 2020 remix 120 125 LAYER CLEAR : CLEAR 49151: REM Juggle MMU slots 6 & 7 130 LAYER 2,1: CLS : REM Layer 1 maps 17 not 11 in slot 3 135 PROC SHOWSYS(): PRINT : PROC SHOWBANKS(): PRINT : STOP 140 145 DEFPROC SHOWSYS() 150 LET t=% REG (0) 160 PRINT "Machine ID ";t;" = "; 170 IF t=10 THEN PRINT "ZX Spectrum Next": GO TO 300 180 IF t=11 THEN PRINT "Multicore": GO TO 300 190 IF t= BIN 11111010 THEN PRINT "Anti-brick": GO TO 300 200 IF t=0 OR t=3 OR t=9 THEN PRINT "Unassigned": GO TO 300 210 PRINT "Unallocated ID" 300 LET %t=% REG (1) 320 PRINT "Major version ";%t>>4; 330 PRINT ", minor version ";%t & 15; 340 LET %t=% REG (14) 350 PRINT " sub-minor version ";%t 360 LET %t=% REG (3) 370 PRINT "Machine type ";%t;" "; 380 LET %m=%t & 15 390 IF %m=0 THEN PRINT "Config mode!": 400 IF %m=1 THEN PRINT "Sinclair 16/48K Spectrum" 410 IF %m=2 THEN PRINT "Sinclair Spectrum 128 or Amstrad +2" 420 IF %m=3 THEN PRINT "Amstrad Spectrum +2A/+2B/+3 or Next" 430 IF %m=4 THEN PRINT "Pentagon 128K" 440 IF %m>4 THEN PRINT "Reserved, to be defined" 450 LET %t=%t>>4 460 PRINT "Timing "; 470 IF %t>7 THEN PRINT "Not ";: LET %t=%t-8 480 PRINT "Locked, matching "; 490 IF %t<2 THEN PRINT "Spectrum 16/48K" 500 IF %t=2 THEN PRINT "Spectrum 128/+2" 510 IF %t=3 THEN PRINT "Amstrad +2A/+2B/+3 or Next" 520 IF %t=4 THEN PRINT "Pentagon 128" 530 IF %t>4 THEN PRINT "Undocumented" 550 LET %t=% REG (7) 558 LET t=%t & 3 560 PRINT "Clock rate ";2^t*3.5;" MHz" 565 PRINT 65536- USR 7962;" bytes free for variables" 570 ENDPROC 580 590 DEFPROC SHOWBANKS() 600 PRINT "Memory configuration" 610 FOR %s=0 TO 7 620 LET %t=% REG (80+s) 625 LET s=%s*8192 630 PRINT "Slot ";%s;" at ";( STR$ (s)+" ")(1 TO 5); 635 PRINT "= bank "; 640 IF %t=255 THEN PRINT "ROM": ELSE PRINT %t;" page ";%t>>1 650 NEXT %s 680 ENDPROC 690 9800 DEFPROC FLIST() 9810 CLOSE # 4 9820 OPEN # 4,"O>NextPort.txt" 9830 LIST #4 9840 CLOSE # 4 9850 ENDPROC 9980 9990 PROC FLIST() 9999 SAVE "NextPort.bas"