D-Bug & Automation Forum
D-Bug & Automation Forum >> Coding >> Introduction to ST Hacking By Hank/Automation PT 1
http://d-bug.mooo.com/dbugforums/cgi-bin/yabb2/YaBB.pl?num=1172673889

Message started by Shw on 28.02.07 at 14:44:48

Title: Introduction to ST Hacking By Hank/Automation PT 1
Post by Shw on 28.02.07 at 14:44:48
;An introduction to cracking/68000 (c)1991 Hank of the Diskmap Crew.

;Please read this doc in medium resloution.
;Please read this doc in GENST2.PRG
;Start time 12:18 a.m. 6th August 1991.
;Finish time 03:08 p.m. 7th august 1991.

;A long while ago the ALIEN of the Pompey Pirates released a breif
;document about hacking particular types of protection on this
;wonderful machine, As with the ALIEN i am totally fed up with people
;asking "How do you crack oringinal sofware ?" - so here is a starters
;guide.

;Question 1:
;Do you know any 68000 assembler ?
;No ? - Buy the ATARI ST internals by abacus books œ25-00 tops.
;Read the paragraphs on the Gemdos,Bios,Xbios & the Exeption vectors
;then return to this document - Believe me it's easy !!.


;Ok you now know about the traps,exeption vectors & the status reg.

;Qestion 2:
;What vector is at address $10 ?
;Answer - Illegal intruction - Were you right ?

;Question 3:
;what is this trap function -

     clr.l      -(sp)
     move.w      #$20,-(sp)            ;function number
     trap      #1
     addq.w      #6,sp

;Answer - Supervisor mode.
;This trap is probabaly the most important out of all the traps as
;you have to enable supervisor mode to access all the hardware and
;the lower end of memory of the ATARI ST.
;Before going into supervisor mode your SR(status register) will be
;at $0300/8300 after it will be $2300/a300 if it is the later you
;are succesfully in super mode.

;Now a bit about the hardware.
;N.B. - all source code documentation in this file has been optom-
;ised with the ".w" on the end of the hardware or low end memory
;address i.e. $ffff8240.w, you may see this registor or any other
;documentated as $ff8240 or $ffff8240, dont panic it's the same reg.
;this optomisation saves 2 bytes on the later 2 examples. The later
;2 are also examples of "Lazy programing".

;The registers:

;      $ffff8240.w                  ;color 0
;      $ffff8242.w                  ;color 1
     
;      $ffff825c.w                  ;color 15
;      $ffff825e.w                  ;color 16

;These registers form the color pallette as you have probably guesed  
;the next one afer $ffff8242.w would be $ffff8244.w and so on until
;$ffff825e.w - easy ?


;      $ffff820a.w                  ;sync mode
     move.b      #$00,$ffff820a.w      ;60 Hz      (American)
     move.b      #$01,$ffff820a.w      ;70 Hz      (mono)
     move.b      #$02,$ffff820a.w      ;50 Hz      (British)

;      $ffff8260.w                  ;resolution
     move.b      #$00,$ffff8260.w      ;low res
     move.b      #$01,$ffff8260.w      ;med res
     move.b      #$02,$ffff8260.w      ;high res

;      $ffff8001.w                  ;memory config
;don't mess!!

;      $ffff8201.w                  ;high byte of the srceen addr
;      $ffff8203.w                  ;low byte of the srceen addr

     move.b      #$07,$ffff8201.w      ;screen at
     move.b      #$80,$ffff8203.w      ;$78000

;      $fffffc02.w                  ;the keyboard

     move.b      #$12,$fffffc02.w      ;kill mouse
     move.b      #$08,$fffffc02.w      ;restore mouse

;you may also see this reg. addressed as:-

     lea      $fffffc00.w,a0            ;reg. start in a0
;      move.b      #num,2(a0)            ;2+a0 = $fffffc02.w

;      $ffff8800.w                  ;the psg reg.

     move.b      #$0e,$ffff8800.w      ;init psg (disk drive mode)

;when i am looking for a protection i normally search for this addr.

