Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.sys.apple2.programmer > #2173 > unrolled thread
| Started by | applepcsoftware@gmail.com |
|---|---|
| First post | 2016-01-25 04:09 -0800 |
| Last post | 2016-01-28 12:29 -0800 |
| Articles | 17 — 6 participants |
Back to article view | Back to comp.sys.apple2.programmer
AppleSoft Basic Copy Protection Help? applepcsoftware@gmail.com - 2016-01-25 04:09 -0800
Re: AppleSoft Basic Copy Protection Help? mverpelli@libero.it - 2016-01-25 04:36 -0800
Re: AppleSoft Basic Copy Protection Help? applepcsoftware@gmail.com - 2016-01-25 05:12 -0800
Re: AppleSoft Basic Copy Protection Help? mverpelli@libero.it - 2016-01-25 06:42 -0800
Re: AppleSoft Basic Copy Protection Help? applepcsoftware@gmail.com - 2016-01-25 08:00 -0800
Re: AppleSoft Basic Copy Protection Help? mverpelli@libero.it - 2016-01-25 08:22 -0800
Re: AppleSoft Basic Copy Protection Help? gids.rs@sasktel.net - 2016-01-25 08:47 -0800
Re: AppleSoft Basic Copy Protection Help? michael.pohoreski@gmail.com - 2016-01-25 10:56 -0800
Re: AppleSoft Basic Copy Protection Help? michael.pohoreski@gmail.com - 2016-01-25 11:06 -0800
Re: AppleSoft Basic Copy Protection Help? applepcsoftware@gmail.com - 2016-01-25 13:12 -0800
Re: AppleSoft Basic Copy Protection Help? gids.rs@sasktel.net - 2016-01-29 20:54 -0800
Re: AppleSoft Basic Copy Protection Help? applepcsoftware@gmail.com - 2016-01-25 13:15 -0800
Re: AppleSoft Basic Copy Protection Help? qkumba <peter.ferrie@gmail.com> - 2016-01-25 15:48 -0800
Re: AppleSoft Basic Copy Protection Help? michael.pohoreski@gmail.com - 2016-01-28 12:29 -0800
Re: AppleSoft Basic Copy Protection Help? qkumba <peter.ferrie@gmail.com> - 2016-01-29 06:57 -0800
Re: AppleSoft Basic Copy Protection Help? Michael Pohoreski <michael.pohoreski@gmail.com> - 2016-01-29 14:33 -0800
Re: AppleSoft Basic Copy Protection Help? michael.pohoreski@gmail.com - 2016-01-28 12:29 -0800
| From | applepcsoftware@gmail.com |
|---|---|
| Date | 2016-01-25 04:09 -0800 |
| Subject | AppleSoft Basic Copy Protection Help? |
| Message-ID | <1cabe2ed-ff75-4555-a3f8-e948376d913f@googlegroups.com> |
I have a problem. I can't get my basic applesoft program to compile. It's a simple hangman game but my question is how can I prevent the list from showing? for example say I have this: 100 REM PRODOS STARTUP & SELECTOR 102 REM WITH BYE & ONERR & CAT 105 REM APPLETECH, 1987-1999 107 REM 110 REM NEW PROGRAM NAMES GO 120 REM IN DATA STATEMENTS IN 130 REM LINES AFTER 1000 AND 140 REM BEFORE 1900. 150 REM THE PROGRAM'S NAME IS 160 REM FIRST. A DESCRIPTION 170 REM CAN FOLLOW A SPACE. 172 REM 173 REM EXAMPLES: 175 REM 1010 DATA UTIL.SYSTEM (COPY II PLUS 7.1) 177 REM 1020 DATA BLOCK.WARDEN 200 GOTO 250 210 REM GET KEY 220 ZZ = PEEK (49152): IF ZZ < 128 THEN 220 230 K = ZZ - 128:ZZ = PEEK (49168): IF K > 95 THEN K = K - 32 240 PRINT : RETURN 250 TEXT : HOME 260 E$ = "EXIT":H = 2:OO = 0 270 PRINT CHR$ (4)"PREFIX": INPUT "";P$ 280 FOR I = 0 TO 20: READ X$: IF X$ < > E$ THEN NEXT I 290 F = FRE (0):F = I 300 DIM C$(F) 310 RESTORE : FOR I = 0 TO F: READ C$(I): NEXT I 320 V = INT ((17 - F) / 2): IF V < 1 THEN V = 1 330 HOME :VV = V + 4:S = VV + 2:O = S:E = S + F: PRINT : VTAB VV: HTAB H - 1: PRINT " WELCOME TO "P$"!": VTAB S: FOR I = 0 TO F: HTAB H: PRINT " "C$(I): NEXT I 340 C = O - S: VTAB O: HTAB H: INVERSE : PRINT " "C$(C)" ": NORMAL :J = O: GOSUB 220: IF K = 10 THEN O = O + 1: IF J = E THEN O = S 350 IF K = 11 THEN O = O - 1: IF J = S THEN O = E 360 IF K < > 13 THEN VTAB J: HTAB H: PRINT " "C$(C)" ": GOTO 340 370 IF C$(C) = E$ THEN VTAB 24: INVERSE : PRINT " "E$" ";: NORMAL : FOR I = 1 TO 21: PRINT : NEXT I: END 380 IF C$(C) = "BYE" THEN PRINT CHR$ (4)"BYE" 390 IF C$(C) = "CAT" THEN HOME : PRINT CHR$ (4)"CAT": GOTO 470 400 IF C$(C) = "HARD DISK" THEN PRINT CHR$ (4)"PR#7" 410 X$ = C$(C):K = LEN (X$): FOR I = 1 TO K: IF MID$ (X$,I,1) < > " " THEN NEXT I: GOTO 430 420 X$ = LEFT$ (X$,I - 1) 430 ONERR GOTO 450 440 HOME : PRINT CHR$ (4)"-"X$: END 450 HOME : VTAB 10: PRINT "COULD NOT START "X$"!"; 460 PRINT CHR$ (7); CHR$ (7): PRINT : PRINT : POKE 216,0 470 PRINT "PRESS ANY KEY": GOSUB 220: GOTO 330 1000 REM PROGRAM NAMES 1900 DATA CAT 1910 DATA BYE 1999 DATA EXIT 2000 NEW : PRINT "NOT AVAILABLE..." : POKE 214,255 : TEXT : HOME : D$ = CHR$ (4): REM CTRL-D : INT : PRINT "CREATED BY APPLETECH" When I type List it list the program STARTUP.bas code. How can I make it where it just prints the last or first line "PRINT "CREATED BY APPLETECH" Thank you :)
[toc] | [next] | [standalone]
| From | mverpelli@libero.it |
|---|---|
| Date | 2016-01-25 04:36 -0800 |
| Message-ID | <0bf0612f-d67c-40b8-9493-b970d7ee31ac@googlegroups.com> |
| In reply to | #2173 |
Compile? Are you sure? Source -> Compiler -> BIN + Runtime. Delete Source and no more LIST avaible. If you are using the AppleSoft interpreter: https://groups.google.com/forum/#!topic/comp.sys.apple2/mUf7jtr7OQk Marco.
[toc] | [prev] | [next] | [standalone]
| From | applepcsoftware@gmail.com |
|---|---|
| Date | 2016-01-25 05:12 -0800 |
| Message-ID | <1c265f42-c1cf-4a4e-86a7-a67bee2e2458@googlegroups.com> |
| In reply to | #2174 |
On Monday, January 25, 2016 at 6:36:28 AM UTC-6, mver...@libero.it wrote: > Compile? Are you sure? > > Source -> Compiler -> BIN + Runtime. Delete Source and no more LIST avaible. > > If you are using the AppleSoft interpreter: > > https://groups.google.com/forum/#!topic/comp.sys.apple2/mUf7jtr7OQk > > Marco. I'm not sure what you mean by Compile? Are you sure? Source -> Compiler -> BIN + Runtime. Delete Source and no more LIST avaible. If you are using the AppleSoft interpreter: Can you explain further?
[toc] | [prev] | [next] | [standalone]
| From | mverpelli@libero.it |
|---|---|
| Date | 2016-01-25 06:42 -0800 |
| Message-ID | <4595c0c6-71ad-4192-b559-9954217a4055@googlegroups.com> |
| In reply to | #2176 |
You say: "I can't get my basic applesoft program to compile" I say: what compiler are you using? TASC, Beagle, Einsten, Micol... What error(s) returns the compiler? When and if you get a BAS(ic) source program compiled, the resulting file will be a BIN(ary) or SYS(tem) and there no need of distribute to third parties the source. On the other hand if you are using the build-in AppleSoft interpreter I give you the link of a post with hint how to hide the listing. If this is the case I know at least a couple of guy that would be happy to "crack" your protection and made the program again LIST(able) :) Marco
[toc] | [prev] | [next] | [standalone]
| From | applepcsoftware@gmail.com |
|---|---|
| Date | 2016-01-25 08:00 -0800 |
| Message-ID | <0a455468-fba5-4588-9317-6908828066b9@googlegroups.com> |
| In reply to | #2177 |
On Monday, January 25, 2016 at 8:42:41 AM UTC-6, mver...@libero.it wrote: > You say: "I can't get my basic applesoft program to compile" > I say: what compiler are you using? TASC, Beagle, Einsten, Micol... > What error(s) returns the compiler? > > When and if you get a BAS(ic) source program compiled, the resulting file will be a BIN(ary) or SYS(tem) and there no need of distribute to third parties the source. > > On the other hand if you are using the build-in AppleSoft interpreter I give you the link of a post with hint how to hide the listing. If this is the case I know at least a couple of guy that would be happy to "crack" your protection and made the program again LIST(able) :) > > Marc I've tried beagle but it gives me errors, I've tried hayden also no luck. I sort of had some luck with tasc. do you know which one is the best one to use?
[toc] | [prev] | [next] | [standalone]
| From | mverpelli@libero.it |
|---|---|
| Date | 2016-01-25 08:22 -0800 |
| Message-ID | <f3799df6-4366-4296-a8cd-ac28d1145040@googlegroups.com> |
| In reply to | #2178 |
I'm ProDos oriented and always used Beagle. It is difficult to help without seeing the source and know the error could be anything: &, POKE, ... Marco. P.S. The startup program have no problem with Beagle 3.2
[toc] | [prev] | [next] | [standalone]
| From | gids.rs@sasktel.net |
|---|---|
| Date | 2016-01-25 08:47 -0800 |
| Message-ID | <4303d7bd-9957-4211-8eaa-1ae117899133@googlegroups.com> |
| In reply to | #2178 |
On Monday, January 25, 2016 at 10:00:36 AM UTC-6, applepc...@gmail.com wrote: > On Monday, January 25, 2016 at 8:42:41 AM UTC-6, mver...@libero.it wrote: > > You say: "I can't get my basic applesoft program to compile" > > I say: what compiler are you using? TASC, Beagle, Einsten, Micol... > > What error(s) returns the compiler? > > > > When and if you get a BAS(ic) source program compiled, the resulting file will be a BIN(ary) or SYS(tem) and there no need of distribute to third parties the source. > > > > On the other hand if you are using the build-in AppleSoft interpreter I give you the link of a post with hint how to hide the listing. If this is the case I know at least a couple of guy that would be happy to "crack" your protection and made the program again LIST(able) :) > > > > Marc > I've tried beagle but it gives me errors, I've tried hayden also no luck. I sort of had some luck with tasc. do you know which one is the best one to use? In the program itself or at the prompt you can define the line # you wish to list, as in, LIST 100,177 or LIST 2000. But if you compile your program, you no longer have that option since LIST is an applesoft command. not a compiler command. If you want the strings in the REM statements to display when running from a compiler, then change them to PRINT statements. so 100 REM PRODOS STARTUP & SELECTOR becomes 100 PRINT "PRODOS STARTUP & SELECTOR"
[toc] | [prev] | [next] | [standalone]
| From | michael.pohoreski@gmail.com |
|---|---|
| Date | 2016-01-25 10:56 -0800 |
| Message-ID | <31927be0-4404-40f4-b18f-3cda27c5ca9d@googlegroups.com> |
| In reply to | #2173 |
On Monday, January 25, 2016 at 4:09:19 AM UTC-8, applepc...@gmail.com wrote: > I have a problem. I can't get my basic applesoft program to compile. It's a simple hangman game but my question is how can I prevent the list from showing? for example say I have this: > When I type List it list the program STARTUP.bas code. How can I make it where it just prints the last or first line "PRINT "CREATED BY APPLETECH" > > Thank you :) You would need a custom Applesoft shim that sits in the **middle** of a binary program. (Should work for DOS3.3, left as an exercise for ProDOS) 1. Assemble your binary to $838 2. BLOAD it at A$838 3. Insert this Applesoft shim - - - 8< - - - NEW 0 CALL2104:REM******************CREATED BY APPLETECH - - - 8< - - - 4. Replace the '*' with backspaces CALL-151 80C:08 80D<80C.81CM 5. Binary Startup 7FD:4C 38 08 6. Example of our assembly program 838:20 58 FC A2 00 BD 49 08 840:F0 06 20 ED FD E8 D0 F5 848:60 C8 C5 CC CC CF 8D 00 7. BSAVE protected version start at $7FD .. end of your program. If you want to save it as Applesoft program you'll need to hack your DOS so it "thinks" the end of your Applsoft is really the end of your binary. Demo: 7FD:4C 38 08 800:00 33 08 00 00 8C 32 31 808:30 34 3A B2 08 08 08 08 810:08 08 08 08 08 08 08 08 818:08 08 08 08 08 08 43 52 820:45 41 54 45 44 20 42 59 828:20 41 50 50 4C 45 54 45 830:43 48 00 00 00 FF FF FF 838:20 58 FC A2 00 BD 49 08 840:F0 06 20 ED FD E8 D0 F5 848:60 C8 C5 CC CC CF 8D 00 Obviously BRUN will work, but if a user tries to BLOAD and type LIST they will see: CREATED BY APPLETECH Michael
[toc] | [prev] | [next] | [standalone]
| From | michael.pohoreski@gmail.com |
|---|---|
| Date | 2016-01-25 11:06 -0800 |
| Message-ID | <0c661934-d317-4b70-8f02-5e8eb9dd763f@googlegroups.com> |
| In reply to | #2182 |
And if they try to RUN it, they will get the binary program output -- in the demo they will see a clear screen and: HELLO
[toc] | [prev] | [next] | [standalone]
| From | applepcsoftware@gmail.com |
|---|---|
| Date | 2016-01-25 13:12 -0800 |
| Message-ID | <500c8f0f-4c96-4308-9f38-322ec04cdafd@googlegroups.com> |
| In reply to | #2185 |
On Monday, January 25, 2016 at 1:06:00 PM UTC-6, michael....@gmail.com wrote: > And if they try to RUN it, they will get the binary program output -- in the demo they will see a clear screen and: > > HELLO OKAY! Thank you I will try this and post the result.
[toc] | [prev] | [next] | [standalone]
| From | gids.rs@sasktel.net |
|---|---|
| Date | 2016-01-29 20:54 -0800 |
| Message-ID | <22a6663c-72ce-438e-aa00-6b6d97276455@googlegroups.com> |
| In reply to | #2186 |
On Monday, January 25, 2016 at 3:12:25 PM UTC-6, applepc...@gmail.com wrote: > On Monday, January 25, 2016 at 1:06:00 PM UTC-6, michael....@gmail.com wrote: > > And if they try to RUN it, they will get the binary program output -- in the demo they will see a clear screen and: > > > > HELLO > > OKAY! Thank you I will try this and post the result. Probably the simplest and easiest form of protection to both initiate and to bypass is the well known POKE 214,255. This forces any command to make the program RUN. Trying to LIST the basic program would make it RUN instead.
[toc] | [prev] | [next] | [standalone]
| From | applepcsoftware@gmail.com |
|---|---|
| Date | 2016-01-25 13:15 -0800 |
| Message-ID | <ffab1ef2-b8e0-4318-8cbf-03445ff89f1b@googlegroups.com> |
| In reply to | #2185 |
On Monday, January 25, 2016 at 1:06:00 PM UTC-6, michael....@gmail.com wrote: > And if they try to RUN it, they will get the binary program output -- in the demo they will see a clear screen and: > > HELLO One question if I may. What is a custom Applesoft shim?
[toc] | [prev] | [next] | [standalone]
| From | qkumba <peter.ferrie@gmail.com> |
|---|---|
| Date | 2016-01-25 15:48 -0800 |
| Message-ID | <934a8ece-6d74-441c-ae9d-df8c0f1c11ee@googlegroups.com> |
| In reply to | #2187 |
I described a collection of protections for AppleSoft programs in PoC||GTFO #10: infinite lists, missing lines, self-modifying lines, etc. You might find something there to interest you.
[toc] | [prev] | [next] | [standalone]
| From | michael.pohoreski@gmail.com |
|---|---|
| Date | 2016-01-28 12:29 -0800 |
| Message-ID | <d9a48bf6-bf22-4b79-af2c-7dd3c65a391b@googlegroups.com> |
| In reply to | #2189 |
That would be great / interesting to read ! Post a link! :-)
[toc] | [prev] | [next] | [standalone]
| From | qkumba <peter.ferrie@gmail.com> |
|---|---|
| Date | 2016-01-29 06:57 -0800 |
| Message-ID | <fb6f9771-a6d1-409e-be89-4f3c257dddea@googlegroups.com> |
| In reply to | #2193 |
> That would be great / interesting to read ! Post a link! :-) See issue 0x10 on https://www.alchemistowl.org/pocorgtfo/ The Basic protection is part of the article on Apple II copy-protections.
[toc] | [prev] | [next] | [standalone]
| From | Michael Pohoreski <michael.pohoreski@gmail.com> |
|---|---|
| Date | 2016-01-29 14:33 -0800 |
| Message-ID | <76934028-6d84-470f-9a3d-bb287307f183@googlegroups.com> |
| In reply to | #2197 |
On Friday, January 29, 2016 at 6:57:11 AM UTC-8, qkumba wrote:
> See issue 0x10 on https://www.alchemistowl.org/pocorgtfo/
Holy sh!t issue -- 0x10 is freaking awesome!!
That "7 A Brief Description of Some Popular Copy-Protection Techniques" is _perfect timing_ for one of the projects I'm working on. :-)
I've always hated the Q6L, Q6H, Q7L, Q7H labels used by "Beneath Apple DOS". I'm using the more reader friendly:
DRIVE_PHASE_0_OFF = $C080 ;
DRIVE_PHASE_0_ON = $C081 ;
DRIVE_PHASE_1_OFF = $C082 ;
DRIVE_PHASE_1_ON = $C083 ;
DRIVE_PHASE_2_OFF = $C084 ;
DRIVE_PHASE_2_ON = $C085 ;
DRIVE_PHASE_3_OFF = $C086 ;
DRIVE_PHASE_3_ON = $C087 ;
DRIVE_MOTOR_OFF = $C088 ;
DRIVE_MOTOR_ON = $C089 ;
DRIVE_SELECT_1 = $C08A ;
DRIVE_SELECT_2 = $C08B ;
DRIVE_DATA_BYTE = $C08C ; Q6L Strobe Data Latch for I/O
DRIVE_DATA_LATCH = $C08D ; Q6H Load Data Latch
DRIVE_MODE_READ = $C08E ; Q7L Prepare latch for input
DRIVE_MODE_WRITE = $C08F ; Q7H Prepare latch for output
I didn't realize you wrote that article Peter!! Great to see you and 4AM "preserving" this info. :-)
[toc] | [prev] | [next] | [standalone]
| From | michael.pohoreski@gmail.com |
|---|---|
| Date | 2016-01-28 12:29 -0800 |
| Message-ID | <f3c22492-a2e3-4753-9f62-505a010fd167@googlegroups.com> |
| In reply to | #2187 |
On Monday, January 25, 2016 at 1:15:32 PM UTC-8, applepc...@gmail.com wrote: > One question if I may. What is a custom Applesoft shim? I'm using the word "shim" (very) loosely. "Custom" means you hex-edit the Applesoft program to do stuff that you normally can't type in. "Shim" means a "transition". The Applesoft BASIC program has an attached binary program with it. Usually you would fix the "next statement" pointer for line 0 to go past the end of the binary program. If someone tried to view that they would see "random" tokens
[toc] | [prev] | [standalone]
Back to top | Article view | comp.sys.apple2.programmer
csiph-web