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) :
|
||
|