;e.g.:-

     move.w      sr,-(sp)            ;save status register
     or.w      #$0700,sr            ;$2700 on the sr - kill interupts      
     move.b      #$0e,$ffff8800.w      ;init psg
     move.b      $ffff8800.w,d1            ;get drive status
     move.b      d1,d2                  ;save old drive status
     and.b      #$f8,d1                  ;mask bits
     move.b      d1,$ffff8802.w            ;gi select
     move.w      (sp)+,sr            ;restore status register
     rts                        ;return from subroutine

;alernitaly you can address the psg as:

     move.l      #$0e002500,$ffff8800.w      ;read side 0 of the disk
     move.l      #$0e002400,$ffff8800.w      ;read side 1 of the disk
     move.l      #$0e002700,$ffff8800.w      ;de-select (turn off light)

;The MFP interupt registers.

;      $fffffa01.w                  ;paralell port      
;      $fffffa03.w

;      $fffffa23.w
;      $fffffa25.w

;As with the color pallette regs. these regs. are addressed every
;2 bytes after each other.
;Only a byte may be poked in to each reg. as they are addressed
;on un-even boundaries.  


;Most of the other hardware registers are documented in the Internals
;book.

;Op codes
;When cracking games the program normaly has to be modified using HEX
;here are some of the important HEX equlivelents of thier source code
;counterparts.


;      NOP            $4e71            ;no operation
;      ILLEGAL            $4afc            ;illegal instruction
;      RTS            $4e75            ;return from subroutine
;      RTE            $4e73            ;return from exeption
;      MOVEQ #0,D0      $7000            ;clr.l      d0!!
;      BRA            $6000            ;branch always

;The above instructions are the ones i mostly use when cracking games
;How to modify memory is explaned later in the section on monst2.

END OF PART 1


Title: Introduction to ST Hacking By Hank/Automation PT 2
Post by Shw on 28.02.07 at 14:46:32
;Copy Protections:- (Disk)
;There are three main types of protections at the moment and they are
;all crap!

;Gremlin Graphics Protection

     BSR.S      GREM
     CLR.W      -(SP)            ;fucnction warmstart
     TRAP      #1


GREM      LEA      $FFFF8604.W,A5
     BSR      LBD66
     MOVEQ      #5,D1
     BSR      LBD76
     MOVEQ      #0,D0
     BSR      LBD3C
     BSR.S      LBCCC
     BSR      LBD28
     MOVE.L      D0,-(A7)
     BSR      LBD66
     MOVEQ      #$4F,D0            ;$4f = track 79
     BSR      LBD3C
     BSR.S      LBCCC
     BSR      LBD28
     SUB.L      D0,(A7)
     BSR      LBD66
     CMPI.L      #$3C,(A7)+
     BGT      LBDAE            ;BRA HERE TO KILL PROTECTION!!
LBCBE      MOVEQ      #-1,D0
LBCC0      MOVE.W      D0,$FFFF8240.W
     DBF      D0,LBCC0
     BRA.S      LBCBE
LBCCC      BSR.S      LBD06
     BSR      LBD9A
     MOVE.W      #$90,2(A5)
     MOVE.W      #$190,2(A5)
     MOVE.W      #$90,2(A5)
     BSR.S      LBD20
     MOVE.W      #$1F,(A5)
     BSR.S      LBD20
     MOVE.W      #$80,2(A5)
     BSR.S      LBD20
     MOVE.W      #$E4,(A5)
     BSR.S      LBD20
LBCFA      BTST      #5,$FFFFFA01.W
     BNE.S      LBCFA
     RTS
LBD06      MOVE.W      #$1F40,D1
LBD0A      DBF      D1,LBD0A
     RTS
LBD10      MOVE.W      #$80,2(A5)
     BSR.S      LBD20
     MOVE.W      (A5),D1
     BRA.S      LBD20
LBD1C      BSR.S      LBD20
     MOVE.W      D0,(A5)
LBD20      MOVEQ      #$24,D4
LBD22      DBF      D4,LBD22
     RTS
LBD28      MOVEQ      #0,D0
     MOVE.B      5(A5),D0
     SWAP      D0
     MOVE.B      7(A5),D0
     LSL.W      #8,D0
     MOVE.B      9(A5),D0
     RTS
