Kopierschutz ohne Read Error
Read Errors sind für die meisten Kopierprogramme kein Problem, deshalb wird hier ein anderer Weg beschritten. Basic- und Maschinen-Programme sind nur dann lauffähig, wenn vor dem Start ein Paßwort eingegeben wird.
Das Programm ist in Maschinensprache geschrieben und belegt den Speicherbereich von $CFOO bis $CF46. Der bereich von $CF47 bis $CFFF istfür ein Paßwort reserviert, das eingegeben werden muß, nachdem der zuvor abgetippte Lader (siehe Listing) mit RUN gestartet wurde. Von nun an werden alle Programme, die auf Diskette gespeichert werden, beim Speichern codiert. Solange der Computer eingeschaltet bleibt, können Programme, die mit dem eingegebenen Paßwort gespeichert wurden, ganz normal geladen werden. Programme, die unter einem anderen Paßwort gespeichert wurden lassen sich zwar auch noch Laden, sind aber nicht mehr lauffähig. Sollen solche Programme gestartet werden, muß dem Computer vor dem Laden das neue Paßwort übermittelt werden. Dies geschieht mit einem kleinen Basic-Programm:
10 INPUT C$ : C=LEN(C$)
20 FORI=1TOC
30 POKE 53072+I,ASC(MID$ (C$,I,1))
40 NEXT
50 POKE 13*16T3-1,C
60 END
Soll ein normales, also uncodiertes, Programm geladen oder gespeichert werden, so muß man den Codierer mit POKE 1,55 ausschalten. Mit POKE 1,53 läßt er sich wieder einschalten.
(Michael Dietz/ah)
10 rem ************************ 15 rem * * 20 rem * >> code s/l lader << * 25 rem * * 30 rem * michael dietz * 35 rem * 3303 vechelde * 40 rem * berliner str. 23 * 45 rem * tel.:05302/5991 * 50 rem * * 55 rem ************************ 60 : 65 : 100 poke53280,6:poke53281,6:poke646,14 110 print"{clr}" 120 fori=0to41:read a:poke828+i,a:next 130 sys828 140 fori=52992to53061:read a 150 pokei,a:next 160 input"{down}{down} code ";c$:c=len(c$) 170 fori=1toc 180 poke53072+i,asc(mid$(c$,i,1)):next 190 poke62954,32:poke62955,00:poke62956,207 200 poke62626,32:poke62627,00:poke62628,207 210 poke62731,76:poke62732,12:poke62733,207 220 poke63019,76:poke63020,30:poke63021,207 230 poke13*16^3-1,c:poke1,53:new 240 : 250 : 260 data 169,0,133,95,133,90,133,88,169 270 data 160,133,96,169,192,133,91,133,89,32 280 data 191,163,169,0,133,95,133,90,133 290 data 88,169,224,133,96,169,0,133,91,133,89 300 data 76,191,163 310 : 320 : 330 data 142,253,207,162,1,142,254 340 data 207,174,253,207,96,32,46,207 350 data 141,252,207,56,173,253,207 360 data 237,252,207,164,147,76,14 370 data 245,141,252,207,32,46,207 380 data 24,109,252,207,32,221,237 390 data 76,46,246,206,254,207,208 400 data 6,173,255,207,141,254,207 410 data 142,253,207,174,254,207,189 420 data 80,207,174,253,207,96