Atari ST Book: POWER.PRG listing

Commented assembly listing for the POWER.PRG in an Atari ST-Book. Also available on GitHub. main: pea ($0000).w move.l #’_PWR’,-(sp) jsr (_getcookie).l ; _PWR cookie installed? addq.l #8,sp tst.w d0 beq install ; (no -> install app) _term: clr.w -(sp) trap #1 ; Pterm0() illegal install: move.l #infoText,-(sp) move.w #9,-(sp) trap #1 ; Cconws() addq.w #6,sp … Continue reading Atari ST Book: POWER.PRG listing

Atari ST Protection: Speedball

SpeedBall protection is almost identical in the code to Garfield. Track 79 has to be shorter than normal (e.g. 5979 bytes, about 5% shorter than normal) 02BDA8 48E77F7E L0434:MOVEM.L A1-A6/D1-D7,-(A7) 02BDAC 23C80002C1D0 MOVE.L A0,$0002C1D0 L0465 02BDB2 13FC00000002C1D4 MOVE.B #0,$0002C1D4 L0466 02BDBA 263C00000001 MOVE.L #1,D3 02BDC0 23C30002C1D6 L0435:MOVE.L D3,$0002C1D6 L0467 02BDC6 4EB90002BE38 JSR EnterSuper 02BDCC 4EB90002C19E … Continue reading Atari ST Protection: Speedball

Atari ST Protection: Silent Service, F15 Strike Eagle

This is a more interesting protection! For one it decrypts the track testing code only while it is executed (not really a problem with an Atari ST emulator) and encrypts it afterwards. It reads track 79 and takes the very FIRST byte from the track and searches for the first position where this byte changes. … Continue reading Atari ST Protection: Silent Service, F15 Strike Eagle

Atari ST Protection: Mighty Bombjack

Finally an interesting protection! The boot sector is executable and simply loads the code into memory plus reading the boot sector (moving the head back to track 0). After loading the code the fun begins (skip further down…) TEXT BRA.S L0000 DC.B $00,$00,$00,$00,$00,$00,$00,$00 DC.B $00,$00,$02,$02,$01,$00,$02,$70 DC.B $00,$20,$03,$00,$05,$00,$0A,$00 DC.B $01,$00,$00,$00,$00,$00 L0000:MOVE.L #$230,D0 ;track 56, sector 1 … Continue reading Atari ST Protection: Mighty Bombjack

Atari ST Protection: Midi-Maze

This is the actual call into the protection check: JSR init_aes_window TST.W D0 BGE aes_ok MOVEQ #-1,D0 BRA init_screen_return aes_ok:JSR check_copy_protection MOVE.W D0,protection_flag CLR.W (A7) MOVE.L #str_midimaze_d8a,-(A7) MOVE.W #$3D,-(A7) ; Fopen(“MIDIMAZE.D8A”, 0) JSR _gemdos It is tested later and disables the multi-player game: check protection in a different place later TST.W protection_flag BNE protOK MOVE.W … Continue reading Atari ST Protection: Midi-Maze

Atari ST Protection: Indiana Jones and the Last Crusade

Another protection that measures the length of track 79, which has to be smaller than 6020 byte. The copy station created them bit a lower bitrate, on a standard floppy these tracks can not be written. 0001885a: 6100 0068 BSR fdcSelect 0001885e: 6100 0082 BSR fdcRestore 00018862: 303c 004e MOVE.W #$4E,D0 00018866: 6100 0092 BSR … Continue reading Atari ST Protection: Indiana Jones and the Last Crusade