LBD3C      BSR.S      LBD06
     MOVE.W      #$86,2(A5)
     BSR.S      LBD1C
     MOVEQ      #$10,D0
     MOVE.W      #$80,2(A5)
     BSR.S      LBD1C
     MOVE.L      #$60000,D3
LBD56      SUBQ.L      #1,D3
     BEQ      LBCBE
     BTST      #5,$FFFFFA01.W
     BNE.S      LBD56
LBD66      MOVE.W      #$64,D0
LBD6A      BSR.S      LBD06
     DBF      D0,LBD6A
     BSR      LBD10
     RTS
LBD76      MOVE      SR,-(A7)
     ORI.W      #$700,SR
     MOVE.B      #$E,$FFFF8800.W
     MOVE.B      $FFFF8800.W,D0
     ANDI.B      #$F8,D0
     OR.B      D1,D0
     MOVE.B      D0,$FFFF8802.W
     MOVE.W      (A7)+,SR
     RTS
LBD9A      MOVE.B      #0,9(A5)
     MOVE.B      #$80,7(A5)
     MOVE.B      #7,5(A5)
     RTS
LBDAE      MOVEQ      #7,D1
     BSR      LBD76
     RTS


;The above protection can removed several ways.
;e.g. 1 - find the following line in the source code
;CMP.L      #$3C,(A7)+, now the next line should be BGT
;the opcode for this instruction is $6E00 (BGT) replace
;the $6E00 with $6000 (BRA) - it's now cracked.

;e.g. 2 - Simply put an RTS ($4E75) on the first line of
;the protection (LEA $FFFF8604.W,A5) doing this is better
;as the protection is never run.
;N.B. before using this methord make sure that the protection
;is actually in a sub-routine (JSR) or (BSR) if not only use
;example 1

;e.g. 3 - Relplace the BSR.S PROT with NOP NOP ($4E71$4E71)
;it has the same effects as above but check the rest of the
;code as a protection can be called from more than one place.

;The above source listing was taken from impossamole - try it.

Title: Introduction to ST Hacking By Hank/Automation PT 3
Post by Shw on 28.02.07 at 14:47:56

;Protoscan II Protection

LOOP      BSR.S      PROT
     TST.B      D0            ;Original
     BNE.S      LOOP            ;No try again
     CLR.W      -(SP)            ;Function warmstart
     TRAP      #1            ;and return to desktop


PROT      LEA      $63000,A0      ;Buffer
     MOVE.L      A0,$7079E
     MOVEQ      #1,D3
L7054C      MOVE.L      D3,$707A2
     BSR      L70776
     BSR.S      L70582
     BSR.S      L705B8
     BSR.S      L705CE
     BSR      L7060E
     BSR      L7060E
     BSR.S      L705B8
     BSR      L706CA
     BSR      L7073A
     MOVE.B      $707A6,D0
     TST.B      D0
     BEQ.S      L70580
     MOVE.L      $707A2,D3
     DBF      D3,L7054C
L7057E      BRA.S      L7057E
L70580      RTS
L70582      MOVE.W      #0,D0
     ADDQ.B      #1,D0
     LSL.B      #1,D0
     ORI.W      #0,D0
     EORI.B      #7,D0
     ANDI.B      #7,D0
L70596      MOVE.B      #7,$FFFF8800.W
     MOVE.B      #$FF,$FFFF8802.W
     MOVE.B      #$E,$FFFF8800.W
     MOVE.B      $FFFF8800.W,D1
     ANDI.B      #$F8,D1
     OR.B      D0,D1
     MOVE.B      D1,$FFFF8802.W
     RTS
L705B8      MOVE.W      #$80,$FFFF8606.W
     MOVE.W      #$D0,D6
     BSR      L706E0
     MOVEQ      #$28,D7
     BSR      L706DA
     RTS
L705CE      BSR      L706FE
     MOVE.W      #$86,$FFFF8606.W
     MOVE.W      #$4F,D6
     BSR      L706E0
     MOVE.W      #$80,$FFFF8606.W
     MOVE.W      #$1B,D6
     BSR      L706E0
     MOVE.L      #$60000,D7
L705F4      SUBQ.L      #1,D7
     BEQ.S      L70602
     BTST      #5,$FFFFFA01.W
     BNE.S      L705F4
     RTS
