290 lines
6.9 KiB
Plaintext
290 lines
6.9 KiB
Plaintext
|
3
|
|||
|
|
|||
|
---------------------------------------
|
|||
|
[Ctrl-S pauses/Space=quit]
|
|||
|
|
|||
|
3
|
|||
|
0
|
|||
|
|
|||
|
THERE ARE TWO KNOWN WAYS TO WRITE
|
|||
|
PROTECT A RAMCARD. THIS ONE INVOLVES
|
|||
|
USING A SWITCH RIGHT ON THE RAMCARD. TO
|
|||
|
DO THIS YOU MUST HAVE A LITTLE KNOW HOW
|
|||
|
OF THE RAM CARD OR OWN A SCHEMATIC OF
|
|||
|
YOUR RAM CARD. YOU MUST BE ABLE TO FIND
|
|||
|
THE R/W LINE. FIRST
|
|||
|
|
|||
|
---------------------------------------
|
|||
|
|
|||
|
Enter (1-10, M=Menu, Q=Quit) :4
|
|||
|
|
|||
|
---------------------------------------
|
|||
|
[Ctrl-S pauses/Space=quit]
|
|||
|
|
|||
|
4
|
|||
|
0
|
|||
|
|
|||
|
HOW TO MODIFY PRO-DOS TO WORK
|
|||
|
** WITH ANY ROM & OTHER PRO-DOS INFO **
|
|||
|
|
|||
|
FIRST, MAKE A COPY OF THE DISK USING
|
|||
|
COPYA FROM THE DOS 3.3 MASTER. THEN
|
|||
|
USING ANY 16 SECTOR DISK-ZAP UTILITY
|
|||
|
THE FOLLOWING SECTORS ARE CHANGED:
|
|||
|
|
|||
|
TRACK 1, SECTOR A: BYTES E8
|
|||
|
THROUGH E9 BECOME "EA"
|
|||
|
TRACK 1, SECTOR C: BYTES 5F
|
|||
|
THROUGH 71 BECOME "EA"
|
|||
|
|
|||
|
THE ROUTINES AT THESE LOCATIONS
|
|||
|
WERE LOOKING FOR "SIGNATURE" BYTES
|
|||
|
IN THE F8 MONIT
|
|||
|
|
|||
|
---------------------------------------
|
|||
|
|
|||
|
Enter (1-10, M=Menu, Q=Quit) :
|
|||
|
|
|||
|
Enter (1-10, M=Menu, Q=Quit) :5
|
|||
|
|
|||
|
---------------------------------------
|
|||
|
[Ctrl-S pauses/Space=quit]
|
|||
|
|
|||
|
5
|
|||
|
0
|
|||
|
|
|||
|
****************************************
|
|||
|
** **
|
|||
|
** A NEW 'DOS' TIP TO ADD **
|
|||
|
** DISK SPACE TO YOUR **
|
|||
|
** DOS 3.3 DISKS **
|
|||
|
** **
|
|||
|
** BY: MARC EPSTEIN **
|
|||
|
** **
|
|||
|
*****************
|
|||
|
|
|||
|
---------------------------------------
|
|||
|
|
|||
|
Enter (1-10, M=Menu, Q=Quit) :M8
|
|||
|
|
|||
|
---------------------------------------
|
|||
|
[Ctrl-S pauses/Space=quit]
|
|||
|
|
|||
|
PROGRAM COMPRESSION
|
|||
|
"HOW TO" AND A UTILITY PROGRAM
|
|||
|
==============================
|
|||
|
|
|||
|
WITH IN MANY CRACKED PROGRAMS LURK
|
|||
|
MANY WAISTFUL REPETITIONS OF DATA (I.E.
|
|||
|
23 04 59 55 55 55 55 55 55 55 55) THEY
|
|||
|
ARE NECCESSARY FOR THE PROGRAM TO WORK
|
|||
|
BUT THEY TAKE UP A LOT OF SPACE. TO
|
|||
|
SOLVE THIS "PROBLEM" I HAVE WRITTEN A
|
|||
|
PROGRAM TO CRAM TOGETHER OTHER PROGRAMS
|
|||
|
AND A PROGRAM TO UNCRAM AND RUN THE
|
|||
|
ORIGINAL PROGRAM. OF COURSE THERE ARE
|
|||
|
MANY VERY COMPLICATED WAYS TO "GET THE
|
|||
|
MOST OUT OF EVERY BYTE" BUT THE WAY I
|
|||
|
CHOSE IS VERY SIMPLE:
|
|||
|
|
|||
|
IF THERE IS A REPETITION IT IS STORED
|
|||
|
LIKE THIS:
|
|||
|
|
|||
|
1) NUMBER OF REPEATS (UP TO $FF),
|
|||
|
REPEAT VALUE
|
|||
|
|
|||
|
OTHERWISE STORE THINGS LIKE THIS:
|
|||
|
|
|||
|
2) $00, NUMBER OF UNIQUES (UP TO
|
|||
|
$FFFF), LIST OF UNIQES
|
|||
|
|
|||
|
USING THIS METHOD THE ABOVE EXAMPLE
|
|||
|
WOULD LOOK LIKE THIS:
|
|||
|
|
|||
|
00 00 03 23 04 59 07 55
|
|||
|
|
|||
|
IN THIS SMALL EXAMPLE NOT MUCH WAS
|
|||
|
SAVED BUT IN REAL LIFE HOWEVER I HAVE
|
|||
|
BEEN ABLE TO REDUCE THE SIZE BY 4K TO
|
|||
|
12K DEPENDING ON THE PROGRAM USING THIS
|
|||
|
SIMPLE METHOD!
|
|||
|
|
|||
|
THE FOLLOWING TWO PROGRAMS ARE
|
|||
|
RELOCATABLE SO THEY CAN BE RUN ANYWHERE
|
|||
|
YOU WISH. THE FIRST OF THE TWO IS THE
|
|||
|
CRAMMER AND THE SECOND PROGRAM IS THE
|
|||
|
UNCRAMMER.
|
|||
|
|
|||
|
TO USE THE CRAMMER JUST:
|
|||
|
|
|||
|
1) LOAD THE PROGRAM TO BE CRAMMED
|
|||
|
ALONG WITH THE CRAMMER (AT LEAST
|
|||
|
ONE PAGE ABOVE THE PROGRAM)
|
|||
|
|
|||
|
2) ENTER THE FOLLOWING INTO PAGE 0:
|
|||
|
|
|||
|
00- PROGRAM START (LSB)
|
|||
|
01- PROGRAM START (MSB)
|
|||
|
02- PROGRAM END (LSB)
|
|||
|
03- PROGRAM END (MSB)
|
|||
|
|
|||
|
3) RUN CRAMMER
|
|||
|
|
|||
|
4) GET THE FOLLOWING FROM PAGE 0:
|
|||
|
|
|||
|
00- CRAMMED START (LSB)
|
|||
|
01- CRAMMED START (MSB)
|
|||
|
02- CRAMMED END (LSB)
|
|||
|
03- CRAMMED END (MSB)
|
|||
|
|
|||
|
BEFORE==> PPPPPPPPPPPPP CRAM
|
|||
|
! ! ! !
|
|||
|
DURING==> CCCCCCC ! CRAM
|
|||
|
! ! ! ! ! !
|
|||
|
AFTER===> ! ! ! CCCCCCC CRAM
|
|||
|
! ! ! ! !! ! !
|
|||
|
$0400 ! ! ! !! ! !
|
|||
|
(PROGRAM START) ! ! !! ! !
|
|||
|
$???? ! !! ! !
|
|||
|
(CRAM START) !! ! !
|
|||
|
(PROGRAM END)! ! !
|
|||
|
(CRAM END) (CRAMMER)
|
|||
|
|
|||
|
|
|||
|
TO USE THE UNCRAMMER JUST:
|
|||
|
|
|||
|
1) LOAD CRAMMED PROGRAM AND UNCRAMMER
|
|||
|
RIGHT ABOVE IT
|
|||
|
|
|||
|
2) CHANGE THE NOP'S IN UNCRAM TO THE
|
|||
|
FOLLOWING:
|
|||
|
|
|||
|
NOP- CRAMMED START (LSB)
|
|||
|
NOP- CRAMMED START (MSB)
|
|||
|
NOP- CRAMMED END (LSB)
|
|||
|
NOP- CRAMMED END (MSB)
|
|||
|
NOP- ORIGINAL PROGRAM START (LSB)
|
|||
|
NOP- ORIGINAL PROGRAM START (MSB)
|
|||
|
|
|||
|
3) CHANGE THE JMP $FF69 IN UNCRAM TO
|
|||
|
THE STARTING ADDRESS OF THE
|
|||
|
ORIGINAL PROGRAM.
|
|||
|
|
|||
|
4) PUT A JMP $(UNCRAM ADDRESS) BEFORE
|
|||
|
CRAMMED START AND YOUR DONE
|
|||
|
|
|||
|
BEFORE===> CCCCCCCC:UNCRAM
|
|||
|
! !
|
|||
|
AFTER====> PPPPPPPPPPPPP!
|
|||
|
! ! !!
|
|||
|
(PROGRAM START) ! !!
|
|||
|
(CRAM START) !!
|
|||
|
(PROGRAM END)!
|
|||
|
(CRAM END)
|
|||
|
|
|||
|
|
|||
|
AN EXAMPLE:
|
|||
|
|
|||
|
CANNONBAL BLITZ-
|
|||
|
|
|||
|
MY BLITZ LOADED AT $0800 TO $8FFF
|
|||
|
AND THE STARTING ADDRESS WAS $2900
|
|||
|
I THEN LOADED CRAMMER AT $B000 AND
|
|||
|
TYPED:
|
|||
|
|
|||
|
00:00 08 FF 8F
|
|||
|
|
|||
|
B000G
|
|||
|
|
|||
|
0 <RETURN> <RETURN>
|
|||
|
|
|||
|
0000- 77 15 FF 90 (A SAVING OF 3K)
|
|||
|
|
|||
|
THE CRAMMED PROGRAM NOW RESIDES AT
|
|||
|
$1577 TO $90FF. I THEN LOADED UNCRAM
|
|||
|
AT $9100 AND TYPED:
|
|||
|
|
|||
|
911D:77 15 FF 90 00 08
|
|||
|
913B:4C 00 29
|
|||
|
1574:4C 00 91
|
|||
|
|
|||
|
THE NEW BLITZ STARTS AT $1574 AND ENDS
|
|||
|
AT $919C
|
|||
|
|
|||
|
|
|||
|
THE CRAMMER:
|
|||
|
|
|||
|
1000:A0 00 A9 00 85 04 A9 04
|
|||
|
1008:85 0
|
|||
|
5 B1 02 C8 AA E8 8A
|
|||
|
1010:91 02 88 A5 00 85 06 A5
|
|||
|
1018:01 85 07 B1 00 A2 00 85
|
|||
|
1020:0C A5 06 C5 02 D0 18 A5
|
|||
|
1028:07 C5 03 D0 12 8A F0 43
|
|||
|
1030:91 04 E6 04 D0 02 E6 05
|
|||
|
1038:A5 0C 91 04 18 90 7B A5
|
|||
|
1040:0C E6 06 D0 02 E6 07 D1
|
|||
|
1048:06 D0 04 E8 D0 D1 CA 85
|
|||
|
1050:0C 8A C9 06 90 1D 91 04
|
|||
|
1058:E6 04 D0 02 E6 05 A5 0C
|
|||
|
1060:91 04 E6 04 D0 02 E6 05
|
|||
|
1068:A5 06 85 00 A5 07 85 01
|
|||
|
1070:18 90 A0 A9 00 85 0A 85
|
|||
|
1078:0B 91 04 E6 04 D0 02 E6
|
|||
|
1080:05 A5 04 85 08 A5 05 85
|
|||
|
1088:09 E6 04 D0 02 E6 05 E6
|
|||
|
1090:04 D0 02 E6 05 B1 00 91
|
|||
|
1098:04 E6 0A D0 02 E6 0B A5
|
|||
|
10A0:00 C5 02 D0 19 A5 01 C5
|
|||
|
10A8:03 D0 13 A5 0B 91 08 E6
|
|||
|
10B0:08 D0 02 E6 09 A5 0A 91
|
|||
|
10B8:08 18 90 40 90 B3 E6 00
|
|||
|
10C0:D0 02 E6 01 E6 04 D0 02
|
|||
|
10C8:E6 05 A5 00 85 06 A5 01
|
|||
|
10D0:85 07 B1 00 A2 00 E6 06
|
|||
|
10D8:D0 02 E6 07 D1 06 D0 04
|
|||
|
10E0:E8 D0 F3 CA 85 0C 8A C9
|
|||
|
10E8:06 90 AA A5 0B 91 08 E6
|
|||
|
10F0:08 D0 02 E6 09 A5 0A 91
|
|||
|
10F8:08 18 90 C0 E6 03 A5 02
|
|||
|
1100:85 06 A5 03 85 07 B1 04
|
|||
|
1108:91 06 C6 06 A5 06 C9 FF
|
|||
|
1110:D0 02 C6 07 C6 04 A5 04
|
|||
|
1118:C9 FF D0 02 C6 05 A5 04
|
|||
|
1120:C9 FF D0 E2 A5 05 C9 03
|
|||
|
1128:D0 DC E6 06 D0 02 E6 07
|
|||
|
1130:A5 06 85 00 A5 07 85 01
|
|||
|
1138:60
|
|||
|
|
|||
|
|
|||
|
THE UNCRAMMER:
|
|||
|
|
|||
|
2000:20 58 FF BA BD 00 01 85
|
|||
|
2008:07 CA BD 00 01 85 06 A2
|
|||
|
2010:05 A0 20 B1 06 95 00 88
|
|||
|
2018:CA D0 F8 F0 06 EA EA EA
|
|||
|
2020:EA EA EA B1 06 95 00 A0
|
|||
|
2028:00 E6 02 D0 02 E6 03 A5
|
|||
|
2030:00 C5 02 D0 09 A5 01 C5
|
|||
|
2038:03 D0 03 4C 69 FF B1 00
|
|||
|
2040:E6 00 D0 02 E6 01 09 00
|
|||
|
2048:D0 3B B1 00 85 07 E6 00
|
|||
|
2050:D0 02 E6 01 B1 00 85 06
|
|||
|
2058:E6 00 D0 02 E6 01 B1 00
|
|||
|
2060:91 04 E6 00 D0 02 E6 01
|
|||
|
2068:E6 04 D0 02 E6 05 C6 06
|
|||
|
2070:A5 06 C9 FF D0 02 C6 07
|
|||
|
2078:A9 00 C5 07 D0 E0 C5 06
|
|||
|
2080:D0 DC 18 90 AA AA B1 00
|
|||
|
2088:E6 00 D0 02 E6 01 E8 91
|
|||
|
2090:04 E6 04 D0 02 E6 05 CA
|
|||
|
2098:D0 F5 18 90 92
|
|||
|
|
|||
|
JOHN
|
|||
|
RAYMONDS
|
|||
|
|
|||
|
|
|||
|
---------------------------------------
|
|||
|
|
|||
|
Enter (1-10, M=Menu, Q=Quit) :
|
|||
|
|