OG p O`  O` PSET UP DDDEPACK S DDJEKPAK TOS DD ,  MOVEA.L A7,A5 ;release memory to OS MOVEA.L 4(A5),A5 MOVE.L $C(A5),D0 ADDI.L #$100,D0 MOVE.L D0,-(A7) MOVE.L A5,-(A7) MOVE.W #0,-(A7) MOVE.W #$4A,-(A7) TRAP #1 ADDA.L #$C,A7 MOVEQ #42,D0 CONVERT_L MOVE.B (A0),D1 LSR.B #1,D1 MOVE.B D1,(A0)+ DBF D0,CONVERT_L CLR.L -(A7) ;supervisor state MOVE.W #$20,-(A7) TRAP #1 ADDQ.L #6,A7 MOVE.L $84,OLD_TRAP1+2 ;store & change TRAP #1 vector MOVE.L #MY_TRAP1,$84 MOVE.L D0,-(A7) ;user state MOVE.W #$20,-(A7) TRAP #1 ADDQ.L #6,A7 MOVE.L #DUMMY_VAL,-(A7) ;load & execute program MOVE.L #DUMMY_VAL,-(A7) MOVE.L #FILE_NAME,-(A7) MOVE.W #0,-(A7) MOVE.W #$4B,-(A7) TRAP #1 END_OF_PRG LEA 16(A7),A7 CLR.L -(A7) MOVE.W #$20,-(A7) TRAP #1 ADDQ.L #6,A7 MOVE.L OLD_TRAP1+2,$84 MOVE.L D0,-(A7) MOVE.W #$20,-(A7) TRAP #1 ADDQ.L #6,A7 CLR.W -(SP) TRAP #1 MY_TRAP1 MOVE.L A0,SAVED_A0_1 ;our TRAP #1 handler BTST #5,(A7) BNE.S NO_SUPERVISOR MOVE.L USP,A0 BRA.S CHK_FUNCTION NO_SUPERVISOR MOVEA.L A7,A0 ADDQ.L #6,A0 CHK_FUNCTION CMPI.W #$3F,(A0) BEQ.S FUNC_3F CMPI.W #$42,(A0) BEQ.S FUNC_42 CMPI.W #$4E,(A0) BEQ.S FUNC_4E CMPI.W #$2F,(A0) BEQ.S FUNC_2F CMPI.W #$1A,(A0) BNE.S CALL_OS FUNC_1A MOVE.L 2(A7),RET_ADDR1+2 MOVE.L #SETDTA,2(A7) BRA CALL_OS FUNC_2F MOVE.L 2(A7),RET_ADDR2+2 MOVE.L #GETDTA,2(A7) BRA CALL_OS FUNC_4E MOVE.L 2(A7),RET_ADDR3+2 MOVE.L #SFIRST,2(A7) BRA CALL_OS FUNC_42 MOVE.L 2(A7),RET_ADDR4+2 MOVE.L #LSEEK,2(A7) BRA CALL_OS FUNC_3F MOVE.L 8(A0),LOAD_ADDR MOVE.L 2(A7),RET_ADDR5+2 MOVE.L #READ,2(A7) CALL_OS MOVEA.L SAVED_A0_1,A0 OLD_TRAP1 JMP 0 GETDTA MOVE.L D0,DTA_BUF_ADDR RET_ADDR2 JMP 0 SETDTA MOVE.L 2(A7),DTA_BUF_ADDR RET_ADDR1 JMP 0 SFIRST TST.L D0 BNE RET_ADDR3 FILE_FOUND MOVE.L D0,SAVED_D0 MOVE.L A0,SAVED_A0_2 MOVE.L 2(A7),FILE_ADDR MOVE.W #2,-(A7) ;open file MOVE.L FILE_ADDR,-(A7) MOVE.W #$3D,-(A7) TRAP #1 ADDQ.L #8,A7 MOVE.W D0,HANDLE ;move file pointer to end of file MOVE.W #2,-(A7) MOVE.W D0,-(A7) MOVE.L #0,-(A7) MOVE.W #$42,-(A7) TRAP #1 LEA $A(A7),A7 MOVEA.L DTA_BUF_ADDR,A0 ;set file size LEA $1A(A0),A0 MOVE.L D0,(A0) MOVE.W HANDLE,-(A7) ;close file MOVE.W #$3E,-(A7) TRAP #1 ADDQ.L #4,A7 MOVE.L SAVED_D0,D0 MOVEA.L SAVED_A0_2,A0 RET_ADDR3 JMP 0 LSEEK CMPI.W #2,8(A7) ;file pointer to end of file? BNE NOT_TO_END CMPI.L #0,2(A7) BNE NOT_TO_END MOVE.W 6(A7),HANDLE_2 ;YES! store handle of file MOVE.L D0,SAVED_D0_2 MOVE.L A0,SAVED_A0_3 CMP.L #$A,D0 BLT END_LSEEK MOVE.L RET_ADDR4+2,SAVED_R_ADDR ;save return address MOVE.W #2,-(A7) ;file pointer to 8 bytes from MOVE.W HANDLE_2,-(A7) ; the end of file MOVE.L #-8,-(A7) MOVE.W #$42,-(A7) TRAP #1 LEA $A(A7),A7 ADDQ.L #8,D0 MOVE.L D0,FILE_LENGTH ;store packed file length MOVE.W #1,SEEK_FLAG MOVE.L #ACTUAL_LENGTH,-(A7) ;read 8 bytes MOVE.L #8,-(A7) MOVE.W HANDLE_2,-(A7) MOVE.W #$3F,-(A7) TRAP #1 LEA $C(A7),A7 MOVE.L SAVED_R_ADDR,RET_ADDR4+2 ;restore old return address CMPI.L #$4A454B21,CRUNCHED_FLG BNE END_LSEEK MOVE.L ACTUAL_LENGTH,D0 BRA END_LSEEK_2 END_LSEEK MOVE.L SAVED_D0_2,D0 END_LSEEK_2 MOVEA.L SAVED_A0_3,A0 NOT_TO_END MOVE.W #0,SEEK_FLAG RET_ADDR4 JMP 0 READ TST.W 2(A7) BMI RET_ADDR5 ;device handle->do nothing DISK_FILE MOVEM.L D0-D7/A0-A6,-(A7) MOVE.L D0,PACKED_LENGTH MOVE.L D0,ACTUAL_LENGTH_2 BTST #0,D0 BNE END_READ ;bytes read odd->not crunched CMPI.W #1,SEEK_FLAG BEQ END_READ ;lseek reads->do nothing MOVEA.L LOAD_ADDR,A0 ;calculate end address of file MOVE.L A0,D7 BTST #0,D7 BNE END_READ ADDA.L D0,A0 MOVE.L -(A0),D0 ;check if crunched file CMP.L #$4A454B21,D0 BEQ UNPACK BRA END_READ UNPACK MOVE.L -(A0),ACTUAL_LENGTH_2 MOVE.W SR,D1 BTST #$D,D1 BNE SUPERVISOR CLR.L -(A7) MOVE.W #$20,-(A7) TRAP #1 ADDQ.L #6,A7 LEA SYSTEM_STACK,A6 MOVE.L D0,(A6) MOVE.W #1,SV_FLAG SUPERVISOR MOVE.W $FF8240,OLD_COLOR SUBQ.L #4,PACKED_LENGTH MOVEA.L LOAD_ADDR,A0 ADDA.L PACKED_LENGTH,A0 MOVEA.L LOAD_ADDR,A1 MOVEA.L -(A0),A2 ADDA.L A1,A2 MOVE.L -(A0),D5 MOVE.L -(A0),D0 EOR.L D0,D5 L541F8 LSR.L #1,D0 BNE.S L54200 BSR L542BE L54200 BCS.S L54242 MOVEQ #8,D1 MOVEQ #1,D3 LSR.L #1,D0 BNE.S L5420E BSR L542BE L5420E BCS.S L5426E MOVEQ #3,D1 CLR.W D4 L54214 BSR L542CA MOVE.W D2,D3 ADD.W D4,D3 L5421C MOVEQ #7,D1 L5421E LSR.L #1,D0 BNE.S L54226 BSR L542BE L54226 ROXL.L #1,D2 DBRA D1,L5421E MOVE.B D2,-(A2) EOR.W #$707,MY_COLOR MOVE.W MY_COLOR,$FF8240 DBRA D3,L5421C BRA L5427C L5423C MOVEQ #8,D1 MOVEQ #8,D4 BRA.S L54214 L54242 MOVEQ #2,D1 BSR L542CA CMP.B #2,D2 BLT.S L54264 CMP.B #3,D2 BEQ.S L5423C MOVEQ #8,D1 BSR L542CA MOVE.W D2,D3 MOVE.W #$C,D1 BRA L5426E L54264 MOVE.W #9,D1 ADD.W D2,D1 ADDQ.W #2,D2 MOVE.W D2,D3 L5426E BSR L542CA L54272 SUBQ.W #1,A2 MOVE.B 0(A2,D2.W),(A2) DBRA D3,L54272 L5427C CMPA.L A2,A1 BLT L541F8 MOVE.W OLD_COLOR,$FF8240 CMPI.W #1,SV_FLAG BNE END_READ MOVE.L SYSTEM_STACK,-(A7) MOVE.W #$20,-(A7) TRAP #1 ADDQ.L #6,A7 END_READ MOVE.W #0,SV_FLAG MOVEM.L (A7)+,D0-D7/A0-A6 MOVE.L ACTUAL_LENGTH_2,D0 RET_ADDR5 JMP 0 L542BE MOVE.L -(A0),D0 EOR.L D0,D5 MOVE.B #$10,CCR ROXR.L #1,D0 RTS L542CA SUBQ.W #1,D1 CLR.W D2 L542CE LSR.L #1,D0 BNE.S L542DC MOVE.L -(A0),D0 EOR.L D0,D5 MOVE.B #$10,CCR ROXR.L #1,D0 L542DC ROXL.L #1,D2 DBRA D1,L542CE RTS ACTUAL_LENGTH DC.L 0 CRUNCHED_FLG DC.L 0 SAVED_A0_1 DC.L 0 ACTUAL_LENGTH_2 DC.L 0 LOAD_ADDR DC.L 0 SV_FLAG DC.W 0 SYSTEM_STACK DC.L 0 PACKED_LENGTH DC.L 0 OLD_COLOR DC.W 0 MY_COLOR DC.W $777 SEEK_FLAG DC.W 0 HANDLE_2 DC.W 0 SAVED_D0_2 DC.L 0 SAVED_A0_3 DC.L 0 SAVED_R_ADDR DC.L 0 HANDLE DC.L 0 SAVED_D0 DC.L 0 SAVED_A0_2 DC.L 0 DTA_BUF_ADDR DC.L 0 FILE_ADDR DC.L 0 FILE_LENGTH DC.L 0 DUMMY_VAL DC.W 0 FILE_NAME DC.B 'ROBOCOP.FOF',0 END  3` *O*m - ЭЭ// ?<?<JNA B?< NA\##3@ | #ax | an | ad/< ?< NA\|nذ|g"< < aBJk# | a" | 9aa<1g<2f` | a | aaΰ<1g8<2g<3f`33^`3Nq3Nq3Nq | a | aax< g"< <ng<yf3`D3` f | aZ | aP/< &?< NA\"| ( | a,/<?<NA\?</< (?<NNAPJf/9 ?<HNA\Jk##?</< (?<=NAP3Jkf/9/9 ?9?<?NA JkBa|"9 ҹ# | aa 3@/9?< NA\ | a`/< X?< NA\<g"| Z | N9<gP(|*K̛#a*|,|a*y,Ka*|,|aa`&at*y,Ka*| ,|ava | a | aa< <ng,/9?<INAJf` | aja\BgNA?</< Z?<NAXkNu?<NATNu?<NATNu/?< NA\Nu"@<BB!<0mD<9oaD0$(<!<0m$<9oa$0ԃ錒<B<fNu$<Nu<Fo <an`<Nu<'Nu y"y$ytBABaVJg RA AfanaaR$ y"y$ $BBBBBBGL?&JINu&Ho&Iz*HRM(fgn`^SM(Hfn& Sl@( SDo|m6<`<UFNMv`l*#ng>aH9&906`af06`g&SCaX06`66` aLv`(BNupa8pNuJAg6BA| lRySCp`NuRyC |p `S@eQNuB@$3@tQNu`*o"mE:$"mE<$E($?<NNTC,"$@2<}BQ?<NNT<g C9C/ ?< NA\B?< NA\M,a3@/:?< NA\*z›&z k -"zJg$ёBJAg<f ``&zf+k +k+k  -"- Ҁ+A -Ҁ+A :Jм$@*@$<0C*Q"z(I$:R(z &L,z N&&Q"o&iBmNE4@ z"z$`G&G&* 3@fae:rvfareXrBDat6DrfaZQQ`Brx`raJ<m<gra862< ` 2< BTB6a SJ QmxNu DNuSABBf DQNuEJEK PACKER V1.2 - DECRUNCHINGY 6/0101 Enter name of source file: Enter name of destination file:Enter offset (default is 1000):Could not allocate enough memory Wait a while - now crunching! 1) Crunch Executable .PRG, .TOS or .TTP file 2) Crunch data file Choose: 1) Flash background screen when unpacking 2) Flash text when unpacking (only in Low Res) 3) No flash Choose: Supress relocation after decrunch (y/N):EWelcome to the Jek Packer V1.2(d) Made by Sharaz Jek, January 1989 This version created on 18th January 1989 Crunch another file (Y/n):JEK!8  $  $  (             . fN