L70602      BRA.S      L705CE
     MOVE.W      #$FFF9,$707A6
     RTS
L7060E      CLR.L      $70796
     MOVE      SR,L7078C
     MOVE.W      #$90,$FFFF8606.W
     MOVE.W      #$190,$FFFF8606.W
     MOVE.W      #$90,$FFFF8606.W
     MOVEQ      #$16,D6
     MOVE.W      #$200,D2
     MULU      D6,D2
     MOVE.W      D2,L7078E
     MOVE.L      $7079E,D3
     ADD.L      D3,D2
     MOVE.L      D2,L70792
     BSR      L706E0
     MOVE.L      $7079E,D0
     MOVE.B      D0,$FFFF860D.W
     LSR.L      #8,D0
     MOVE.B      D0,$FFFF860B.W
     LSR.L      #8,D0
     MOVE.B      D0,$FFFF8609.W
     MOVE.W      #$80,$FFFF8606.W
     MOVE.W      #$E8,D6
     BSR.S      L706E0
     MOVE.L      #$50000,D7
     MOVEA.L      L70792(PC),A5
     MOVE.W      #$200,D0
L70678      DBF      D0,L70678
L7067C      BTST      #5,$FFFFFA01.W
     BEQ.S      L706A6
     SUBQ.L      #1,D7
     BEQ.S      L706C4
     MOVE.B      $FFFF8609.W,L70797
     MOVE.B      $FFFF860B.W,L70798
     MOVE.B      $FFFF860D.W,L70799
     CMPA.L      L70796,A5
     BGT.S      L7067C
L706A6      MOVE.W      #$90,$FFFF8606.W
     MOVE.W      $FFFF8606.W,D5
     MOVE.W      D5,L70790
     BTST      #0,D5
     BEQ.S      L706C4
     MOVE.W      #$80,$FFFF8606.W
     BSR.S      L7072C
L706C4      MOVE.W      L7078C(PC),SR
     RTS
L706CA      MOVE.W      #$80,$FFFF8606.W
     MOVE.B      #7,D0
     BSR      L70596
     RTS
L706DA      DBF      D7,L706DA
     RTS
L706E0      BSR.S      L706EE
     MOVE.W      D6,$FFFF8604.W
     BSR.S      L706EE
     RTS
     MOVE.W      $FFFF8604.W,D3
L706EE      MOVE      SR,-(A7)
     MOVE.W      D7,-(A7)
     MOVEQ      #$28,D7
L706F4      DBF      D7,L706F4
     MOVE.W      (A7)+,D7
     MOVE.W      (A7)+,SR
     RTS
L706FE      MOVE.W      L7079A,D6
     ANDI.W      #3,D6
     MOVE.L      #$50000,D7
     MOVE.W      #$80,$FFFF8606.W
     BSR.S      L706E0
L70714      SUBQ.L      #1,D7
     BEQ.S      L70722
     BTST      #5,$FFFFFA01.W
     BNE.S      L70714
     RTS
L70722      MOVE.B      #$F9,$707A6
     RTS
L7072C      BSR.S      L706EE
     MOVE.W      $FFFF8604.W,$7079C
     BSR.S      L706EE
     RTS
L7073A      MOVE.L      $7079E,D1
     ADDI.L      #$2EE0,D1
     MOVEA.L      D1,A0
     MOVE.L      #$DAC,D3
     MOVEQ      #0,D2
     MOVE.W      -(A0),D5
L70750      MOVE.W      -(A0),D0
     CMP.W      D0,D5
     BNE.S      L7075E
     ADDQ.L      #2,D2
     DBF      D3,L70750
     BRA.S      L7076E
L7075E      SUBI.L      #$170C,D2
     BMI.S      L7076E
     CLR.B      $707A6
     RTS
L7076E      ST      $707A6
     RTS
L70776      MOVE.L      #$176F,D2
     MOVEA.L      $7079E,A0
     MOVE.L      $4BA.W,D3
L70784      MOVE.W      D3,(A0)+
     DBF      D2,L70784
     RTS
L7078C      DC.L      0
L7078E      DC.L      0
L70790      DC.L      0
L70792      DC.L      0
L70796      DC.L      0
L70797      DC.L      0
L70798      ORI.B      #3,D0
L70799      DC.L      0
L7079A      DC.L      0



