1 REM Ins{nd av Per Ahlin <1911> 1985-04-27 23.43.06 100 ! ********************************* 105 ! * * 110 ! * FALSKSQU.EEZ 840823 * 115 ! * * 117 ! * utt{nkt och ins{nt * 120 ! * av Per Ahlin <1911> * 121 ! * . . * 125 ! * m v m * 130 ! ********************************* 135 ! 140 ! --------------------------------- 145 ! 150 ! Listskyddsprogram f|r ABC 800 155 ! 160 ! Programmet arbetar mot disk 165 ! d{r program som skall skyddas 170 ! m}ste ha sparats i BAC-format. 175 ! 180 ! Detta program kan anv{ndas till- 185 ! sammans med eller oberoende av 190 ! program som listskyddar med 195 ! RUNONLY-flaggan (tex programmet 200 ! LISTSKYD.800 av <4868>) 205 ! 210 ! Skyddet fungerar genom att lura 215 ! BASIC-tolken att programmet {r 220 ! squeezat. 225 ! 230 ! Kort f|rklaring 235 ! 240 ! Ett BAC-program inleds med 20 245 ! bytes programinformation. Sedan 250 ! f|ljer programmets rader i BAC- 255 ! format. B|rjan av en ej squeezad 260 ! rad ser ut s} h{r 265 ! 270 ! byte 1 = 135 = ny rad 275 ! byte 2 = n2 = radl{ngd 280 ! byte 3,4 = n3,n4 = radnummer 285 ! 290 ! Tolken beh|ver bara byte 1-4 vid 295 ! listning men inte vid exekvering. 300 ! Vid squeezning tas de bort. 305 ! Tolken tror att alla program som 310 ! inte har 1:a radens 1:a kod =135 315 ! {r squeezade och v{grar LISTa. 320 ! 325 ! Detta program skriver |ver byte 330 ! 1 och 2 s} h{r 335 ! 340 ! byte 1 = 144 = kod f|r ! 345 ! byte 2 = 3 = !-satsl{ngd 350 ! 355 ! 144 g|r att tolken tror att pro- 360 ! grammet {r squeezat och v{grar 365 ! LISTa. 3an g|r att tolken fort- 370 ! s{tter exekvera med byte 5 d{r 375 ! det riktiga programmet b|rjar. 380 ! 385 ! Den ursprungliga satsl{ngden i 390 ! byte 2 sparas i programinforma- 395 ! tionsblockets 4de byte som ej 400 ! anv{nds. H{rigenom kan det falsk- 405 ! squeezade programmet }terst{llas. 410 ! 415 ! K|rs detta program en g}ng blir 420 ! programmet p} disken skyddat. 425 ! K|r du det en g}ng till tas skyd- 430 ! det bort igen. 435 ! 440 ! Rekommenderad l{sning 445 ! 450 ! Bit f|r bit med ABC 800 sid 61,68 455 ! Blackebergs Dataf|renings disas- 460 ! semblering av 800-tolken. 465 ! 470 ! Nu kommer {ntligen programmet 475 ! 480 ! ------------------------------ 485 ! 490 INTEGER 495 INPUT "Filnamn: "F$ 500 OPEN F$ AS FILE 1 505 POSIT #1,3 : GET #1,A$ : A1=ASCII(A$) 510 POSIT #1,20 : GET #1,A$ : A2=ASCII(A$) 515 POSIT #1,21 : GET #1,A$ : A3=ASCII(A$) 520 IF A2=135 THEN B1=A3 : B2=144 : B3=3 525 IF A2=144 THEN B1=0 : B2=135 : B3=A1 530 IF B2=0 THEN ; "FEL PROGRAMFORMAT !!!" : STOP 535 POSIT #1,3 : PUT #1,CHR$(B1) 540 POSIT #1,20 : PUT #1,CHR$(B2,B3) 545 CLOSE 1 550 ; : ; F$;" {r nu "; 555 IF B2=135 ; "ej "; 560 ; "falsksqueezad !" 565 END