90 REM ÍÅÍÏÒÙ ÐÒÏÔÅÃÔÉÏΛ100 REM ** LOAD MACHINE LANGUAGE SUBROUTINE **›110 PGMSIZ=24:DIM SUBR$(PGMSIZ)›120 FOR I=1 TO PGMSIZ›130 READ BYTE›140 SUBR$(I)=CHR$(BYTE)›150 NEXT I›200 REM ** GET AMOUNT OF MEMORY TO PROTECT **›210 ? "How many bytes do you want to protect";›220 INPUT PROTECT›230 HI=INT(PROTECT/256):LOW=PROTECT-256*HI›240 SUBR$(6,6)=CHR$(LOW)›250 SUBR$(14,14)=CHR$(HI)›300 REM ** REINITIALIZE BASIC WITH THE NEW LOW MEMORY POINTER **›310 Z=USR(ADR(SUBR$))›400 REM ** MACHINE LANGUAGE SUBROUTINE **›410 REM MEMLO =$02E7;BOTTOM OF AVAILABLE USER MEMORY›420 REM WARMST=$08;WARM START FLAG›430 REM CARTA =$A000;BASIC CARTRIDGE ENTRY POINT›440 REM ›450 REM THE PROGRAM IS COMPLETELY RELOCATABLE. SO NO STARTING ADDRESS IS PROVIDED›470 REM ›500 REM CLC ;INITIALIZE FOR ADDITION›510 DATA 24›520 REM LDA MEMLO ;ADD LEAST-SIGNIFICANT BYTES›530 DATA 173,231,2›540 REM ADC #PROTECT&$FF›550 DATA 105,0›560 REM STA MEMLO›570 DATA 141,231,2›580 REM LDA MEMLO+1 ;ADD MOST-SIGNIFICANT BYTES›590 DATA 173,232,2›600 REM ADC #PROTECT/256›610 DATA 105,0›620 REM STA MEMLO+1›630 DATA 141,232,2›640 REM LDA #0 ;RESET THE WARM START FLAG›650 DATA 169,0›660 REM STA WARMST›670 DATA 133,8›680 REM JUMP CARTA ;START BASIC OVER AGAIN›690 DATA 76,0,160›999 END ›