;To remove a Protoscan protection all you have to do is type MOVEQ #0,D0
;RTS ($70004E75) you need the moveq so that D0 is equil (0) when it returns
;from the protection as most of them do a TST.B D0 see above example.


;Here is a brief list of games you will find this protection in:

;The Untouchables
;Postman Pat
;Ninja Warriors
;Continental Curcus
;Where Time Stood Still

Title: Introduction to ST Hacking By Hank/Automation PT 4
Post by Shw on 28.02.07 at 14:48:54
;Rob Northern Protection(internal)

;This one is probably the hardest of the three.


;ROB      MOVEQ      #0,D0
;      MOVEQ      #0,D1
;      PEA      L12345(PC)
;      MOVE.L      #$50004,-(SP)
;      TRAP      #13
;      ADDQ.W      #8,SP
;L12345      MOVE.L      (SP)+,$10.W
;      ILLEGAL      
;      DC.W      $2345
;      AND.W      #$F8,SR
;      CLR.L      $24.W
;      MOVE.L      #43245365363,-(SP)
;      MOVE.L      #88745222435,-(SP)
;      MOVE.L      #47788679999,-(SP)
;      MOVE.L      #43245365363,-(SP)
;      MOVE.L      #4324536536,-(SP)
;
;There would be about 2.5kb of data between the above and below
;parts of code, i have done this to simplyfy the example.


;      DC.W      $FEFE
;      AND.W      $FFFFFF8913.W,D5
;      RTE

;These following examples are what maybe carried at the bottom of
;a RNC protection

;1       CMP.L #$42425673,D0
;       BNE      $34566

;The above line (BNE) would be replaced by a $4E71 (NOP)
;If it should read (BEQ) this would be changed to a (BRA)
;$6000


;2       MOVE.L      D0,ADDR
;These become more complicated as the address D0 is placed
;in can be checked at any time.
;To get round this you must do a string search* on the address
;that D0 is placed in to find the serial number of the disk.
;Once you have done that you must force the serial no. into
;D0 yourself then modify the protection.
;To find a Rob Northern do a string search* on $4AFC(ILLEGAL)

*see section on monst2 for string search

;i.e.
;ROB      MOVEQ      #0,D0
;      MOVEQ      #0,D1
;      MOVE.L      #$42425675,D0
;      MOVE.L      D0,$24.W
;      BRA      $888      ;jump over protection
;L12345      MOVE.L      (SP)+,$10.W
;      ILLEGAL      
;      DC.W      $2345
;      AND.W      #$F8,SR
;      CLR.L      $24.W
;      MOVE.L      #43245365363,-(SP)
;      MOVE.L      #88745222435,-(SP)
;      MOVE.L      #47788679999,-(SP)
;      MOVE.L      #43245365363,-(SP)
;      MOVE.L      #4324536536,-(SP)
;
;There would be about 2.5kb of data between the above and below
;parts of code, i have done this to simplyfy the example.


;      DC.W      $FEFE
;      AND.W      $FFFFFF8913.W,D5
;      RTE


;The modified version should look something like the above.
;When you have poked the serial number into D0
;you must then jump over the protection to where the code
;checks or pokes D0 into an address

;the opcode for this is;
;12345678 is for my example only

;      move.l      #$12345678,d0
;      move.l      d0,$24.w
;      bra      coderestart


;      $203c12345678      ;move.l      #serialno,d0
;      $21c00024      ;move.l      d0,$24.w
;      $60000888      ;bra      coderestart

;there are examples of all these protections for you to crack.
;they are all executable files that will crash - it's up to
;you to get them to work. the screen will turn red if they fail
;and green if you manage to crack them.

;filenames
;GREMLIN.PRG      ;Gremlin Graphics Protection
;PROT.PRG      ;Protoscan II Protection
;RNC.PRG      ;Rob Northern Protection


;Rob Northern Protection (external)

;This one is a real pig for beginers.
;To look at it looks like the internal version exept the
;whole file is encripted.

;Leave this one alone for the time being.

Title: Introduction to ST Hacking By Hank/Automation PT 5
Post by Shw on 28.02.07 at 14:50:41
;Novela Protection(manual)

