[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: More info so far Re: Weird idea re Print Shop
The recap so far:
1. Print Shop uses a heavily hacked DOS 3.3, but the portions it directly
uses are more or less the same as the official version. (The only
protection relevant to my copy, which is already cracked, is that the VTOC
catalog sector is wrong; this is rectified by patching the third byte of
T$11S$0 to "$09" (I think it's "$01" on the existing copies)).
2. This DOS 3.3 has been relocated and/or cut down, so that it uses a
smaller memory footprint; Print Shop will in certain cases step on the
memory of standard DOS, but so far will work fine if DOS has been
relocated. (Its code goes up into the lower 9Axx area.)
3. Itself it seems to use only 4 commands: BLOAD, BSAVE, DELETE, INIT. In
all cases, these commands are invoked via the text output hooks (i.e.,
PRINT CHR$(4)), and not directly through calls into DOS. For example,
reset it from a MONITOR ROM and type these commands:
*3EAG
*INT
>CATALOG
>MONIOC
>BRUN HELLO
and you will see that it still has most of DOS 3.3 under the hood, as well
as how it uses the PRINT CHR$(4) technique to load itself.
4. There are two disk checks; one of these was located at $7016, within
MENULIB, and the other is yet unknown but may lie in MENULIB or SYSLIB.
If defeated or reworked, it may be possible to convert Print Shop to
files.
5. All filenames are compatible with ProDOS, even if the code is not. The
memory layout also does not seem like it would interfere with ProDOS,
being that it runs on a 48K machine and doesn't seem to step on a
different DOS which is located in extended memory.
6. Error handling is done by patching the running DOS with JMPs; I have at
least identified 2 cases of it, although as I cannot currently access my
main computer, I do not have a reference for this claim. This generally
works like this:
LDA #$4C
STA patchpoint
LDA #<erh
STA patchpoint+1
LDA #>erh
STA patchpoint+2
*code to print the command line through the $FDED vector*
LDA #$00
BEQ noerr ; always
erh:
of some sort or variant.
I remain convinced that it may be possible first to do a files crack
(which would be capable of running on top of UniDOS or another 400/800K
DOS 3.3 variant), and second to take that crack, rewrite parts of the code
and port the whole thing to ProDOS-8 (making it hard disk installable).
However, I have at present been unable to complete my analysis.
-uso.