10REM  *BASIC MODIFIER*
15REM  BY BOB LENNES
17POKE 16150, 255
20LOMEM :29025
29REM  ML-Block Read
30FOR sa=27645 TO 27665:READ sv:POKE sa, sv:NEXT
31DATA  205,138,252,62,0,33,96,109,1,0,0,17,0,0,205,243,252,50,95,109,201
33REM  Clr Keybrd Buffer
34POKE 64885, 0
50REM  ML-Block Write
53FOR sa=27774 TO 27791:READ sv:POKE sa, sv:NEXT
55DATA  62,0,33,96,109,1,0,0,17,0,0,205,246,252,50,95,109,201
100TEXT:VTAB 3:HTAB 7:? "SMARTBASIC  MODIFIER"
110VTAB 18:? " SELECT DEVICE:":? "   1= TAPE 1":? "   2= DISK 1":VTAB 18
120HTAB 16:GET a$: a=VAL(a$)
130IF a=0 OR a>2 THEN ? a$; :GOTO 120
140IF a=1 THEN  d$="TAPE": d=8:GOTO 160
150 d$="DISK": d=4
160VTAB 17:? CHR$(24)
170? "  INSERT "; d$; " AND PUSH RETURN":? "  OR ESCAPE/WP TO END"
180GET a$:IF a$=CHR$(27) THEN TEXT:END
190IF a$=CHR$(13) THEN 200
195? CHR$(7); :GOTO 180
200VTAB 17:? CHR$(24)
210? "  ONE MOMENT..."
220 b=0:GOSUB 1000
230FOR n=28003 TO 28007
240IF ASC(MID$("BASIC", n-28002, 1))<>PEEK(n) THEN VTAB 17:? CHR$(24):? "  NOT SMARTBASIC "; d$:END
250NEXT
260VTAB 17:? CHR$(24)
300INPUT "ENTER SMARTBASIC ADDRESS:"; a$: a=VAL(a$)
310IF a=0 OR a>27406 THEN ? CHR$(7); :GOTO 260
320 b=INT((2048+a)/1024)
330GOSUB 1000
340 c=(a-256)-((b-2)*1024)
350VTAB 17:? CHR$(24)
360? " DEFAULT VALUE OF "; a; " IS "; PEEK(c+28000)
370VTAB 19:? " WOULD YOU LIKE TO CHANGE ":? " IT? Y/N":GET a$
380IF a$="Y" OR a$="y" THEN 400
390GOTO 300
400REM  Change value 
410VTAB 18:INPUT "Type in value (0 to 255): "; a$
420 a=VAL(a$):IF (a=0 AND ASC(a$)<>48) OR a>255 THEN HTAB 1:GOTO 400
425VTAB 17:? CHR$(24)
430POKE c+28000, a:? " ONE MOMENT..WRITING TO "; d$:GOSUB 2000:GOTO 300
999END
1000REM  Read
1010POKE 27649, d:POKE 27657, b:POKE 27999, 0:CALL 27645
1020IF PEEK(27999)=22 THEN 3000
1030RETURN
2000REM  Write
2010POKE 27775, d:POKE 27783, b:POKE 27999, 0:CALL 27774
2020IF PEEK(27999)=22 THEN 3000
2030RETURN
3000REM  Error
3010VTAB 17:? CHR$(24):? "  "; d$; " ERROR":END