;Not so many games use this one but there are the odd ones like
;Carrier Command,Fighter Bomber, Midwinter.

;To crack these you must be more involved with 68000 programing.

;Again leave these ones alone.



;Disk Types:-

;There are 2 types of format in which games appear

;1- the Auto folder booter/Double click booter(desktop)
;2- boot disks - the types with no files visible on the desktop
;i.e. Operation Wolf, Swichblade II(original version).



;Auto folders + Desktop booters can be directly loaded in to monst2
;as executable files.
;you must first load & run the freemem.prg file, then load your
;executable file. (all loading explaned in the monst2 section)

;Boot Disks - These are slightly more tricky as they run from the
;boot sector, To access these you must read in the boot sector
;using the bootfile.prg there is no need to load the freemem.prg
;first you must then "Trace"* through the bootsector, The bootdisk.prg
;file looks something like this:-

*Refer to monst2 section    

     clr.l      -(sp)
     move.w      #$20,-(sp)      ;function supervisor mode
     trap      #1
     addq.w      #6,sp

     move.w      #1,-(sp)      ;read 1 sector
     clr.w      -(sp)            ;side 0
     clr.w      -(sp)            ;track 0
     move.w      #1,-(sp)      ;sector 1
     clr.w      -(sp)            ;dive 0
     clr.l      -(sp)            ;unused long word
     pea      $30000            ;buffer address
     move.w      #8,-(sp)      ;function read sectors
     trap      #14            ;trap xbios
     lea      20(sp),sp      ;correct stack
     jmp      $30000            ;jump to the boot sector

;I will not go into much detail with these as it can become
;quite complicated.

;Once you have read in the bootsector you have accessed the games
;loader.

;For instance if you can get hold of Count Duckula (original)
;then it is a good one to practice on as it loads at a sensible
;address and is not protected in any way.

;1 load the bootdisk.prg.
;2 Insert Count duckula.
;3 fill memory from 10000,80000 with $ee*
;4 trace through the bootdisk.prg until it has jumped to $30000*
;5 trace the Duckula loader until you hit a DBF then do a breakpoint*
;6 your pc should now be on the line JMP (A2)*
;7 trace this line!*
;8 continue tracing until your pc is on the BCC.S line just before
;the JMP (A5) and do another breakpoint.*
;the disk should now be loading into memeory.
;9 when it has finished loading set window M2 to $10000 - ok?
;now do a string search on your fill pattern $ee.
;you may find the odd one in count duckula - just press N until
;you hit a large block of them.
;10 press TAB so you are on window M3 - memory and press the left
;cursor ones.
;11 press TAB twice so you are now on M2 - disassembly and set
;the window to $10000, so now M3 points to the end and M2 points
;to the start!!.
;12 insert a blank formatted disk and save Duckula out as a file.
;to save press S save binary,filename  type DUCK.RAW <return>
;start address,end   - type M2(start),M3(end) <return> it should
;now save out Duckula.  

;N.B. Count Duckula Must allways be run from $10000

;There is a piece of code called "COPY.S" use this to
;relocate Duckula to $10000

;i.e. dest equ      $10000
;incbin      duck.raw

;Full documentation is in this file.


;modifing an executable file.

;As with all executable files(.prg,.tos,.acc,.app,.ttp)
;they have relocation data on the end of the file so if
;you want to crack an executable file you cannot save an
;executable file out if you loaded it into the monitor
;as executable.
;1 you must file memory as with duckula $10000,$80000,$ee
;2 load your program in as binary - press B  Gremlin.prg,$10000
;3 the gremlin.prg will have now loaded at $10000 providing it is
;on the disk!!.
;4 modify the relevent parts.
;5 seach for $ee
;6 point M3 to the end byte by pressing the left cursor as in duckula
;and then set M2 to $10000 and save it out as a binary file as with
;duckula - i hope that is not too complicated.
;N.B. this file will still be executable.

;Monst2 - the best 68000 monitor

;N.B. if you have a spare œ59-99 then buy it!!

;When you press (y) to load the monitor it will prompt you to
;enter an executable file to load.

;1- If you wish to load an exec file type freemem.prg <return twice>
;then press R (run) followed by G (go). Now press ctrl L (load exec file)
;followed by the program you wish to load's name.


;2- A boot disk just type bootdisk.prg <return twice>

;3- A binary file i.e. duckula.raw - press escape
;then B (load Binary file) DUCKULA.RAW,$10000 - easy!
---------------------------------------------------------------

Title: Introduction to ST Hacking By Hank/Automation PT 6
Post by Shw on 28.02.07 at 14:51:12
;Monst2 instructions.

;CTRL Z - TRACE ONE LINE OF CODE (RUN ONE LINE OF CODE)  
;CTRL A - BREAKPOINT RUN A LOOP OR BSR,JSR -I.E.
;DBF,BCC,BNE,JSR,BSR. THIS COMMAND SAVES TIME.
;CTRL S - SKIP ONE LINE (SEE THINGS TO AVOID)
;B - LOAD BINARY FILENAME  <FILENAME,ADDR>
;S - SAVE BINARY FILENAME <FILENAME> (RETURN) <START,END ADDR>
;CTRL L - LOAD EXECUTABLE FILE - THIS WILL NOT WORK IF AN EXEC FILE
;FILE IS STILL RUNABLE IN MEMORY- THE OLD FILE HAS TO BE TERMINATED.
;O - ENTER EXPRESION (PROGRAMMERS CALCULATOR) \NUMBER = DECIMAL
;NUMBER = HEX.
;ALT Z - OPEN WINDOW TO FULL SCREEN.
;M - WINDOW START ADDRESS
;TAB KEY - FLICK BETWEEN M1-REGS,M2-DISASSEMBLY,M3-MEMORY.
;G - SEARCH - PRESS W THEN YOUR PATTERN I.E. $EE
;N - SEARCH NEXT - CONTINUE TO LOOK.
;R - FOLLOWED BY G  IS RUN,GO
;W - FILL <START,END,WITH>
;CTRL E - RE-INSTALL SYSTEM VECTORS I.E. TRAPS,EXEPTIONS.
;V - VIEW WORK SCREEN.
;I - COPY <START,END,TO>
;ALT R - REGISTER=VALUE.

;Things to avoid when tracing a program:-

;Anything to do with $24.w,$25.w,$26.w,$27.w
;Anything to do with $10.w,$11.w,$12.w,$13.w
;$118.w            ;keyscanner
;$70.w            ;vertical blank
;any of the MFP interupts described at the start of this doc.
;      move.b      #$13,$fffffc02.w      ;keyboard master reset
;RESET
;ILLEGAL
;TRAPV
;DIVU #0,REG

;when loading a bootdisk into memory do not load below $8000
;it may do something like lea      $600.w,a0
                   bsr.s      load
;simply fill memory from $80000,$d0000 then ALT-R a0=$80600
;load it 512kb higher!


;thats all - thank god......

Title: Re: Introduction to ST Hacking By Hank/Automation PT 1
Post by Hank on 04.01.12 at 00:50:24
Well it is good to see that a document that I wrote almost 21 years ago is still alive and well on the internet!

As you can see, I certainly put the spell checker in GenST2 to good use, well, actually it did not have one, but that’s what you get for leaving school without any qualifications!

I’m surprised that there is still any interest in the scene, those days were probably one of the best times of my life!

Title: Re: Introduction to ST Hacking By Hank/Automation PT 1
Post by Shw on 04.01.12 at 08:51:25
Hi Hank

nice to see another 'oldie' re-emerge! :)

Yeah I'm sure many people found your doc useful back in the old days..

Couple of things... I've releasing the official Automation DVD 'soon' , wanna contribute ? eg interviews etc... our old ones are still on the website. Secondly, do you still possess any old disks? we're still after some BBC menus which no one seems to have!!

cheers
Shw/D-Bug

Title: Re: Introduction to ST Hacking By Hank/Automation PT 1
Post by Hank on 05.01.12 at 21:11:17
Yes, I don't mind helping out, although, I no longer have any ST disks other than my 'tools' disk, which should still be at my parents house back in Leeds.

Drop me a PM with your contact info, and we'll exchange details so to speak.

Thanks, Col.

D-Bug & Automation Forum » Powered by YaBB 2.6.0!
YaBB Forum Software © 2000-2024. All Rights Reserved.