
;Customchipregister

feuer   = $bfe001
intena  = $9a
dmacon  = $96
dmaconr = $2
color00 = $180
vhposr  = $6

;COPPER REGISTER

cop1lc  = $80
cop2lc  = $84
copjmp1 = $88
copjmp2 = $8a

;BITPLANE REGISTER

bplcon0 = $100
bplcon1 = $102
bplcon2 = $104
bpl1pth = $0e0
bpl1ptl = $0e2
bpl1mod = $108 
bpl2mod = $10a
diwstrt = $08e
diwstop = $090
ddfstrt = $092
ddfstop = $094

;SPRITE REGISTER

clxdat  = $00e
clxcon  = $098
spr0pth = $120
spr0ptl = $122
spr1pth = $124
spr1ptl = $126
spr2pth = $128
spr2ptl = $12a
spr3pth = $12c
spr3ptl = $12e
spr4pth = $130
spr4ptl = $132
spr5pth = $134
spr5ptl = $136
spr6pth = $138
spr6ptl = $13a
spr7pth = $13c
spr7ptl = $13e

;BLITTER REGISTER

bltcon0 = $40
bltcon1 = $42
bltcpth = $48
bltcptl = $4a
bltbpth = $4c
bltbptl = $4e
bltapth = $50
bltaptl = $52
bltdpth = $54
bltdptl = $56
bltcmod = $60
bltbmod = $62
bltamod = $64 
bltdmod = $66
bltsize = $58
bltcdat = $70
bltbdat = $72
bltadat = $74
bltafwm = $44
bltalwm = $46
vposr   = $4

ctlw     =$dff096
adkon    =$dff09e
intreqr  =$dff01e 
intreq   =$dff09c
aud0lc   =$dff0a0
aud0tlo  =aud0lc+2
aud0len  =aud0lc+4
aud0per  =aud0lc+6
aud0vol  =aud0lc+8
aud1lc   =$dff0b0
aud1tlo  =aud1lc+2
aud1len  =aud1lc+4
aud1per  =aud1lc+6
aud1vol  =aud1lc+8
aud2lc   =$dff0c0
aud2tlo  =aud2lc+2
aud2len  =aud2lc+4
aud2per  =aud2lc+6
aud2vol  =aud2lc+8

;CIA-A Portregister

ciaapra = $bfe001

;Exec Library Base Offset

openlibrary = -30-522
forbid      = -30-102
permit      = -30-108
allocmem    = -30-168
allocabs    = -30-174
freemem     = -30-180

;Graphics Library

ownblitter = -30-426
disownblitter =-30-432

;Graphics Base

Startlist = 38

;Sonstige Labels

execbase  = 4
planesize = 40*200
planewidht= 40
clsize    = 3*4
chip      = 2
clear     = CHIP+$10000 ;+$30001
fy1       = 20 
fy2       = 150
fx1       = 32
fx2       = 288
possin    = 11380
negsin    =-11380
stasten   =$bfec01
entime    =$8f
openlib   =-408
closelib  =-414
openscreen=-198
closescreen=-66
openwin   =-204
closewin  =-72
printtext =-216
modeold   =1005
modenew   =1006
modus     =-2
openf     =-30
closef    =-36
read      =-42
write     =-48
info      =-114
lock      =-84
solid     = 15
tast:     = 16
cx:       = 16
cy:       = 08
gwert     = 15
ewert     = 30
enconst1  = 4500
enconst2  = 7200
enconst3  = 9900
enconst4  = 12600

random: dc.l 0

run:
  clr.l  d1
  move.l #infodata,d0
  and.l  #3,d0
  beq    noadd
  move.l #2,d1
noadd:
  move.l #infodata,infoadr
  add.l  d1,infoadr

  bsr    init
  bsr    sprcls
  bsr    farbdown

  move.l #$dff000,a5
  move.l titleadr,screenadr
  bsr    screen
  move.l #00,d0      ;455,86
  move.l #450,d1
  bsr    playpos
  bsr    sprcls
  clr.l  gamstat
  bsr    farbup
wait:
  tst.b  ciaapra
  bmi    wait
  bsr    farbdown

  bsr    scoreload
begin:
  clr.l  screenx
  move.l #1,player
  move.l #$dff000,a5
  move.l titleadr,screenadr
  bsr    screen
  move.l #00,d0      ;455,86
  move.l #86,d1
  bsr    playpos
  bsr    sprcls
  move.l stage,d1
  sub.l  #1,d1
  asl.l  #1,d1
  move.l #2+27,d0
  move.l #3+27,d4
  add.l  d1,d0
  add.l  d1,d4
  bsr    stablset
  bsr    farbup
warten1:
  move.l #$ffff,d5
wloop1:
  move.l #$3,d4
wloop2:
  cmp.l  #00,screenx
  beq    noncls
 movem.l d4-d5,-(sp)
  cmp.b  #$73,$bfec01 ;4d
  bne    nocls
  bsr    scorecls
  bsr    scorelist
  bsr    st1
  bsr    scoresave
nocls:
 movem.l (sp)+,d4-d5
noncls:
  bsr    setstage
  move.w $dff00c,d0
  move.w d0,d1
  lsr.w  #1,d1
  eor.w  d0,d1
  btst   #8,d1
  bne    joyhelp
  cmp.b  #$40,$bfec01
  bne    nohelp
joyhelp:
  bsr    help
nohelp:
  cmp.b  #$45,$bfec01
  beq    ende
  cmp.b  #$fd,$bfec01
  beq    play1
  tst.b  ciaapra
  bpl    play1
  cmp.b  #$fb,$bfec01
  bne    loopen 
  move.l #2,player
  jmp    play1      
loopen:
  dbra   d4,wloop2
  dbra   d5,wloop1

  bsr    farbdown
  cmp.l  #00,screenx
  bne    non1
  move.l #431,screenx
movem.l  d4-d5,-(sp)
  bsr    scorelist
movem.l  (sp)+,d4-d5
  jmp    non2
non1:
  move.l #000,screenx
non2:
  move.l screenx,d0      ;455,86
  move.l #86,d1
  bsr    playpos
  bsr    sprcls
  bsr    farbup
  jmp    warten1

play1:
  bsr    farbdown
  move.l gamstat,level1
  move.l gamstat,level2
  clr.l  score1
  clr.l  score2
  bsr    st1
  move.l #3,man1
  clr.l  man2
  cmp.l  #2,player
  bne    gameloop
  move.l #3,man2
gameloop:
  cmp.l  #0,man1
  beq    player2
  bsr    st1
  move.l titleadr,screenadr
  bsr    screen
  move.l #00,d0      ;431,86
  move.l #280,d1
  bsr    playpos
  bsr    sprcls
  move.l stage,d1
  asl.l  #2,d1
  move.l #2+27,d0
  move.l #3+27,d4
  add.l  d1,d0
  add.l  d1,d4
  bsr    stablset
  bsr    farbup
warten2:
  cmp.b  #$45,$bfec01
  beq    ende
  tst.b  ciaapra
  bmi    warten2
  bsr    farbdown
move.l man1,man
move.l level1,level
move.l score1,score  
  bsr    game
move.l man,man1
move.l level,level1
move.l score,score1  
  cmp.l  #0,man1
  bne    player2
  move.l titleadr,screenadr
  bsr    screen
  bsr    scorelist
  move.l #431,d0      ;431,86
  move.l #86,d1
  bsr    playpos
  bsr    sprcls
  bsr    farbup
  move.l score1,score
  bsr    scoresort
;  cmp.l  #2,player
;  bne    ausctrl
warten4:
  cmp.b  #$45,$bfec01
  beq    ende
  tst.b  ciaapra
  bmi    warten4
  bsr    farbdown

player2:
  cmp.l  #0,man2
  beq    ausctrl
  bsr    st1
  move.l titleadr,screenadr
  bsr    screen
  move.l #431,d0      ;431,86
  move.l #280,d1
  bsr    playpos
  bsr    sprcls
  bsr    farbup
warten3:
  cmp.b  #$45,$bfec01
  beq    ende
  tst.b  ciaapra
  bmi    warten3
  bsr    farbdown
move.l man2,man
move.l level2,level
move.l score2,score  
  bsr    game
move.l man,man2
move.l level,level2
move.l score,score2  
  cmp.l  #0,man2
  bne    ausctrl
  move.l #1,player
  move.l titleadr,screenadr
  bsr    screen
  bsr    scorelist
  move.l #431,d0      ;431,86
  move.l #86,d1
  bsr    playpos
  bsr    sprcls
  bsr    farbup
  move.l score2,score
  bsr    scoresort
warten6:
  cmp.b  #$45,$bfec01
  beq    ende
  tst.b  ciaapra
  bmi    warten6
  bsr    farbdown

ausctrl:
  move.l man1,d0
  or.l   man2,d0
  cmp.l  #0,d0
  bne    gameloop

  jmp    begin
ende:
  bsr    st1
  bsr    reset
  rts

game:
  clr.l  status1
  clr.l  status2
  clr.l  status3
  clr.l  status4
  bsr    clsledder
  clr.l  todreg
  move.l #$dff000,a5
  move.w #$8020,dmacon(a5)
  bsr    datinit
  bsr    levelchange
  bsr    loadlevel
  bsr    playset
  move.l xpos,d0
  move.l ypos,d1
  bsr    playpos
bsr    sound5
  bsr    enemy1
  bsr    enemy2
  bsr    enemy3
  bsr    enemy4
  move.l sceneadr,screenadr
  bsr    screen
  bsr    invisibel
  bsr    initprint
  bsr    gmcount
  bsr    levelcount
  bsr    mancount
  bsr    goldcount
  bsr    scorecount
  bsr    farbup
  clr.l  soreg1
  clr.l  soreg2
  clr.l  soreg3
  clr.l  soreg4
  bsr    st1
  bsr    sound6
  clr.l  ficount
  clr.l  scoreold
loop:
  bsr    enemy1
  bsr    enemy2

  bsr    joy
  move.l xpos,d0
  move.l ypos,d1
  bsr    playpos

  bsr    enemy3
  bsr    enemy4
  ;bsr    goldcount
  bsr    grow
  bsr    kollision
  bsr    dauer
  bsr    sieg
  bsr    laser
  bsr    gravos
  bsr    still1
  bsr    still2
  bsr    goldsensor
  bsr    scorecount
  
  cmp.l  #0,ypos
  beq    addlevel
  cmp.b  #$75,$bfec01 ;75 spaeter aendern bitte !!!!
  beq    tod
  cmp.l  #1,todreg
  beq    tod
  jmp    loop
addlevel:
  add.l  #1,level
  move.l level,d0
  and.l  #1,d0
;  beq    umweg
  bsr    st1
  bsr    st2
  bsr    st3
  bsr    sound3
  cmp.l  #9,man
  beq    umweg
  add.l  #1,man
umweg:
  jmp    gameend
tod:
  move.l #0,d6
  move.l #0,d7
  move.l spritadr,a3
  add.l  #3328,a3
  bsr    sprpos
  bsr    st1
  bsr    st2
  bsr    st3
  bsr    sound2
  sub.l  #1,man
  bsr    deadanimat
  move.l #$efff,d7
galoop1:
  move.l #$4,d6
galoop2:
  dbra   d6,galoop2
  dbra   d7,galoop1
  bsr    st1
gameend:
  bsr    sprcls
  bsr    farbdown 
  move.l #$dff000,a5
  bsr    st1
  bsr    st2
  bsr    st3
  bsr    sprcls
  rts

;******** Unterprogramme ********
;
;
setstage:
  move.w $dff00c,d0
  btst   #1,d0
  bne    setstage3
  btst   #9,d0
  bne    setstage1
  move.w d0,d1
  lsr.w  #1,d1
  eor    d0,d1
  btst   #0,d1
  bne    setstage2
  rts
setstage1:
  move.l #1,stage
  move.l #2+27,d0
  move.l #3+27,d4
  bsr    stablset
  rts
setstage2:
  move.l #2,stage
  move.l #4+27,d0
  move.l #5+27,d4
  bsr    stablset
  rts
setstage3:
  move.l #3,stage
  move.l #6+27,d0
  move.l #7+27,d4
  bsr    stablset
  rts
;
stablset:
  move.l planeadr,a1
  add.l  #13474,a1
  bsr    blockset
  move.l d4,d0
  move.l planeadr,a1
  add.l  #14114,a1
  bsr    blockset
rts
;
delay1:
  clr.l  d7
  cmp.l  #3,stage
  beq    delayend1
  cmp.l  #1,stage
  bne    p2stage1
  add.l  #1,stacnt1
  and.l  #3,stacnt1
  bne    delayend1
  move.l #1,d7
  jmp    delayend1    
p2stage1:
  add.l  #$1,stacnt1
  and.l  #$7,stacnt1
  bne    delayend1
  move.l #1,d7
delayend1:  
rts
;
delay2:
  clr.l  d7
  cmp.l  #3,stage
  beq    delayend2
  cmp.l  #1,stage
  bne    p2stage2
  add.l  #1,stacnt2
  and.l  #3,stacnt2
  bne    delayend2
  move.l #1,d7
  jmp    delayend2    
p2stage2:
  add.l  #$1,stacnt2
  and.l  #$7,stacnt2
  bne    delayend2
  move.l #1,d7
delayend2:  
rts
;
delay3:
  clr.l  d7
  cmp.l  #3,stage
  beq    delayend3
  cmp.l  #1,stage
  bne    p2stage3
  add.l  #1,stacnt3
  and.l  #3,stacnt3
  bne    delayend3
  move.l #1,d7
  jmp    delayend3    
p2stage3:
  add.l  #$1,stacnt3
  and.l  #$7,stacnt3
  bne    delayend3
  move.l #1,d7
delayend3:  
rts
;
delay4:
  clr.l  d7
  cmp.l  #3,stage
  beq    delayend4
  cmp.l  #1,stage
  bne    p2stage4
  add.l  #1,stacnt4
  and.l  #3,stacnt4
  bne    delayend4
  move.l #1,d7
  jmp    delayend4    
p2stage4:
  add.l  #$1,stacnt4
  and.l  #$7,stacnt4
  bne    delayend4
  move.l #1,d7
delayend4:  
rts
;
passprint:
  divs   #10,d7
  move.w d7,d0
  swap   d7
  ext.l  d7
  move.w d7,d1
  sub.l  #10,d0
  sub.l  #10,d1
  move.w d0,pack  
  move.w d1,pack+2  

  move.l #$dff000,a5
  move.l titleadr,screenadr
  bsr    screen
  move.l #455,d0      ;455,86
  move.l #450,d1
  bsr    playpos
  bsr    sprcls
  move.l #0,screenx

  move.l planeadr,d5
  add.l  #439*80+58,d5
  move.l #pack,a0
  move.l #1,d7
  move.l #7,d6
  bsr    print2
  move.l planeadr,d5
  add.l  #415*80+50,d5
  move.l #passname,a0
  move.l #9,d7
  move.l #7,d6
  bsr    print2

  bsr    farbup
rts
;
;
help:
  bsr    farbdown
  move.l #$dff000,a5
  move.l titleadr,screenadr
  bsr    screen
  move.l #455,d0      ;455,86
  move.l #450,d1
  bsr    playpos
  bsr    sprcls
  move.l planeadr,d5
  add.l  #439*80+50,d5
  move.l #gamstname,a0
  move.l #8,d7
  move.l #7,d6
  bsr    print2
  bsr    farbup
helploop:
  move.l #$bfff,d7
hewaloop:
  dbra   d7,hewaloop
  move.l gamstat,d7
  divs   #100,d7
  move.w d7,d0
  swap   d7
  ext.l  d7
  divs   #10,d7
  move.w d7,d1
  swap   d7
  ext.l  d7
  move.w d7,d2
  sub.l  #10,d0
  sub.l  #10,d1
  sub.l  #10,d2
  move.w d0,nummer  
  move.w d1,nummer+2  
  move.w d2,nummer+4  

  move.l planeadr,d5
  add.l  #439*80+50,d5
  move.l #gamstname,a0
  move.l #8,d7
  move.l #7,d6
  bsr    print2

  move.w $dff00c,d0
  move.w d0,d1
  lsr.w  #1,d1
  eor.w  d0,d1
  btst   #8,d1
  bne    joyhoch
  cmp.b  #$67,$bfec01
  bne    helpdown
joyhoch:
  cmp.l  #998,gamstat
  beq    helpdown
  add.l  #1,gamstat
helpdown: 
  btst   #0,d1
  bne    joyrunter
  cmp.b  #$65,$bfec01
  bne    helpspace
joyrunter:
  cmp.l  #000,gamstat
  beq    helpspace
  sub.l  #1,gamstat
helpspace:
  tst.b  ciaapra
  bpl    joydruck
  cmp.b  #$7f,$bfec01
  bne    helploop
joydruck:
  bsr    farbdown
  move.l #$dff000,a5
  move.l titleadr,screenadr
  bsr    screen
  move.l #00,d0      ;455,86
  move.l #86,d1
  bsr    playpos
  bsr    sprcls
  move.l #0,screenx
  move.l stage,d1
  sub.l  #1,d1
  asl.l  #1,d1
  move.l #2+27,d0
  move.l #3+27,d4
  add.l  d1,d0
  add.l  d1,d4
  bsr    stablset
  bsr    farbup
rts
;
;
clsledder:
  move.l #leiter2,a0
  move.w #1,0(a0)
  move.w #2,2(a0)
  move.w #3,4(a0)
rts
;
;
sound1:
;  move.w intreqr,d0
;  btst   #7,d0
;  beq    sound1end
  move.w #$0001,ctlw
  move.l table1,aud0lc
  move.w #5859,aud0len ;859,aud0len
  move.w #40,aud0per
  move.w #48,aud0vol
  move.w #$8001,ctlw
  move.w #$0080,intreq
  move.l #47,soreg1 ;37
sound1end:
  rts

sound2:
  move.w #$0001,ctlw
  move.l table2,aud0lc
  move.w #10239,aud0len
  move.w #400,aud0per
  move.w #64,aud0vol
  move.w #$8001,ctlw
;  move.w #$0080,intreq
  rts

sound3:
  move.w intreqr,d0
  btst   #7,d0
  beq    sound3
  move.w #$0001,ctlw
  move.l table3,aud0lc
  move.w #8192,aud0len ;16000
  move.w #200,aud0per
  move.w #64,aud0vol
  move.w #$8001,ctlw
;  move.w #$0080,intreq
  rts

sound4:
;  move.w intreqr,d0
;  btst   #7,d0
;  beq    sound1end
  move.w #$0002,ctlw
  move.l table4,aud1lc
  move.w #762,aud1len ;859,aud0len
  move.w #600,aud1per
  move.w #48,aud1vol
  move.w #$8002,ctlw
  move.w #$0100,intreq
  move.l #25,soreg2 ;37
sound4end:
  rts

sound5:
;  move.w intreqr,d0
;  btst   #7,d0
;  beq    sound5
  move.w #$0001,ctlw
  move.l table5,aud0lc
  move.w #9500,aud0len
  move.w #375,aud0per
  move.w #32,aud0vol
  move.w #$8001,ctlw
;  move.w #$0080,intreq
  rts

sound6:
  cmp.l  #1,soreg3
  beq    sound6end
  move.w #$0004,ctlw
  move.l table6,aud2lc
  move.w #800,aud2len
  move.w #800,aud2per
  move.w #20,aud2vol
  move.w #$8004,ctlw
  move.l #1,soreg3 
sound6end:
  rts

still1:
  cmp.l  #0,soreg1
  beq    st1
  sub.l  #1,soreg1
  cmp.l  #0,soreg1
  bne    st1end
waitst1:
  move.w intreqr,d0
  btst   #7,d0
  beq    waitst1
st1:
  move   #$1,ctlw
st1end:
  rts
;
;
still2:
  cmp.l  #0,soreg2
  beq    st2
  sub.l  #1,soreg2
  cmp.l  #0,soreg2
  bne    st2end
waitst2:
  move.w intreqr,d0
  btst   #8,d0
  beq    waitst2
st2:
  move   #$2,ctlw
st2end:
  rts
;
;
still3:
  cmp.l  #0,soreg3
  beq    st3
  sub.l  #1,soreg3
  cmp.l  #0,soreg3
  bne    st3end
waitst3:
  move.w intreqr,d0
  btst   #8,d0
  beq    waitst3
st3:
  move   #$4,ctlw
  clr.l  soreg3
st3end:
  rts
;
;
scorecls:
  move.l #scoretab,a0
  move.l #58,d7
clsloop:
  move.l #0,(a0)+
  dbra   d7,clsloop
rts
;
;
sprcls:
  move.l spritadr,a0
  move.l #42,d7
sclsloop1:
  move.l #0000,(a0)
  add.l  #104,a0
  dbra   d7,sclsloop1

  move.l spritadr,a0
  add.l  #enconst1,a0
  move.l #24,d7
sclsloop2:
  move.l #0000,(a0)
  add.l  #104,a0
  dbra   d7,sclsloop2

  move.l spritadr,a0
  add.l  #enconst2,a0
  move.l #24,d7
sclsloop3:
  move.l #0000,(a0)
  add.l  #104,a0
  dbra   d7,sclsloop3

  move.l spritadr,a0
  add.l  #enconst3,a0
  move.l #24,d7
sclsloop4:
  move.l #0000,(a0)
  add.l  #104,a0
  dbra   d7,sclsloop4

  move.l spritadr,a0
  add.l  #enconst4,a0
  move.l #24,d7
sclsloop5:
  move.l #0000,(a0)
  add.l  #104,a0
  dbra   d7,sclsloop5
  rts
;
;
deadanimat:
  move.l #0,d5
deadloop:
  move.l posx,d6
  move.l posy,d7
  move.l spritadr,a3
  add.l  #3432,a3
  add.l  d5,a3
  sub.l  #16,d6
  bsr    sprpos
  move.l #0,d0
  move.l spritadr,d1
  add.l  #3432,d1
  add.l  d5,d1
  move.l cladr,a0
  bsr    sprchange

  move.l #$4fff,d7
deloop1:
  move.l #$1,d6
deloop2:
  dbra   d6,deloop2
  dbra   d7,deloop1

  add.l  #104,d5
  cmp.l  #1040,d5
  bne    deadloop
rts
;
;
kollision:
  move.l xpos,d0
  move.l ypos,d1
  move.l guardx1,d2
  move.l guardy1,d3
  bsr    dead
  move.l xpos,d0
  move.l ypos,d1
  move.l guardx2,d2
  move.l guardy2,d3
  bsr    dead
  move.l xpos,d0
  move.l ypos,d1
  move.l guardx3,d2
  move.l guardy3,d3
  bsr    dead
  move.l xpos,d0
  move.l ypos,d1
  move.l guardx4,d2
  move.l guardy4,d3
  bsr    dead
  
  move.l xpos,d0
  move.l ypos,d1
  bsr    incatch
rts  

incatch:
  add.l  #8,d0
  clr.l  d7
  move.l sceneadr,a0
  asr.l  #3,d0
  and.l  #$fffffffe,d0
  asr.l  #3,d1
  muls   #80,d1
  add.l  d0,d1
  add.l  d1,a0
  move.w 162(a0),d2
  cmp.w  #10,d2
  beq    settod
  cmp.w  #11,d2
  beq    settod
  move.w 82(a0),d2
  cmp.w  #10,d2
  beq    settod
  cmp.w  #11,d2
  beq    settod
  rts
settod:
  move.l #1,todreg 
  rts


dead:
  sub.l  #$90,d2
  sub.l  #$28,d3
  sub.l  #1,d2
  sub.l  d2,d0
  bpl    positiv
  neg.l  d0
positiv:
  cmp.l  #7,d0
;  and.l  #$fffffff8,d0
;  and.l  #$fffffff8,d2
  bhi    notod
  and.l  #$fffffff0,d1
  and.l  #$fffffff0,d3
  cmp.l  d1,d3
  bne    notod
  move.l #1,todreg
notod:
  rts
;
;
scoresort:
  move.l #scoretab,a0
  move.l #savescore,a1
  move.l #47,d7
sc1loop:
  move.l (a0),(a1)
  add.l  #4,a0
  add.l  #4,a1
  dbra   d7,sc1loop
  
  clr.l  d7
  move.l #savescore,a0
  move.l #scoretab,a1
sc2loop:
  move.l (a0),d0
  cmp.l  score,d0
  blo    gefunden
  move.l 00(a0),00(a1)
  move.l 04(a0),04(a1)
  move.l 08(a0),08(a1)
  move.l 12(a0),12(a1)
  move.l 16(a0),16(a1)
  move.l 20(a0),20(a1)
  add.l  #24,a1
  add.l  #24,a0
  add.l  #1,d7
  cmp.l  #8,d7
  bne    sc2loop
  bsr    scorelist
  rts
gefunden:
  move.l d7,d3
  move.l score,(a1)     
  add.l  #24,a1
gefloop:
  move.l 00(a0),00(a1)
  move.l 04(a0),04(a1)
  move.l 08(a0),08(a1)
  move.l 12(a0),12(a1)
  move.l 16(a0),16(a1)
  move.l 20(a0),20(a1)
  add.l  #24,a1
  add.l  #24,a0
  add.l  #1,d7
  cmp.l  #8,d7
  bne    gefloop

  bsr    eingabe
  bsr    st1
  bsr    st2
  bsr    scoresave
rts
;
;
eingabe:
  move.l #scoretab+4,a0
  move.l d3,d0
  muls   #24,d0
  add.l  d0,a0
  move.w #-26,00(a0)
  move.w #-26,02(a0)
  move.w #-26,04(a0)
  move.w #-26,06(a0)
  move.w #-26,08(a0)
  move.w #-26,10(a0)
  move.w #-26,12(a0)
  move.w #-26,14(a0)
  move.w #-26,16(a0)
  move.w #-26,18(a0)
 movem.l d0-d7/a0-a6,-(sp)
  bsr    scorelist
 movem.l (sp)+,d0-d7/a0-a6
  clr.l  d7
egloop:
  cmp.b  #$77,$bfec01
  beq    eingabend

  cmp.b  #$7d,$bfec01
  bne    normtast
  cmp.l  #0,d7
  beq    notdown
  sub.l  #2,d7
  move.w #-26,(a0,d7)
notdown:
 movem.l d0-d7/a0-a6,-(sp)
  bsr    scorelist
 movem.l (sp)+,d0-d7/a0-a6
  move.l #$ffff,d2
wtloop1:
  dbra   d2,wtloop1
  jmp    egloop
normtast:
  cmp.l  #18,d7
  beq    egloop

  move.l #tasten,a1
  move.l #27,d5
tastloop:
  move.l 00(a1),d0
  move.b $bfec01,d1
  cmp.b  d0,d1
  beq    printing
  add.l  #8,a1
  dbra   d5,tastloop
  jmp    egloop
printing:
  move.w 06(a1),(a0,d7)
  add.l  #2,d7
movem.l  d0-d7/a0-a6,-(sp)
  bsr    scorelist
movem.l  (sp)+,d0-d7/a0-a6
  move.l #$ffff,d2
wtloop2:
  dbra   d2,wtloop2
  jmp    egloop
eingabend:
  move.l #$ffff,d7
waloop:
  dbra   d7,waloop
  rts
;
;
scorelist:
  move.l #scoretab,a0
  move.l #7,d7
  clr.l  d6
scloop:
 movem.l d0-d7/a0,-(sp)
  move.l (a0),d7
  move.l #55*80+40,admem
  add.l  d6,admem
  bsr    hiscorecount
 movem.l (sp)+,d0-d7/a0
  add.l  #24,a0
  add.l  #1280,d6
  dbra   d7,scloop

  move.l planeadr,d5
  add.l  #55*80+56,d5
;  add.l  d6,d5
  move.l #scoretab+4,a0
  move.l #8,d7
  move.l #7,d6
nameloop:
movem.l  d0-d7/a0-a6,-(sp)
  bsr    print2
movem.l  (sp)+,d0-d7/a0-a6
  add.l  #1280,d5 
  add.l  #24,a0
  dbra   d6,nameloop  
rts
;
scoretab:  blk.l 60,0;
;
savescore: blk.l 60,0;
;
levelchange:
  move.l level,d7
  divs   #100,d7
  move.w d7,d0
  ext.l  d0
  swap   d7
  ext.l  d7
  divs   #10,d7
  move.w d7,d1
  ext.l  d1
  swap   d7
  ext.l  d7
  move.l d7,d2
  add.l  #48,d0
  add.l  #48,d1
  add.l  #48,d2
  move.b d0,scenename+5
  move.b d1,scenename+6
  move.b d2,scenename+7
  move.b #0,scenename+8
rts
;
;
farbdown:
  move.l scrx,d3
  move.l scry,d4
  bsr    scrpos
  move.l #$f,d7
outdoloop:
  move.l #coloradr,a0
  move.l #$dff000,a5
  move.l #31,d6
indoloop:
  move.l 0(a0),d0
  move.l 4(a0),d1
  move.l 8(a0),d2
  asl    #4,d0
  divs   #15,d0
  ext.l  d0
  muls   d7,d0
  asr.l  #4,d0
  asl    #4,d1
  divs   #15,d1
  ext.l  d1
  muls   d7,d1
  asr.l  #4,d1
  asl    #4,d2
  divs   #15,d2
  ext.l  d2
  muls   d7,d2
  asr.l  #4,d2

  asl.l  #8,d0
  asl.l  #4,d1
  or.l   d2,d1
  or.l   d1,d0
  move.w d0,color00(a5)
  add.l  #12,a0
  add.l  #2,a5
  dbra   d6,indoloop
  move.l #$8fff,d5
zoegerdo:
  dbra   d5,zoegerdo
  dbra   d7,outdoloop
rts
;
;
farbup:
  move.l scrx,d3
  move.l scry,d4
  bsr    scrpos
  move.l #00,d7
outuploop:
  move.l #coloradr,a0
  move.l #$dff000,a5
  move.l #31,d6
inuploop:
  move.l 0(a0),d0
  move.l 4(a0),d1
  move.l 8(a0),d2
  asl    #4,d0
  divs   #15,d0
  ext.l  d0
  muls   d7,d0
  asr.l  #4,d0
  asl    #4,d1
  divs   #15,d1
  ext.l  d1
  muls   d7,d1
  asr.l  #4,d1
  asl    #4,d2
  divs   #15,d2
  ext.l  d2
  muls   d7,d2
  asr.l  #4,d2

  asl.l  #8,d0
  asl.l  #4,d1
  or.l   d2,d1
  or.l   d1,d0
  move.w d0,color00(a5)
  add.l  #12,a0
  add.l  #2,a5
  dbra   d6,inuploop
  move.l #$8fff,d5
zoegerup:
  dbra   d5,zoegerup
  add.l  #1,d7
  cmp.l  #16,d7
  bne    outuploop
rts
;
;
;*** Goldklumpen zaehlen ***

gmcount:
  move.l sceneadr,a0
  move.l #3080,d7
  clr.l  d0
gmloop:
  cmp.w  #9,(a0)+
  bne    nogold
  add.l  #1,d0
nogold:
  dbra   d7,gmloop
  move.l d0,goldmax
  rts
;
;
;*** Player setzen ***

playset:
  move.l sceneadr,a0
  move.l #3080,d7
  clr.l  d0
  clr.l  d1
sploop:
  cmp.w  #101,(a0)
  beq    setitpl
  add.l  #2,a0
  dbra   d7,sploop
  clr.l  xpos
  clr.l  ypos
  rts
setitpl:
  move.w #0,(a0)
  sub.l  sceneadr,a0
  move.l a0,d7
  divs   #80,d7
  move.w d7,d1
  ext.l  d1
  swap   d7
  move.w d7,d0
  ext.l  d0
  asl.l  #3,d1
  asl.l  #3,d0
  and.l  #$fffffffe,d0
  sub.l  #24,d1
  sub.l  #16,d0
  move.l d0,xpos
  move.l d1,ypos

  move.l sceneadr,a0
  move.l #3080,d7
  clr.l  d0
  clr.l  d1
stloop:
  cmp.w  #103,(a0)
  beq    setittod
  add.l  #2,a0
  dbra   d7,stloop
  move.l #16,entodx
  move.l #16,entody
  rts
setittod:
  move.w #0,(a0)
  sub.l  sceneadr,a0
  move.l a0,d7
  divs   #80,d7
  move.w d7,d1
  ext.l  d1
  swap   d7
  move.w d7,d0
  ext.l  d0
  asl.l  #3,d1
  asl.l  #3,d0
  and.l  #$fffffffe,d0
  add.l  #16,d1
  add.l  #128,d0
  move.l d0,entodx
  move.l d1,entody

  move.l sceneadr,a0
  move.l #3080,d7
  clr.l  d0
  clr.l  d1
e1loop:
  cmp.w  #102,(a0)
  beq    setite1
  add.l  #2,a0
  dbra   d7,e1loop
  move.l #16,guardx1
  move.l #16,guardy1
  clr.l  status1
  rts
setite1:
  move.w #0,(a0)
  sub.l  sceneadr,a0
  move.l a0,d7
  divs   #80,d7
  move.w d7,d1
  ext.l  d1
  swap   d7
  move.w d7,d0
  ext.l  d0
  asl.l  #3,d1
  asl.l  #3,d0
  and.l  #$fffffffe,d0
  add.l  #16,d1
  add.l  #128,d0
  move.l d0,guardx1
  move.l d1,guardy1
  move.l #1,status1

  move.l sceneadr,a0
  move.l #3080,d7
  clr.l  d0
e2loop:
  cmp.w  #102,(a0)
  beq    setite2
  add.l  #2,a0
  add.l  #1,d0
  dbra   d7,e2loop
  move.l #16,guardx2
  move.l #16,guardy2
  clr.l  status2
  rts
setite2:
  move.w #0,(a0)
  sub.l  sceneadr,a0
  move.l a0,d7
  divs   #80,d7
  move.w d7,d1
  ext.l  d1
  swap   d7
  move.w d7,d0
  ext.l  d0
  asl.l  #3,d1
  asl.l  #3,d0
  and.l  #$fffffffe,d0
  add.l  #16,d1
  add.l  #128,d0
  move.l d0,guardx2
  move.l d1,guardy2
  move.l #1,status2

  move.l sceneadr,a0
  move.l #3080,d7
  clr.l  d0
e3loop:
  cmp.w  #102,(a0)
  beq    setite3
  add.l  #2,a0
  add.l  #1,d0
  dbra   d7,e3loop
  move.l #16,guardx3
  move.l #16,guardy3
  clr.l  status3
  rts
setite3:
  move.w #0,(a0)
  sub.l  sceneadr,a0
  move.l a0,d7
  divs   #80,d7
  move.w d7,d1
  ext.l  d1
  swap   d7
  move.w d7,d0
  ext.l  d0
  asl.l  #3,d1
  asl.l  #3,d0
  and.l  #$fffffffe,d0
  add.l  #16,d1
  add.l  #128,d0
  move.l d0,guardx3
  move.l d1,guardy3
  move.l #1,status3

  move.l sceneadr,a0
  move.l #3080,d7
  clr.l  d0
e4loop:
  cmp.w  #102,(a0)
  beq    setite4
  add.l  #2,a0
  add.l  #1,d0
  dbra   d7,e4loop
  move.l #16,guardx4
  move.l #16,guardy4
  clr.l  status4
  rts
setite4:
  move.w #0,(a0)
  sub.l  sceneadr,a0
  move.l a0,d7
  divs   #80,d7
  move.w d7,d1
  ext.l  d1
  swap   d7
  move.w d7,d0
  ext.l  d0
  asl.l  #3,d1
  asl.l  #3,d0
  and.l  #$fffffffe,d0
  add.l  #16,d1
  add.l  #128,d0
  move.l d0,guardx4
  move.l d1,guardy4
  move.l #1,status4
rts
;
;
;*** Opponent ***

enemy1:                 ;*
  bsr    delay1
  cmp.l  #1,d7
  beq    showguard1

  cmp.l  #1,status1
  bne    showguard1
  add.l  #1,gcogra1    
  and.l  #$f,gcogra1
  bne    pull1          ;*
  add.l  #104,grabbel1
  cmp.l  #416,grabbel1
  bne    pull1          ;*
  clr.l  grabbel1
pull1:                  ;*
  move.l gturnx1,d0
  move.l gturny1,d1
  add.l  d0,guardx1
  add.l  d1,guardy1
  sub.l  #1,gcount1
  bne    intend1        ;*

  cmp.l  #1,gtrans1
  beq    gravitation1   ;*
  move.l guardx1,d0
  move.l guardy1,d1
  bsr    getgold
  cmp.l  #1,d7
  bne    gravitation1   ;*
  move.l #1,gtrans1
gravitation1:           ;*
  clr.l  gturnx1
  clr.l  gturny1
  move.l #cy,gcount1
  move.l guardx1,d0
  move.l guardy1,d1
  bsr    entod
  move.l d0,guardx1 
  move.l d1,guardy1

  cmp.l  #0,gstop1 
  beq    gesund1        ;*
  sub.l  #1,gstop1 
  cmp.l  #2,gstop1 
  bne    g1test2        ;*
  move.l guardx1,d0
  move.l guardy1,d1
  bsr    upsensor
  cmp.l  #1,d7
  beq    g1test2        ;*
  move.l #-1,gturny1 
  move.l #cy,gcount1
g1test2:                ;*
  cmp.l  #01,gstop1 
  bne    g1test3        ;*
  move.l guardx1,d0
  move.l guardy1,d1
  bsr    upsensor
  cmp.l  #1,d7
  beq    g1test3        ;*
  move.l #-1,gturny1 
  move.l #cy,gcount1
g1test3:                ;*
  cmp.l  #00,gstop1 
  bne    intend1        ;*
  clr.l  gstop1 
  jmp    vertical1      ;*
gesund1:                ;*
move.l guardy1,d0
move.l guardy2,d1
move.l guardx2,d2
move.l guardx1,d3
bsr    doguard
cmp.l  #1,d7
beq    walk1

move.l guardy1,d0
move.l guardy3,d1
move.l guardx3,d2
move.l guardx1,d3
bsr    doguard
cmp.l  #1,d7
beq    walk1

move.l guardy1,d0
move.l guardy4,d1
move.l guardx4,d2
move.l guardx1,d3
bsr    doguard
cmp.l  #1,d7
beq    walk1
  move.l guardx1,d0
  move.l guardy1,d1
  bsr    engravos
  move.l d0,gturny1 
  move.l d1,gcount1
  cmp.l  #0,d7
  bne    walk1          ;* 
  move.l guardx1,d0
  move.l guardy1,d1
  move.l gtrans1,d3
  bsr    laehmung
  move.l d3,gtrans1
  move.l d2,gstop1 
  jmp    intend1        ;*
walk1:
 
  move.l xpos,d0
  move.l guardx1,d1
  add.l  #144,d0
  and.l  #$fffffff0,d0
  and.l  #$fffffff0,d0
  cmp.l  d0,d1
  beq    vertical1      ;*
  move.l ypos,d1
  add.l  #40,d1
  move.l guardy1,d0
  cmp.l  d0,d1
  beq    vertical1      ;*
  bhi    vertical1      ;*

  move.l guardx1,d0
  move.l guardy1,d1
  bsr    searchl
  cmp.l  #2,d7
  beq    vertical1      ;*
  cmp.l  #1,d7
  beq    find1          ;*
  move.l #-1,d4
find1:                  ;*
  move.l d4,d3
  move.l guardx1,d0
  move.l guardy1,d1
  bsr    searchr
  cmp.l  #2,d7
  beq    vertical1      ;*
  cmp.l  #1,d7
  beq    compare1       ;*
  cmp.l  #-1,d3
  beq    vertical1      ;*
  move.l #-1,d4
compare1:               ;*
  cmp.l  d3,d4
  beq    vertical1      ;*
  bpl    right1         ;*

left1:                  ;*
  move.l guardx1,d0
  move.l guardy1,d1
  bsr    enleft
  cmp.l  #1,d7
  beq    vertical1      ;*
move.l guardx1,d0
move.l guardx2,d1
move.l guardy2,d2
move.l guardy1,d3
bsr    leguard
cmp.l  #1,d7
beq    vertical1

move.l guardx1,d0
move.l guardx3,d1
move.l guardy3,d2
move.l guardy1,d3
bsr    leguard
cmp.l  #1,d7
beq    vertical1

move.l guardx1,d0
move.l guardx4,d1
move.l guardy4,d2
move.l guardy1,d3
bsr    leguard
cmp.l  #1,d7
beq    vertical1
  move.l #-1,gturnx1
  move.l #cx,gcount1
  jmp    intend1        ;*
right1:                 ;*
  move.l guardx1,d0
  move.l guardy1,d1
  bsr    enright
  cmp.l  #1,d7
  beq    vertical1      ;*
move.l guardx1,d0
move.l guardx2,d1
move.l guardy2,d2
move.l guardy1,d3
bsr    riguard
cmp.l  #1,d7
beq    vertical1

move.l guardx1,d0
move.l guardx3,d1
move.l guardy3,d2
move.l guardy1,d3
bsr    riguard
cmp.l  #1,d7
beq    vertical1

move.l guardx1,d0
move.l guardx4,d1
move.l guardy4,d2
move.l guardy1,d3
bsr    riguard
cmp.l  #1,d7
beq    vertical1
  move.l #1,gturnx1 
  move.l #cx,gcount1
  jmp    intend1        ;*  

vertical1:              ;*
  move.l guardy1,d0
  move.l ypos,d1
  add.l  #44,d1
  and.l  #$fffffff8,d1
  cmp.l  d1,d0
  beq    horizont1      ;*
  blo    kleinery1      ;*
  move.l guardx1,d0
  move.l guardy1,d1
  bsr    enup
  cmp.l  #1,d7
  bne    horizont1      ;*
move.l guardy1,d0
move.l guardy2,d1
move.l guardx2,d2
move.l guardx1,d3
bsr    upguard
cmp.l  #1,d7
beq    intend1

move.l guardy1,d0
move.l guardy3,d1
move.l guardx3,d2
move.l guardx1,d3
bsr    upguard
cmp.l  #1,d7
beq    intend1

move.l guardy1,d0
move.l guardy4,d1
move.l guardx4,d2
move.l guardx1,d3
bsr    upguard
cmp.l  #1,d7
beq    intend1
  move.l #-1,gturny1 
  move.l #cy,gcount1
  jmp    intend1        ;*
kleinery1:              ;*
  move.l guardx1,d0
  move.l guardy1,d1
  bsr    endown
  cmp.l  #1,d7
  bne    horizont1      ;*
move.l guardy1,d0
move.l guardy2,d1
move.l guardx2,d2
move.l guardx1,d3
bsr    doguard
cmp.l  #1,d7
beq    intend1

move.l guardy1,d0
move.l guardy3,d1
move.l guardx3,d2
move.l guardx1,d3
bsr    doguard
cmp.l  #1,d7
beq    intend1

move.l guardy1,d0
move.l guardy4,d1
move.l guardx4,d2
move.l guardx1,d3
bsr    doguard
cmp.l  #1,d7
beq    intend1
  move.l #1,gturny1 
  move.l #cy,gcount1
  jmp    intend1        ;*

horizont1:              ;*
  move.l guardx1,d0
  move.l xpos,d1
  add.l  #152,d1
  and.l  #$fffffff0,d1
  cmp.l  d1,d0
  beq    intend1        ;*
  blo    kleinerx1      ;*
  move.l guardx1,d0
  move.l guardy1,d1
  bsr    enleft
  cmp.l  #1,d7
  beq    intend1        ;*
move.l guardx1,d0
move.l guardx2,d1
move.l guardy2,d2
move.l guardy1,d3
bsr    leguard
cmp.l  #1,d7
beq    intend1

move.l guardx1,d0
move.l guardx3,d1
move.l guardy3,d2
move.l guardy1,d3
bsr    leguard
cmp.l  #1,d7
beq    intend1

move.l guardx1,d0
move.l guardx4,d1
move.l guardy4,d2
move.l guardy1,d3
bsr    leguard
cmp.l  #1,d7
beq    intend1
  move.l #-1,gturnx1 
  move.l #cx,gcount1
  jmp    intend1        ;*
kleinerx1:              ;*
  move.l guardx1,d0
  move.l guardy1,d1
  bsr    enright
  cmp.l  #1,d7
  beq    intend1        ;*
move.l guardx1,d0
move.l guardx2,d1
move.l guardy2,d2
move.l guardy1,d3
bsr    riguard
cmp.l  #1,d7
beq    intend1

move.l guardx1,d0
move.l guardx3,d1
move.l guardy3,d2
move.l guardy1,d3
bsr    riguard
cmp.l  #1,d7
beq    intend1

move.l guardx1,d0
move.l guardx4,d1
move.l guardy4,d2
move.l guardy1,d3
bsr    riguard
cmp.l  #1,d7
beq    intend1
  move.l #1,gturnx1 
  move.l #cx,gcount1
intend1:                ;*
  cmp.l  #1,gturnx1
  bne    xlanim1        ;*
  move.l #00,ganimat1
  move.l guardx1,d0
  move.l guardy1,d1
  bsr    stangetest
  cmp.l  #1,d7
  bne    showguard1     ;*
  move.l #1664,ganimat1
  jmp    showguard1     ;*
xlanim1:                ;*
  cmp.l  #-1,gturnx1
  bne    yranim1        ;*
  move.l #416,ganimat1
  move.l guardx1,d0
  move.l guardy1,d1
  bsr    stangetest
  cmp.l  #1,d7
  bne    showguard1     ;*
  move.l #2080,ganimat1
  jmp    showguard1     ;*
yranim1:                ;*
  cmp.l  #1,gturny1      
  bne    ylanim1        ;*
  move.l #1248,ganimat1
  jmp    showguard1     ;*
ylanim1:                ;*
  cmp.l  #-1,gturny1
  bne    nothing1       ;*
  move.l #832,ganimat1
  jmp    showguard1     ;*
nothing1:               ;*
;  clr.l  ganimat1
  clr.l  grabbel1
showguard1:             ;*
  move.l guardx1,d6
  move.l guardy1,d7
  sub.l  scrx,d6
  sub.l  scry,d7
  move.l spritadr,a3
  add.l  #enconst1,a3
  add.l  ganimat1,a3
  add.l  grabbel1,a3
  bsr    sprpos

  move.l #2,d0
  move.l spritadr,d1
  add.l  #enconst1,d1
  add.l  ganimat1,d1
  add.l  grabbel1,d1
  move.l cladr,a0
  bsr    sprchange
rts
;
;
enemy2:                 ;*
  bsr    delay2
  cmp.l  #1,d7
  beq    showguard2

  cmp.l  #1,status2
  bne    showguard2
  add.l  #1,gcogra2    
  and.l  #$f,gcogra2
  bne    pull2          ;*
  add.l  #104,grabbel2
  cmp.l  #416,grabbel2
  bne    pull2          ;*
  clr.l  grabbel2
pull2:                  ;*
  move.l gturnx2,d0
  move.l gturny2,d1
  add.l  d0,guardx2
  add.l  d1,guardy2
  sub.l  #1,gcount2
  bne    intend2        ;*

  cmp.l  #1,gtrans2
  beq    gravitation2   ;*
  move.l guardx2,d0
  move.l guardy2,d1
  bsr    getgold
  cmp.l  #1,d7
  bne    gravitation2   ;*
  move.l #1,gtrans2
gravitation2:           ;*
  clr.l  gturnx2
  clr.l  gturny2
  move.l #cy,gcount2
  move.l guardx2,d0
  move.l guardy2,d1
  bsr    entod
  move.l d0,guardx2 
  move.l d1,guardy2 

  cmp.l  #0,gstop2 
  beq    gesund2        ;*
  sub.l  #1,gstop2 
  cmp.l  #2,gstop2 
  bne    g2test2        ;*
  move.l guardx2,d0
  move.l guardy2,d1
  bsr    upsensor
  cmp.l  #1,d7
  beq    g2test2        ;*
  move.l #-1,gturny2 
  move.l #cy,gcount2
g2test2:                ;*
  cmp.l  #01,gstop2 
  bne    g2test3        ;*
  move.l guardx2,d0
  move.l guardy2,d1
  bsr    upsensor
  cmp.l  #1,d7
  beq    g2test3        ;*
  move.l #-1,gturny2 
  move.l #cy,gcount2
g2test3:                ;*
  cmp.l  #00,gstop2 
  bne    intend2        ;*
  clr.l  gstop2 
  jmp    vertical2      ;*
gesund2:                ;*
move.l guardy2,d0
move.l guardy1,d1
move.l guardx2,d2
move.l guardx1,d3
bsr    doguard
cmp.l  #1,d7
beq    walk2
move.l guardy2,d0
move.l guardy3,d1
move.l guardx2,d2
move.l guardx3,d3
bsr    doguard
cmp.l  #1,d7
beq    walk2
move.l guardy2,d0
move.l guardy4,d1
move.l guardx2,d2
move.l guardx4,d3
bsr    doguard
cmp.l  #1,d7
beq    walk2

  move.l guardx2,d0
  move.l guardy2,d1
  bsr    engravos
  move.l d0,gturny2 
  move.l d1,gcount2
  cmp.l  #0,d7
  bne    walk2          ;* 
  move.l guardx2,d0
  move.l guardy2,d1
  move.l gtrans2,d3
  bsr    laehmung
  move.l d3,gtrans2
  move.l d2,gstop2 
  jmp    intend2        ;*
walk2:
 
  move.l xpos,d0
  move.l guardx2,d1
  add.l  #144,d0
  and.l  #$fffffff0,d0
  and.l  #$fffffff0,d0
  cmp.l  d0,d1
  beq    vertical2      ;*
  move.l ypos,d1
  add.l  #40,d1
  move.l guardy2,d0
  cmp.l  d0,d1
  beq    vertical2      ;*
  bhi    vertical2      ;*

  move.l guardx2,d0
  move.l guardy2,d1
  bsr    searchl
  cmp.l  #2,d7
  beq    vertical2      ;*
  cmp.l  #1,d7
  beq    find2          ;*
  move.l #-1,d4
find2:                  ;*
  move.l d4,d3
  move.l guardx2,d0
  move.l guardy2,d1
  bsr    searchr
  cmp.l  #2,d7
  beq    vertical2      ;*
  cmp.l  #1,d7
  beq    compare2       ;*
  cmp.l  #-1,d3
  beq    vertical2      ;*
  move.l #-1,d4
compare2:               ;*
  cmp.l  d3,d4
  beq    vertical2      ;*
  bpl    right2         ;*

left2:                  ;*
  move.l guardx2,d0
  move.l guardy2,d1
  bsr    enleft
  cmp.l  #1,d7
  beq    vertical2      ;*
move.l guardx2,d0
move.l guardx1,d1
move.l guardy2,d2
move.l guardy1,d3
bsr    leguard
cmp.l  #1,d7
beq    vertical2

move.l guardx2,d0
move.l guardx3,d1
move.l guardy2,d2
move.l guardy3,d3
bsr    leguard
cmp.l  #1,d7
beq    vertical2

move.l guardx2,d0
move.l guardx4,d1
move.l guardy2,d2
move.l guardy4,d3
bsr    leguard
cmp.l  #1,d7
beq    vertical2
  move.l #-1,gturnx2
  move.l #cx,gcount2
  jmp    intend2        ;*
right2:                 ;*
  move.l guardx2,d0
  move.l guardy2,d1
  bsr    enright
  cmp.l  #1,d7
  beq    vertical2      ;*
move.l guardx2,d0
move.l guardx1,d1
move.l guardy2,d2
move.l guardy1,d3
bsr    riguard
cmp.l  #1,d7
beq    vertical2

move.l guardx2,d0
move.l guardx3,d1
move.l guardy2,d2
move.l guardy3,d3
bsr    riguard
cmp.l  #1,d7
beq    vertical2

move.l guardx2,d0
move.l guardx4,d1
move.l guardy2,d2
move.l guardy4,d3
bsr    riguard
cmp.l  #1,d7
beq    vertical2
  move.l #1,gturnx2 
  move.l #cx,gcount2
  jmp    intend2        ;*  

vertical2:              ;*
  move.l guardy2,d0
  move.l ypos,d1
  add.l  #44,d1
  and.l  #$fffffff8,d1
  cmp.l  d1,d0
  beq    horizont2      ;*
  blo    kleinery2      ;*
  move.l guardx2,d0
  move.l guardy2,d1
  bsr    enup
  cmp.l  #1,d7
  bne    horizont2      ;*
move.l guardy2,d0
move.l guardy1,d1
move.l guardx2,d2
move.l guardx1,d3
bsr    upguard
cmp.l  #1,d7
beq    intend2

move.l guardy2,d0
move.l guardy3,d1
move.l guardx2,d2
move.l guardx3,d3
bsr    upguard
cmp.l  #1,d7
beq    intend2

move.l guardy2,d0
move.l guardy4,d1
move.l guardx2,d2
move.l guardx4,d3
bsr    upguard
cmp.l  #1,d7
beq    intend2
  move.l #-1,gturny2 
  move.l #cy,gcount2
  jmp    intend2        ;*
kleinery2:              ;*
  move.l guardx2,d0
  move.l guardy2,d1
  bsr    endown
  cmp.l  #1,d7
  bne    horizont2      ;*
move.l guardy2,d0
move.l guardy1,d1
move.l guardx2,d2
move.l guardx1,d3
bsr    doguard
cmp.l  #1,d7
beq    intend2

move.l guardy2,d0
move.l guardy3,d1
move.l guardx2,d2
move.l guardx3,d3
bsr    doguard
cmp.l  #1,d7
beq    intend2

move.l guardy2,d0
move.l guardy4,d1
move.l guardx2,d2
move.l guardx4,d3
bsr    doguard
cmp.l  #1,d7
beq    intend2
  move.l #1,gturny2 
  move.l #cy,gcount2
  jmp    intend2        ;*

horizont2:              ;*
  move.l guardx2,d0
  move.l xpos,d1
  add.l  #152,d1
  and.l  #$fffffff0,d1
  cmp.l  d1,d0
  beq    intend2        ;*
  blo    kleinerx2      ;*
  move.l guardx2,d0
  move.l guardy2,d1
  bsr    enleft
  cmp.l  #1,d7
  beq    intend2        ;*
move.l guardx2,d0
move.l guardx1,d1
move.l guardy2,d2
move.l guardy1,d3
bsr    leguard
cmp.l  #1,d7
beq    intend2

move.l guardx2,d0
move.l guardx3,d1
move.l guardy2,d2
move.l guardy3,d3
bsr    leguard
cmp.l  #1,d7
beq    intend2

move.l guardx2,d0
move.l guardx4,d1
move.l guardy2,d2
move.l guardy4,d3
bsr    leguard
cmp.l  #1,d7
beq    intend2
  move.l #-1,gturnx2 
  move.l #cx,gcount2
  jmp    intend2        ;*
kleinerx2:              ;*
  move.l guardx2,d0
  move.l guardy2,d1
  bsr    enright
  cmp.l  #1,d7
  beq    intend2        ;*
move.l guardx2,d0
move.l guardx1,d1
move.l guardy2,d2
move.l guardy1,d3
bsr    riguard
cmp.l  #1,d7
beq    intend2

move.l guardx2,d0
move.l guardx3,d1
move.l guardy2,d2
move.l guardy3,d3
bsr    riguard
cmp.l  #1,d7
beq    intend2

move.l guardx2,d0
move.l guardx4,d1
move.l guardy2,d2
move.l guardy4,d3
bsr    riguard
cmp.l  #1,d7
beq    intend2
  move.l #1,gturnx2 
  move.l #cx,gcount2
intend2:                ;*
  cmp.l  #1,gturnx2
  bne    xlanim2        ;*
  move.l #00,ganimat2
  move.l guardx2,d0
  move.l guardy2,d1
  bsr    stangetest
  cmp.l  #1,d7
  bne    showguard2     ;*
  move.l #1664,ganimat2
  jmp    showguard2     ;*
xlanim2:                ;*
  cmp.l  #-1,gturnx2
  bne    yranim2        ;*
  move.l #416,ganimat2
  move.l guardx2,d0
  move.l guardy2,d1
  bsr    stangetest
  cmp.l  #1,d7
  bne    showguard2     ;*
  move.l #2080,ganimat2
  jmp    showguard2     ;*
yranim2:                ;*
  cmp.l  #1,gturny2      
  bne    ylanim2        ;*
  move.l #1248,ganimat2
  jmp    showguard2     ;*
ylanim2:                ;*
  cmp.l  #-1,gturny2
  bne    nothing2       ;*
  move.l #832,ganimat2
  jmp    showguard2     ;*
nothing2:               ;*
;  clr.l  ganimat2
  clr.l  grabbel2
showguard2:             ;*
  move.l guardx2,d6
  move.l guardy2,d7
  sub.l  scrx,d6
  sub.l  scry,d7
  move.l spritadr,a3
  add.l  #enconst2,a3
  add.l  ganimat2,a3
  add.l  grabbel2,a3
  bsr    sprpos

  move.l #3,d0
  move.l spritadr,d1
  add.l  #enconst2,d1
  add.l  ganimat2,d1
  add.l  grabbel2,d1
  move.l cladr,a0
  bsr    sprchange
  rts
;
;
enemy3:                 ;*
  bsr    delay3
  cmp.l  #1,d7
  beq    showguard3

  cmp.l  #1,status3
  bne    showguard3
  add.l  #1,gcogra3    
  and.l  #$f,gcogra3
  bne    pull3          ;*
  add.l  #104,grabbel3
  cmp.l  #416,grabbel3
  bne    pull3          ;*
  clr.l  grabbel3
pull3:                  ;*
  move.l gturnx3,d0
  move.l gturny3,d1
  add.l  d0,guardx3
  add.l  d1,guardy3
  sub.l  #1,gcount3
  bne    intend3        ;*

  cmp.l  #1,gtrans3
  beq    gravitation3   ;*
  move.l guardx3,d0
  move.l guardy3,d1
  bsr    getgold
  cmp.l  #1,d7
  bne    gravitation3   ;*
  move.l #1,gtrans3
gravitation3:           ;*
  clr.l  gturnx3
  clr.l  gturny3
  move.l #cy,gcount3
  move.l guardx3,d0
  move.l guardy3,d1
  bsr    entod
  move.l d0,guardx3 
  move.l d1,guardy3 

  cmp.l  #0,gstop3 
  beq    gesund3        ;*
  sub.l  #1,gstop3 
  cmp.l  #2,gstop3 
  bne    g3test2        ;*
  move.l guardx3,d0
  move.l guardy3,d1
  bsr    upsensor
  cmp.l  #1,d7
  beq    g3test2        ;*
  move.l #-1,gturny3 
  move.l #cy,gcount3
g3test2:                ;*
  cmp.l  #01,gstop3 
  bne    g3test3        ;*
  move.l guardx3,d0
  move.l guardy3,d1
  bsr    upsensor
  cmp.l  #1,d7
  beq    g3test3        ;*
  move.l #-1,gturny3 
  move.l #cy,gcount3
g3test3:                ;*
  cmp.l  #00,gstop3 
  bne    intend3        ;*
  clr.l  gstop3 
  jmp    vertical3      ;*
gesund3:                ;*
move.l guardy3,d0
move.l guardy1,d1
move.l guardx3,d2
move.l guardx1,d3
bsr    doguard
cmp.l  #1,d7
beq    walk3

move.l guardy3,d0
move.l guardy2,d1
move.l guardx3,d2
move.l guardx2,d3
bsr    doguard
cmp.l  #1,d7
beq    walk3

move.l guardy3,d0
move.l guardy4,d1
move.l guardx3,d2
move.l guardx4,d3
bsr    doguard
cmp.l  #1,d7
beq    walk3

  move.l guardx3,d0
  move.l guardy3,d1
  bsr    engravos
  move.l d0,gturny3 
  move.l d1,gcount3
  cmp.l  #0,d7
  bne    walk3          ;* 
  move.l guardx3,d0
  move.l guardy3,d1
  move.l gtrans3,d3
  bsr    laehmung
  move.l d3,gtrans3
  move.l d2,gstop3 
  jmp    intend3        ;*
walk3:
 
  move.l xpos,d0
  move.l guardx3,d1
  add.l  #144,d0
  and.l  #$fffffff0,d0
  and.l  #$fffffff0,d0
  cmp.l  d0,d1
  beq    vertical3      ;*
  move.l ypos,d1
  add.l  #40,d1
  move.l guardy3,d0
  cmp.l  d0,d1
  beq    vertical3      ;*
  bhi    vertical3      ;*

  move.l guardx3,d0
  move.l guardy3,d1
  bsr    searchl
  cmp.l  #2,d7
  beq    vertical3      ;*
  cmp.l  #1,d7
  beq    find3          ;*
  move.l #-1,d4
find3:                  ;*
  move.l d4,d3
  move.l guardx3,d0
  move.l guardy3,d1
  bsr    searchr
  cmp.l  #2,d7
  beq    vertical3      ;*
  cmp.l  #1,d7
  beq    compare3       ;*
  cmp.l  #-1,d3
  beq    vertical3      ;*
  move.l #-1,d4
compare3:               ;*
  cmp.l  d3,d4
  beq    vertical3      ;*
  bpl    right3         ;*

left3:                  ;*
  move.l guardx3,d0
  move.l guardy3,d1
  bsr    enleft
  cmp.l  #1,d7
  beq    vertical3      ;*
move.l guardx3,d0
move.l guardx1,d1
move.l guardy3,d2
move.l guardy1,d3
bsr    leguard
cmp.l  #1,d7
beq    vertical3

move.l guardx3,d0
move.l guardx2,d1
move.l guardy3,d2
move.l guardy2,d3
bsr    leguard
cmp.l  #1,d7
beq    vertical3

move.l guardx3,d0
move.l guardx4,d1
move.l guardy3,d2
move.l guardy4,d3
bsr    leguard
cmp.l  #1,d7
beq    vertical3
  move.l #-1,gturnx3
  move.l #cx,gcount3
  jmp    intend3        ;*
right3:                 ;*
  move.l guardx3,d0
  move.l guardy3,d1
  bsr    enright
  cmp.l  #1,d7
  beq    vertical3      ;*
move.l guardx3,d0
move.l guardx1,d1
move.l guardy3,d2
move.l guardy1,d3
bsr    riguard
cmp.l  #1,d7
beq    vertical3

move.l guardx3,d0
move.l guardx2,d1
move.l guardy3,d2
move.l guardy2,d3
bsr    riguard
cmp.l  #1,d7
beq    vertical3

move.l guardx3,d0
move.l guardx4,d1
move.l guardy3,d2
move.l guardy4,d3
bsr    riguard
cmp.l  #1,d7
beq    vertical3
  move.l #1,gturnx3 
  move.l #cx,gcount3
  jmp    intend3        ;*  

vertical3:              ;*
  move.l guardy3,d0
  move.l ypos,d1
  add.l  #44,d1
  and.l  #$fffffff8,d1
  cmp.l  d1,d0
  beq    horizont3      ;*
  blo    kleinery3      ;*
  move.l guardx3,d0
  move.l guardy3,d1
  bsr    enup
  cmp.l  #1,d7
  bne    horizont3      ;*
move.l guardy3,d0
move.l guardy1,d1
move.l guardx3,d2
move.l guardx1,d3
bsr    upguard
cmp.l  #1,d7
beq    intend3

move.l guardy3,d0
move.l guardy2,d1
move.l guardx3,d2
move.l guardx2,d3
bsr    upguard
cmp.l  #1,d7
beq    intend3

move.l guardy3,d0
move.l guardy4,d1
move.l guardx3,d2
move.l guardx4,d3
bsr    upguard
cmp.l  #1,d7
beq    intend3
  move.l #-1,gturny3 
  move.l #cy,gcount3
  jmp    intend3        ;*
kleinery3:              ;*
  move.l guardx3,d0
  move.l guardy3,d1
  bsr    endown
  cmp.l  #1,d7
  bne    horizont3      ;*
move.l guardy3,d0
move.l guardy1,d1
move.l guardx3,d2
move.l guardx1,d3
bsr    doguard
cmp.l  #1,d7
beq    intend3

move.l guardy3,d0
move.l guardy2,d1
move.l guardx3,d2
move.l guardx2,d3
bsr    doguard
cmp.l  #1,d7
beq    intend3

move.l guardy3,d0
move.l guardy4,d1
move.l guardx3,d2
move.l guardx4,d3
bsr    doguard
cmp.l  #1,d7
beq    intend3
  move.l #1,gturny3 
  move.l #cy,gcount3
  jmp    intend3        ;*

horizont3:              ;*
  move.l guardx3,d0
  move.l xpos,d1
  add.l  #152,d1
  and.l  #$fffffff0,d1
  cmp.l  d1,d0
  beq    intend3        ;*
  blo    kleinerx3      ;*
  move.l guardx3,d0
  move.l guardy3,d1
  bsr    enleft
  cmp.l  #1,d7
  beq    intend3        ;*
move.l guardx3,d0
move.l guardx1,d1
move.l guardy3,d2
move.l guardy1,d3
bsr    leguard
cmp.l  #1,d7
beq    intend3

move.l guardx3,d0
move.l guardx2,d1
move.l guardy3,d2
move.l guardy2,d3
bsr    leguard
cmp.l  #1,d7
beq    intend3

move.l guardx3,d0
move.l guardx4,d1
move.l guardy3,d2
move.l guardy4,d3
bsr    leguard
cmp.l  #1,d7
beq    intend3
  move.l #-1,gturnx3 
  move.l #cx,gcount3
  jmp    intend3        ;*
kleinerx3:              ;*
  move.l guardx3,d0
  move.l guardy3,d1
  bsr    enright
  cmp.l  #1,d7
  beq    intend3        ;*
move.l guardx3,d0
move.l guardx1,d1
move.l guardy3,d2
move.l guardy1,d3
bsr    riguard
cmp.l  #1,d7
beq    intend3

move.l guardx3,d0
move.l guardx2,d1
move.l guardy3,d2
move.l guardy2,d3
bsr    riguard
cmp.l  #1,d7
beq    intend3

move.l guardx3,d0
move.l guardx4,d1
move.l guardy3,d2
move.l guardy4,d3
bsr    riguard
cmp.l  #1,d7
beq    intend3
  move.l #1,gturnx3 
  move.l #cx,gcount3
intend3:                ;*
  cmp.l  #1,gturnx3
  bne    xlanim3        ;*
  move.l #00,ganimat3
  move.l guardx3,d0
  move.l guardy3,d1
  bsr    stangetest
  cmp.l  #1,d7
  bne    showguard3     ;*
  move.l #1664,ganimat3
  jmp    showguard3     ;*
xlanim3:                ;*
  cmp.l  #-1,gturnx3
  bne    yranim3        ;*
  move.l #416,ganimat3
  move.l guardx3,d0
  move.l guardy3,d1
  bsr    stangetest
  cmp.l  #1,d7
  bne    showguard3     ;*
  move.l #2080,ganimat3
  jmp    showguard3     ;*
yranim3:                ;*
  cmp.l  #1,gturny3      
  bne    ylanim3        ;*
  move.l #1248,ganimat3
  jmp    showguard3     ;*
ylanim3:                ;*
  cmp.l  #-1,gturny3
  bne    nothing3       ;*
  move.l #832,ganimat3
  jmp    showguard3     ;*
nothing3:               ;*
;  clr.l  ganimat3
  clr.l  grabbel3
showguard3:             ;*
  move.l guardx3,d6
  move.l guardy3,d7
  sub.l  scrx,d6
  sub.l  scry,d7
  move.l spritadr,a3
  add.l  #enconst3,a3
  add.l  ganimat3,a3
  add.l  grabbel3,a3
  bsr    sprpos

  move.l #4,d0
  move.l spritadr,d1
  add.l  #enconst3,d1
  add.l  ganimat3,d1
  add.l  grabbel3,d1
  move.l cladr,a0
  bsr    sprchange
  rts
;
;
enemy4:                 ;*
  bsr    delay4
  cmp.l  #1,d7
  beq    showguard4

  cmp.l  #1,status4
  bne    showguard4
  add.l  #1,gcogra4    
  and.l  #$f,gcogra4
  bne    pull4          ;*
  add.l  #104,grabbel4
  cmp.l  #416,grabbel4
  bne    pull4          ;*
  clr.l  grabbel4
pull4:                  ;*
  move.l gturnx4,d0
  move.l gturny4,d1
  add.l  d0,guardx4
  add.l  d1,guardy4
  sub.l  #1,gcount4
  bne    intend4        ;*

  cmp.l  #1,gtrans4
  beq    gravitation4   ;*
  move.l guardx4,d0
  move.l guardy4,d1
  bsr    getgold
  cmp.l  #1,d7
  bne    gravitation4   ;*
  move.l #1,gtrans4
gravitation4:           ;*
  clr.l  gturnx4
  clr.l  gturny4
  move.l #cy,gcount4
  move.l guardx4,d0
  move.l guardy4,d1
  bsr    entod
  move.l d0,guardx4 
  move.l d1,guardy4 

  cmp.l  #0,gstop4 
  beq    gesund4        ;*
  sub.l  #1,gstop4 
  cmp.l  #2,gstop4 
  bne    g4test2        ;*
  move.l guardx4,d0
  move.l guardy4,d1
  bsr    upsensor
  cmp.l  #1,d7
  beq    g4test2        ;*
  move.l #-1,gturny4 
  move.l #cy,gcount4
g4test2:                ;*
  cmp.l  #01,gstop4 
  bne    g4test3        ;*
  move.l guardx4,d0
  move.l guardy4,d1
  bsr    upsensor
  cmp.l  #1,d7
  beq    g4test3        ;*
  move.l #-1,gturny4 
  move.l #cy,gcount4
g4test3:                ;*
  cmp.l  #00,gstop4 
  bne    intend4        ;*
  clr.l  gstop4 
  jmp    vertical4      ;*
gesund4:                ;*
move.l guardy4,d0
move.l guardy1,d1
move.l guardx4,d2
move.l guardx1,d3
bsr    doguard
cmp.l  #1,d7
beq    walk4

move.l guardy4,d0
move.l guardy2,d1
move.l guardx4,d2
move.l guardx2,d3
bsr    doguard
cmp.l  #1,d7
beq    walk4

move.l guardy4,d0
move.l guardy3,d1
move.l guardx4,d2
move.l guardx3,d3
bsr    doguard
cmp.l  #1,d7
beq    walk4

  move.l guardx4,d0
  move.l guardy4,d1
  bsr    engravos
  move.l d0,gturny4 
  move.l d1,gcount4
  cmp.l  #0,d7
  bne    walk4          ;* 
  move.l guardx4,d0
  move.l guardy4,d1
  move.l gtrans4,d3
  bsr    laehmung
  move.l d3,gtrans4
  move.l d2,gstop4 
  jmp    intend4        ;*
walk4:
 
  move.l xpos,d0
  move.l guardx4,d1
  add.l  #144,d0
  and.l  #$fffffff0,d0
  and.l  #$fffffff0,d0
  cmp.l  d0,d1
  beq    vertical4      ;*
  move.l ypos,d1
  add.l  #40,d1
  move.l guardy4,d0
  cmp.l  d0,d1
  beq    vertical4      ;*
  bhi    vertical4      ;*

  move.l guardx4,d0
  move.l guardy4,d1
  bsr    searchl
  cmp.l  #2,d7
  beq    vertical4      ;*
  cmp.l  #1,d7
  beq    find4          ;*
  move.l #-1,d4
find4:                  ;*
  move.l d4,d3
  move.l guardx4,d0
  move.l guardy4,d1
  bsr    searchr
  cmp.l  #2,d7
  beq    vertical4      ;*
  cmp.l  #1,d7
  beq    compare4       ;*
  cmp.l  #-1,d3
  beq    vertical4      ;*
  move.l #-1,d4
compare4:               ;*
  cmp.l  d3,d4
  beq    vertical4      ;*
  bpl    right4         ;*

left4:                  ;*
  move.l guardx4,d0
  move.l guardy4,d1
  bsr    enleft
  cmp.l  #1,d7
  beq    vertical4      ;*
move.l guardx4,d0
move.l guardx1,d1
move.l guardy4,d2
move.l guardy1,d3
bsr    leguard
cmp.l  #1,d7
beq    vertical4

move.l guardx4,d0
move.l guardx2,d1
move.l guardy4,d2
move.l guardy2,d3
bsr    leguard
cmp.l  #1,d7
beq    vertical4

move.l guardx4,d0
move.l guardx3,d1
move.l guardy4,d2
move.l guardy3,d3
bsr    leguard
cmp.l  #1,d7
beq    vertical4
  move.l #-1,gturnx4
  move.l #cx,gcount4
  jmp    intend4        ;*
right4:                 ;*
  move.l guardx4,d0
  move.l guardy4,d1
  bsr    enright
  cmp.l  #1,d7
  beq    vertical4      ;*
move.l guardx4,d0
move.l guardx1,d1
move.l guardy4,d2
move.l guardy1,d3
bsr    riguard
cmp.l  #1,d7
beq    vertical4

move.l guardx4,d0
move.l guardx2,d1
move.l guardy4,d2
move.l guardy2,d3
bsr    riguard
cmp.l  #1,d7
beq    vertical4

move.l guardx4,d0
move.l guardx3,d1
move.l guardy4,d2
move.l guardy3,d3
bsr    riguard
cmp.l  #1,d7
beq    vertical4
  move.l #1,gturnx4 
  move.l #cx,gcount4
  jmp    intend4        ;*  

vertical4:              ;*
  move.l guardy4,d0
  move.l ypos,d1
  add.l  #44,d1
  and.l  #$fffffff8,d1
  cmp.l  d1,d0
  beq    horizont4      ;*
  blo    kleinery4      ;*
  move.l guardx4,d0
  move.l guardy4,d1
  bsr    enup
  cmp.l  #1,d7
  bne    horizont4      ;*
move.l guardy4,d0
move.l guardy1,d1
move.l guardx4,d2
move.l guardx1,d3
bsr    upguard
cmp.l  #1,d7
beq    intend4

move.l guardy4,d0
move.l guardy2,d1
move.l guardx4,d2
move.l guardx2,d3
bsr    upguard
cmp.l  #1,d7
beq    intend4

move.l guardy4,d0
move.l guardy3,d1
move.l guardx4,d2
move.l guardx3,d3
bsr    upguard
cmp.l  #1,d7
beq    intend4
  move.l #-1,gturny4 
  move.l #cy,gcount4
  jmp    intend4        ;*
kleinery4:              ;*
  move.l guardx4,d0
  move.l guardy4,d1
  bsr    endown
  cmp.l  #1,d7
  bne    horizont4      ;*
move.l guardy4,d0
move.l guardy1,d1
move.l guardx4,d2
move.l guardx1,d3
bsr    doguard
cmp.l  #1,d7
beq    intend4

move.l guardy4,d0
move.l guardy2,d1
move.l guardx4,d2
move.l guardx2,d3
bsr    doguard
cmp.l  #1,d7
beq    intend4

move.l guardy4,d0
move.l guardy3,d1
move.l guardx4,d2
move.l guardx3,d3
bsr    doguard
cmp.l  #1,d7
beq    intend4
  move.l #1,gturny4 
  move.l #cy,gcount4
  jmp    intend4        ;*

horizont4:              ;*
  move.l guardx4,d0
  move.l xpos,d1
  add.l  #152,d1
  and.l  #$fffffff0,d1
  cmp.l  d1,d0
  beq    intend4        ;*
  blo    kleinerx4      ;*
  move.l guardx4,d0
  move.l guardy4,d1
  bsr    enleft
  cmp.l  #1,d7
  beq    intend4        ;*
move.l guardx4,d0
move.l guardx1,d1
move.l guardy4,d2
move.l guardy1,d3
bsr    leguard
cmp.l  #1,d7
beq    intend4

move.l guardx4,d0
move.l guardx2,d1
move.l guardy4,d2
move.l guardy2,d3
bsr    leguard
cmp.l  #1,d7
beq    intend4

move.l guardx4,d0
move.l guardx3,d1
move.l guardy4,d2
move.l guardy3,d3
bsr    leguard
cmp.l  #1,d7
beq    intend4
  move.l #-1,gturnx4 
  move.l #cx,gcount4
  jmp    intend4        ;*
kleinerx4:              ;*
  move.l guardx4,d0
  move.l guardy4,d1
  bsr    enright
  cmp.l  #1,d7
  beq    intend4        ;*
move.l guardx4,d0
move.l guardx1,d1
move.l guardy4,d2
move.l guardy1,d3
bsr    riguard
cmp.l  #1,d7
beq    intend4

move.l guardx4,d0
move.l guardx2,d1
move.l guardy4,d2
move.l guardy2,d3
bsr    riguard
cmp.l  #1,d7
beq    intend4

move.l guardx4,d0
move.l guardx3,d1
move.l guardy4,d2
move.l guardy3,d3
bsr    riguard
cmp.l  #1,d7
beq    intend4
  move.l #1,gturnx4 
  move.l #cx,gcount4
intend4:                ;*
  cmp.l  #1,gturnx4
  bne    xlanim4        ;*
  move.l #00,ganimat4
  move.l guardx4,d0
  move.l guardy4,d1
  bsr    stangetest
  cmp.l  #1,d7
  bne    showguard4     ;*
  move.l #1664,ganimat4
  jmp    showguard4     ;*
xlanim4:                ;*
  cmp.l  #-1,gturnx4
  bne    yranim4        ;*
  move.l #416,ganimat4
  move.l guardx4,d0
  move.l guardy4,d1
  bsr    stangetest
  cmp.l  #1,d7
  bne    showguard4     ;*
  move.l #2080,ganimat4
  jmp    showguard4     ;*
yranim4:                ;*
  cmp.l  #1,gturny4      
  bne    ylanim4        ;*
  move.l #1248,ganimat4
  jmp    showguard4     ;*
ylanim4:                ;*
  cmp.l  #-1,gturny4
  bne    nothing4       ;*
  move.l #832,ganimat4
  jmp    showguard4     ;*
nothing4:               ;*
;  clr.l  ganimat4
  clr.l  grabbel4
showguard4:             ;*
  move.l guardx4,d6
  move.l guardy4,d7
  sub.l  scrx,d6
  sub.l  scry,d7
  move.l spritadr,a3
  add.l  #enconst4,a3
  add.l  ganimat4,a3
  add.l  grabbel4,a3
  bsr    sprpos

  move.l #5,d0
  move.l spritadr,d1
  add.l  #enconst4,d1
  add.l  ganimat4,d1
  add.l  grabbel4,d1
  move.l cladr,a0
  bsr    sprchange
rts
;
;
riguard:
  clr.l  d7
  and.l  #$fffffff0,d2
  and.l  #$fffffff0,d3
  cmp.l  d2,d3
  bne    riguend  
  sub.l  d0,d1
  bmi    riguend
  beq    riguend
  cmp.l  #32,d1
  bhi    riguend
  move.l #1,d7
riguend:
  rts
;
;
leguard:
  clr.l  d7
  and.l  #$fffffff0,d2
  and.l  #$fffffff0,d3
  cmp.l  d2,d3
  bne    leguend  
  sub.l  d1,d0
  bmi    leguend
  beq    leguend
  cmp.l  #32,d0
  bhi    leguend
  move.l #1,d7
leguend:
  rts
;
;
doguard:
  clr.l  d7
  and.l  #$fffffff0,d2
  and.l  #$fffffff0,d3
  cmp.l  d2,d3
  bne    doguend  
  sub.l  d0,d1
  beq    doguend
  bmi    doguend
  cmp.l  #16,d1
  bhi    doguend
  move.l #1,d7
doguend:
  rts
;
;
upguard:
  clr.l  d7
  and.l  #$fffffff0,d2
  and.l  #$fffffff0,d3
  cmp.l  d2,d3
  bne    upguend  
  sub.l  d1,d0
  beq    upguend
  bmi    upguend
  cmp.l  #16,d0
  bhi    upguend
  move.l #1,d7
upguend:
  rts
;
pirat:
  dc.b 7,5,3,8,6,9,4,2,3,7,0,0,5,8,9,9
  dc.b 8,3,6,1,0,2,5,2,2,4,4,6,9,7,3,0
  dc.b 9,7,3,5,6,4,1,0,8,9,7,3,5,6,1,0
  dc.b 5,2,6,9,6,3,3,4,1,0,8,3,9,7,4,5
; 
stangetest:
  clr.l  d7
  move.l #solidtab,d5
  move.l #7,d6
 movem.l d0-d1,-(sp)
  add.l  #8,d1
  sub.l  #8,d0
  bsr    sensor1e
 movem.l (sp)+,d0-d1
  eor.l  #$1,d7
  cmp.l  #0,d7
  beq    statesend

  move.l #stange,d5
  move.l #2,d6
 movem.l d0-d1,-(sp)
  sub.l  #8,d1
  sub.l  #8,d0
  bsr    sensor1e
 movem.l (sp)+,d0-d1
  cmp.l  #1,d7
  beq    statesend

  move.l #solidtab,d5
  move.l #7,d6
 movem.l d0-d1,-(sp)
  sub.l  #8,d1
  sub.l  #8,d0
  bsr    sensor1e
 movem.l (sp)+,d0-d1
statesend:
  rts
;
;
entod:
  move.l #platte1,d5
  move.l #3,d6
 movem.l d0-d1,-(sp)
  sub.l  #8,d0
  bsr    sensor1e
 movem.l (sp)+,d0-d1
  cmp.l  #1,d7
  bne    entodend
  move.l entodx,d0
  move.l entody,d1
  add.l  #ewert,score
entodend:
  rts
;

getgold:
  move.l #gold,d5
  move.l #0,d6
 movem.l d0-d6,-(sp)
  add.l  #8,d1
  sub.l  #8,d0
  bsr    sensor1e
 movem.l (sp)+,d0-d6
  cmp.l  #1,d7
  bne    goldgetend

  sub.l  #144,d0
  add.l  #8,d0
  sub.l  #40,d1
 movem.l d0-d3,-(sp)
  clr.l  d7
  move.l sceneadr,a0
  asr.l  #3,d0
  and.l  #$fffffffe,d0
  asr.l  #3,d1
  move.l d1,d4
  muls   #80,d1
  add.l  d0,d1
  add.l  d1,a0
  move.w #00,242(a0)
 movem.l (sp)+,d0-d3

  move.l d4,d1
  asl.l  #3,d1
  add.l  #15,d1
  muls   #80,d1
  asr.l  #3,d0
  and.l  #$fffffffe,d0
  add.l  d1,d0
  move.l planeadr,a1
  add.l  d0,a1
  move.l #0,d0
  bsr    blockset

  move.l #1,d7
  rts
goldgetend:
  clr.l  d7
  rts  
;    
;
searchl:
  move.l #solidtab,d5
  move.l #7,d6
 movem.l d0-d6,-(sp)
  sub.l  #tast,d1
  sub.l  #8,d0
  bsr    sensor1e
 movem.l (sp)+,d0-d6
  cmp.l  #1,d7
  beq    lsettwo

  move.l #solidtab,d5
  move.l #7,d6
 movem.l d0-d6,-(sp)
  sub.l  #8,d0
  bsr    sensor1e
 movem.l (sp)+,d0-d6
  cmp.l  #1,d7
  beq    lsettwo

  sub.l  #16,d0
 movem.l d0-d6,-(sp)
  sub.l  #8,d0
  sub.l  #tast,d1
  bsr    adrsens
 movem.l (sp)+,d0-d6
  move.l a0,a1
 movem.l d0-d6,-(sp)
  sub.l  #8,d0
  bsr    adrsens
 movem.l (sp)+,d0-d6
  move.l a0,a2

  move.l #9,d4
lsloop:
  move.l #solidtab,d5
  move.l #7,d6
  move.w (a1),d2
  bsr    nowsens
  sub.l  #2,a1
  cmp.l  #1,d7
  beq    lsetleiter

  move.l #platte1,d5
  move.w #3,d6
  move.w (a2),d2
  bsr    nowsens
  sub.l  #2,a2
  cmp.l  #1,d7
  beq    clearl

  sub.l  #16,d0
  cmp.l  #$90,d0
  beq    clearl
  dbra   d4,lsloop
clearl:
  clr.l  d7
  rts
lsetleiter:
  move.l #solidtab,d5
  move.l #7,d6
 movem.l d0-d6,-(sp)
  sub.l  #24,d1
  sub.l  #8,d0
  bsr    sensor1e
 movem.l (sp)+,d0-d6
  cmp.l  #0,d7
  beq    lsettwo

  move.l #1,d7
  rts
lsettwo:
  move.l #2,d7
  rts
;
;
searchr:
  move.l #solidtab,d5
  move.l #7,d6
 movem.l d0-d6,-(sp)
  sub.l  #tast,d1
  sub.l  #8,d0
  bsr    sensor1e
 movem.l (sp)+,d0-d6
  cmp.l  #1,d7
  beq    rsettwo

  move.l #solidtab,d5
  move.l #7,d6
 movem.l d0-d6,-(sp)
  sub.l  #8,d0
  bsr    sensor1e
 movem.l (sp)+,d0-d6
  cmp.l  #1,d7
  beq    rsettwo

  add.l  #16,d0
 movem.l d0-d6,-(sp)
  sub.l  #8,d0
  sub.l  #tast,d1
  bsr    adrsens
 movem.l (sp)+,d0-d6
  move.l a0,a1
 movem.l d0-d6,-(sp)
  sub.l  #8,d0
  bsr    adrsens
 movem.l (sp)+,d0-d6
  move.l a0,a2

  move.l #9,d4
rsloop:
  move.l #solidtab,d5
  move.l #7,d6
  move.w (a1),d2
  bsr    nowsens
  add.l  #2,a1
  cmp.l  #1,d7
  beq    rsetleiter

  move.l #platte1,d5
  move.w #3,d6
  move.w (a2),d2
  bsr    nowsens
  add.l  #2,a2
  cmp.l  #1,d7
  beq    clearr

  add.l  #16,d0
  cmp.l  #$300,d0
  beq    clearr
  dbra   d4,rsloop
clearr:
  clr.l  d7
  rts
rsetleiter:
  move.l #solidtab,d5
  move.l #7,d6
 movem.l d0-d6,-(sp)
  sub.l  #24,d1
  sub.l  #8,d0
  bsr    sensor1e
 movem.l (sp)+,d0-d6
  cmp.l  #0,d7
  beq    rsettwo

  move.l #1,d7
  rts
rsettwo:
  move.l #2,d7
  rts
;
;
upsensor:
  move.l #platte1,d5
  move.l #3,d6
 movem.l d0-d1,-(sp)
  sub.l  #8,d0
  sub.l  #16,d1
  bsr    sensor1e
 movem.l (sp)+,d0-d1
  rts
;
;
engravos:
  move.l #platte1,d5
  move.l #3,d6
 movem.l d0-d1,-(sp)
  add.l  #16,d1
  sub.l  #8,d0
  bsr    sensor1e
 movem.l (sp)+,d0-d1
  cmp.l  #1,d7
  beq    engrend

  move.l #platte1,d5
  move.l #3,d6
 movem.l d0-d1,-(sp)
  sub.l  #8,d0
  bsr    sensor1e
 movem.l (sp)+,d0-d1
  cmp.l  #1,d7
  beq    engrend

  move.l #falle1,d5
  move.l #1,d6
 movem.l d0-d1,-(sp)
  sub.l  #8,d0
  add.l  #16,d1
  bsr    sensor1e
 movem.l (sp)+,d0-d1
  cmp.l  #1,d7
  beq    inspite
  move.l #leer,d5
  move.l #1,d6
 movem.l d0-d1,-(sp)
  sub.l  #8,d0
  add.l  #16,d1
  bsr    sensor1e
 movem.l (sp)+,d0-d1
  cmp.l  #1,d7
  beq    inspite
  move.l #falle2,d5
  move.l #1,d6
 movem.l d0-d1,-(sp)
  sub.l  #8,d0
  bsr    sensor1e
 movem.l (sp)+,d0-d1
  cmp.l  #1,d7
  beq    engrend
inspite:
  clr.l  d7

  move.l #solidtab,d5
  move.l #7,d6
 movem.l d0-d1,-(sp)
  add.l  #16,d1
  sub.l  #8,d0
  bsr    sensor1e
 movem.l (sp)+,d0-d1
  cmp.l  #1,d7
  beq    engrend

  move.l #stange,d5
  move.l #2,d6
 movem.l d0-d1,-(sp)
  sub.l  #8,d1
  sub.l  #8,d0
  bsr    sensor1e
 movem.l (sp)+,d0-d1
  cmp.l  #1,d7
  beq    engrend

  move.l #solidtab,d5
  move.l #7,d6
 movem.l d0-d1,-(sp)
  sub.l  #8,d1
  sub.l  #8,d0
  bsr    sensor1e
 movem.l (sp)+,d0-d1
  cmp.l  #1,d7
  beq    engrend

  move.l #solidtab,d5
  move.l #7,d6
 movem.l d0-d1,-(sp)
  sub.l  #8,d1 ;#16,d1
  sub.l  #8,d0
  bsr    sensor1e
 movem.l (sp)+,d0-d1
  cmp.l  #1,d7
  beq    engrend
  move.l #0,d7
  move.l #1,d0 ;add.l  #8,d1
  move.l #cy,d1
  rts
engrend:
  clr.l  d0 
  move.l #cy,d1
  rts    
;
;
laehmung:
  add.l  #8,d1
  move.l #falle2,d5
  move.l #1,d6
 movem.l d0-d1,-(sp)
  sub.l  #8,d0
  bsr    sensor1e
 movem.l (sp)+,d0-d1
  cmp.l  #1,d7
  beq    laehmset
  clr.l  d2
  rts
laehmset:  
  move.l #48,d2
  cmp.l  #1,d3
  bne    gogeend

  sub.l  #144,d0
  add.l  #8,d0
  sub.l  #40,d1
  sub.l  #16,d1
 movem.l d0-d3,-(sp)
  clr.l  d7
  move.l sceneadr,a0
  asr.l  #3,d0
  and.l  #$fffffffe,d0
  asr.l  #3,d1
  move.l d1,d4
  muls   #80,d1
  add.l  d0,d1
  add.l  d1,a0
 movem.l (sp)+,d0-d3
  cmp.w  #00,242(a0)
  bne    gogeend
  move.w #09,242(a0)
  move.l d4,d1
  asl.l  #3,d1
  add.l  #15,d1
  muls   #80,d1
  asr.l  #3,d0
  and.l  #$fffffffe,d0
  add.l  d1,d0
  move.l planeadr,a1
  add.l  d0,a1
  move.l #9,d0
  bsr    blockset
  clr.l  d3
gogeend:
  rts 
;
;
enup:
  clr.l  d7
  move.l #platte1,d5
  move.l #3,d6
  sub.l  #8,d0
  sub.l  #16,d1
  bsr    sensor1e
  eor.l  #1,d7
  cmp.l  #0,d7
  beq    enupend
  add.l  #16,d1

  move.l #solidtab,d5
  move.l #7,d6
  sub.l  #8,d0
  add.l  #8,d1
  bsr    sensor1e
  cmp.l  #1,d7
  beq    enupend

;  move.l #solidtab,d5
;  move.l #7,d6
;  sub.l  #8,d1
;  bsr    sensor1e
;  cmp.l  #1,d7
;  beq    enupend

  move.l #solidtab,d5
  move.l #7,d6
  sub.l  #16,d1
  bsr    sensor1e
enupend:
  rts    
;
;
endown:
  clr.l  d7
  move.l #platte1,d5
  move.l #3,d6
 movem.l d0-d1,-(sp)
  add.l  #16,d1
  sub.l  #8,d0
  bsr    sensor1e
 movem.l (sp)+,d0-d1
  eor.l  #1,d7
  cmp.l  #0,d7
  beq    engrend

  move.l #solidtab,d5
  move.l #7,d6
  sub.l  #08,d0
  add.l  #16,d1
  bsr    sensor1e
  cmp.l  #1,d7
  beq    endoend

  move.l #solidtab,d5
  move.l #7,d6
  sub.l  #24,d1
  bsr    sensor1e
  cmp.l  #1,d7
  beq    endoend

  move.l #stange,d5
;  sub.l  #24,d1
  move.l #2,d6
  bsr    sensor1e
endoend:
  rts    
;
;
enright:
  clr.l  d7
  move.l #platte1,d5
  move.l #3,d6
  add.l  #8,d1
  add.l  #8,d0
  bsr    sensor1e
  cmp.l  #1,d7
  beq    enriend
  move.l #platte1,d5
  move.l #3,d6
  sub.l  #8,d1
  bsr    sensor1e
enriend:
  rts    
;
;
enleft:
  clr.l  d7
  move.l #platte1,d5
  move.l #3,d6
  add.l  #8,d1
  sub.l  #32,d0
  bsr    sensor1e
  cmp.l  #1,d7
  beq    enleend
  move.l #platte1,d5
  move.l #3,d6
  sub.l  #8,d1
  bsr    sensor1e
enleend:
  rts    
;
;
sensor1e:
 movem.l d0-d6/a0-a6,-(sp)
  sub.l  #112,d0
  sub.l  #20,d1
  clr.l  d7
  move.l sceneadr,a0
  move.l d1,d4
  asr.l  #3,d0
  and.l  #$fffffffe,d0
  asr.l  #3,d1
  muls   #80,d1
  add.l  d0,d1
  add.l  d1,a0
  move.w 000(a0),d2

  move.l d5,a1
solidloop1e:
  move.w (a1)+,d1    
  cmp.w  d1,d2
  beq    kollset1e
  dbra   d6,solidloop1e
  jmp    nullset1e
kollset1e:
  move.l #1,d7
nullset1e:
 movem.l (sp)+,d0-d6/a0-a6
  rts
;
;
adrsens:
 movem.l d0-d6,-(sp)
  sub.l  #112,d0
  sub.l  #20,d1
  clr.l  d7
  move.l sceneadr,a0
  move.l d1,d4
  asr.l  #3,d0
  and.l  #$fffffffe,d0
  asr.l  #3,d1
  muls   #80,d1
  add.l  d0,d1
  add.l  d1,a0
 movem.l (sp)+,d0-d6
rts
;
;
nowsens:
 movem.l d0-d6/a0-a6,-(sp)
  clr.l  d7
  move.l d5,a1
solidloopns:
  move.w (a1)+,d1    
  cmp.w  d1,d2
  beq    kollsetns
  dbra   d6,solidloopns
  jmp    nullsetns
kollsetns:
  move.l #1,d7
nullsetns:
 movem.l (sp)+,d0-d6/a0-a6
rts
;
;
;*** Score-Zaehler ***

scorecount:
  move.l score,d7
  cmp.l  scoreold,d7
  beq    scorend
  move.l d7,scoreold
  move.l d7,d6
  divu   #1000,d6
  ext.l  d6
  divu   #1000,d6
  ext.l  d6
  move.l d6,-(sp)
  move.l d6,d5
  mulu   #1000,d5
  mulu   #1000,d5
  move.l d7,d6
  sub.l  d5,d6
  divu   #1000,d6
  ext.l  d6
  divu   #100,d6
  ext.l  d6
  move.l d6,-(sp)
  mulu   #1000,d6
  mulu   #100,d6
  add.l  d6,d5
  move.l d7,d6
  sub.l  d5,d6
  divu   #100,d6
  ext.l  d6
  divu   #100,d6
  ext.l  d6
  move.l d6,-(sp)
  mulu   #100,d6
  mulu   #100,d6
  add.l  d6,d5
  move.l d7,d6
  sub.l  d5,d6
  divu   #100,d6
  ext.l  d6
  divu   #10,d6
  ext.l  d6
  move.l d6,-(sp)
  mulu   #100,d6
  mulu   #10,d6
  add.l  d6,d5
  move.l d7,d6
  sub.l  d5,d6
  divu   #10,d6
  ext.l  d6
  divu   #10,d6
  ext.l  d6
  move.l d6,-(sp)
  mulu   #10,d6
  mulu   #10,d6
  add.l  d6,d5
  move.l d7,d6
  sub.l  d5,d6
  divu   #10,d6
  ext.l  d6
  divu   #1,d6
  ext.l  d6
  move.l d6,-(sp)
  mulu   #10,d6
  mulu   #1,d6
  add.l  d6,d5
  move.l d7,d6
  sub.l  d5,d6
  divu   #1,d6
  ext.l  d6
  divu   #1,d6
  ext.l  d6
  move.l d6,-(sp)
 movem.l (sp)+,d1-d7

  asl.l  #1,d1
  move.l d1,d0
  add.l  #27,d0
  move.l hplanadr2,a1
  add.l  #334+12,a1
  bsr    blsetonce2
  move.l d1,d0
  add.l  #27,d0
  move.l hplanadr2,a1
  add.l  #334+12+640,a1
  add.l  #1,d0
  bsr    blsetonce2
  asl.l  #1,d2
  move.l d2,d0
  add.l  #27,d0
  move.l hplanadr2,a1
  add.l  #334+10,a1
  bsr    blsetonce2
  move.l d2,d0
  add.l  #27,d0
  move.l hplanadr2,a1
  add.l  #334+10+640,a1
  add.l  #1,d0
  bsr    blsetonce2
  asl.l  #1,d3
  move.l d3,d0
  add.l  #27,d0
  move.l hplanadr2,a1
  add.l  #334+8,a1
  bsr    blsetonce2
  move.l d3,d0
  add.l  #27,d0
  move.l hplanadr2,a1
  add.l  #334+8+640,a1
  add.l  #1,d0
  bsr    blsetonce2
  asl.l  #1,d4
  move.l d4,d0
  add.l  #27,d0
  move.l hplanadr2,a1
  add.l  #334+6,a1
  bsr    blsetonce2
  move.l d4,d0
  add.l  #27,d0
  move.l hplanadr2,a1
  add.l  #334+6+640,a1
  add.l  #1,d0
  bsr    blsetonce2

  asl.l  #1,d5
  move.l d5,d0
  add.l  #27,d0
  move.l hplanadr2,a1
  add.l  #334+4,a1
  bsr    blsetonce2
  move.l d5,d0
  add.l  #27,d0
  move.l hplanadr2,a1
  add.l  #334+4+640,a1
  add.l  #1,d0
  bsr    blsetonce2

  asl.l  #1,d6
  move.l d6,d0
  add.l  #27,d0
  move.l hplanadr2,a1
  add.l  #334+2,a1
  bsr    blsetonce2
  move.l d6,d0
  add.l  #27,d0
  move.l hplanadr2,a1
  add.l  #334+2+640,a1
  add.l  #1,d0
  bsr    blsetonce2

  asl.l  #1,d7
  move.l d7,d0
  add.l  #27,d0
  move.l hplanadr2,a1
  add.l  #334,a1
  bsr    blsetonce2
  move.l d7,d0
  add.l  #27,d0
  move.l hplanadr2,a1
  add.l  #334+640,a1
  add.l  #1,d0
  bsr    blsetonce2
scorend:
  rts
;
;
hiscorecount:
  move.l d7,d6
  divu   #1000,d6
  ext.l  d6
  divu   #1000,d6
  ext.l  d6
  move.l d6,-(sp)
  move.l d6,d5
  mulu   #1000,d5
  mulu   #1000,d5
  move.l d7,d6
  sub.l  d5,d6
  divu   #1000,d6
  ext.l  d6
  divu   #100,d6
  ext.l  d6
  move.l d6,-(sp)
  mulu   #1000,d6
  mulu   #100,d6
  add.l  d6,d5
  move.l d7,d6
  sub.l  d5,d6
  divu   #100,d6
  ext.l  d6
  divu   #100,d6
  ext.l  d6
  move.l d6,-(sp)
  mulu   #100,d6
  mulu   #100,d6
  add.l  d6,d5
  move.l d7,d6
  sub.l  d5,d6
  divu   #100,d6
  ext.l  d6
  divu   #10,d6
  ext.l  d6
  move.l d6,-(sp)
  mulu   #100,d6
  mulu   #10,d6
  add.l  d6,d5
  move.l d7,d6
  sub.l  d5,d6
  divu   #10,d6
  ext.l  d6
  divu   #10,d6
  ext.l  d6
  move.l d6,-(sp)
  mulu   #10,d6
  mulu   #10,d6
  add.l  d6,d5
  move.l d7,d6
  sub.l  d5,d6
  divu   #10,d6
  ext.l  d6
  divu   #1,d6
  ext.l  d6
  move.l d6,-(sp)
  mulu   #10,d6
  mulu   #1,d6
  add.l  d6,d5
  move.l d7,d6
  sub.l  d5,d6
  divu   #1,d6
  ext.l  d6
  divu   #1,d6
  ext.l  d6
  move.l d6,-(sp)
 movem.l (sp)+,d1-d7

  asl.l  #1,d1
  move.l d1,d0
  add.l  #27,d0
  move.l planeadr,a1
  add.l  admem,a1
  add.l  #12,a1
  bsr    blockset
  move.l d1,d0
  add.l  #27,d0
  move.l planeadr,a1
  add.l  admem,a1
  add.l  #12+640,a1
  add.l  #1,d0
  bsr    blockset
  asl.l  #1,d2
  move.l d2,d0
  add.l  #27,d0
  move.l planeadr,a1
  add.l  admem,a1
  add.l  #10,a1
  bsr    blockset
  move.l d2,d0
  add.l  #27,d0
  move.l planeadr,a1
  add.l  admem,a1
  add.l  #10+640,a1
  add.l  #1,d0
  bsr    blockset
  asl.l  #1,d3
  move.l d3,d0
  add.l  #27,d0
  move.l planeadr,a1
  add.l  admem,a1
  add.l  #8,a1
  bsr    blockset
  move.l d3,d0
  add.l  #27,d0
  move.l planeadr,a1
  add.l  admem,a1
  add.l  #8+640,a1
  add.l  #1,d0
  bsr    blockset
  asl.l  #1,d4
  move.l d4,d0
  add.l  #27,d0
  move.l planeadr,a1
  add.l  admem,a1
  add.l  #6,a1
  bsr    blockset
  move.l d4,d0
  add.l  #27,d0
  move.l planeadr,a1
  add.l  admem,a1
  add.l  #6+640,a1
  add.l  #1,d0
  bsr    blockset

  asl.l  #1,d5
  move.l d5,d0
  add.l  #27,d0
  move.l planeadr,a1
  add.l  admem,a1
  add.l  #4,a1
  bsr    blockset
  move.l d5,d0
  add.l  #27,d0
  move.l planeadr,a1
  add.l  admem,a1
  add.l  #4+640,a1
  add.l  #1,d0
  bsr    blockset

  asl.l  #1,d6
  move.l d6,d0
  add.l  #27,d0
  move.l planeadr,a1
  add.l  admem,a1
  add.l  #2,a1
  bsr    blockset
  move.l d6,d0
  add.l  #27,d0
  move.l planeadr,a1
  add.l  admem,a1
  add.l  #2+640,a1
  add.l  #1,d0
  bsr    blockset

  asl.l  #1,d7
  move.l d7,d0
  add.l  #27,d0
  move.l planeadr,a1
  add.l  admem,a1
  bsr    blockset
  move.l d7,d0
  add.l  #27,d0
  move.l planeadr,a1
  add.l  admem,a1
  add.l  #640,a1
  add.l  #1,d0
  bsr    blockset
rts
;
;
;*** Gold-Zaehler ***

goldcount:
  clr.l  d1
  clr.l  d2
  clr.l  d3
  move.l goldreg,d6
  move.l goldmax,d7
  sub.l  d6,d7
  divs   #100,d7
  move.w d7,d1
  swap   d7
  ext.l  d7
  divs   #10,d7
  move.w d7,d2
  swap   d7
  ext.l  d7
  move.l d7,d3

  asl.l  #1,d1
  move.l d1,d0
  add.l  #27,d0
  move.l hplanadr,a1
  add.l  #434,a1
  bsr    blsetonce2
  move.l d1,d0
  add.l  #27,d0
  move.l hplanadr,a1
  add.l  #434+640,a1
  add.l  #1,d0
  bsr    blsetonce2

  asl.l  #1,d2
  move.l d2,d0
  add.l  #27,d0
  move.l hplanadr,a1
  add.l  #436,a1
  bsr    blsetonce2
  move.l d2,d0
  add.l  #27,d0
  move.l hplanadr,a1
  add.l  #436+640,a1
  add.l  #1,d0
  bsr    blsetonce2

  asl.l  #1,d3
  move.l d3,d0
  add.l  #27,d0
  move.l hplanadr,a1
  add.l  #438,a1
  bsr    blsetonce2
  move.l d3,d0
  add.l  #27,d0
  move.l hplanadr,a1
  add.l  #438+640,a1
  add.l  #1,d0
  bsr    blsetonce2
rts         
;
;
;*** Man-Zaehler ***

mancount:
  move.l man,d0
  asl.l  #1,d0
  add.l  #27,d0
  move.l hplanadr2,a1
  add.l  #358,a1
  bsr    blsetonce2
  move.l man,d0
  asl.l  #1,d0
  add.l  #27,d0
  move.l hplanadr2,a1
  add.l  #358+640,a1
  add.l  #1,d0
  bsr    blsetonce2
rts
;
;
;*** Level-Zaehler ***

levelcount:
  clr.l  d1
  clr.l  d2
  clr.l  d3
  move.l level,d7
  divs   #100,d7
  move.w d7,d1
  swap   d7
  ext.l  d7
  divs   #10,d7
  move.w d7,d2
  swap   d7
  ext.l  d7
  move.l d7,d3

  asl.l  #1,d1
  move.l d1,d0
  add.l  #27,d0
  move.l hplanadr,a1
  add.l  #414,a1
  bsr    blsetonce2
  move.l d1,d0
  add.l  #27,d0
  move.l hplanadr,a1
  add.l  #414+640,a1
  add.l  #1,d0
  bsr    blsetonce2

  asl.l  #1,d2
  move.l d2,d0
  add.l  #27,d0
  move.l hplanadr,a1
  add.l  #416,a1
  bsr    blsetonce2
  move.l d2,d0
  add.l  #27,d0
  move.l hplanadr,a1
  add.l  #416+640,a1
  add.l  #1,d0
  bsr    blsetonce2

  asl.l  #1,d3
  move.l d3,d0
  add.l  #27,d0
  move.l hplanadr,a1
  add.l  #418,a1
  bsr    blsetonce2
  move.l d3,d0
  add.l  #27,d0
  move.l hplanadr,a1
  add.l  #418+640,a1
  add.l  #1,d0
  bsr    blsetonce2
rts         
;
;
;*** Schussdauer ***

dauer:
  add.l  #1,lacount
  and.l  #7,lacount
  bne    dauerend
  cmp.l  #14,bumm
  beq    clsbumm
  cmp.l  #-14,bumm
  bne    dauerend
clsbumm:
  move.l #00,addit
dauerend:
  rts

;*** Triumpf-Leiter ***

sieg:
  cmp.l  #1,stop
  beq    siegend
  move.l goldreg,d0
  move.l goldmax,d1
  cmp.l  d0,d1
  bne    siegend
  move.l #triumpf,a0
  move.l #leiter2,a1
  move.l #2,d7
siegloop:
  move.w (a0)+,(a1)+
  dbra   d7,siegloop
  bsr    visibel
  move.l #1,stop
siegend:
  rts
;  
;
;*** Wachstum ***

grow:
  add.l  #1,plcounter
  and.l  #$ff,plcounter
  bne    growend
  cmp.l  #0,platmax
  beq    growend
  move.l platmax,d7
  move.l #plattadr,a0
growloop:  
  cmp.l  #1,00(a0)
  bne    grownot

  sub.l  #1,d7
  move.l 12(a0),d6
  cmp.l  #0,d6
  bne    notready
  move.l #10,d0
  move.l 08(a0),a1
  bsr    blockset
  move.l #11,d0
  move.l 08(a0),a1
  add.l  #640,a1
  bsr    blockset
  move.l #0,00(a0)
  move.l 04(a0),a1
  move.w #10,00(a1)
  move.w #11,80(a1)
  sub.l  #1,platmax
  jmp    grownot

notready:
  sub.l  #1,12(a0)
  sub.l  #4,d6
  neg.l  d6
  asl.l  #1,d6
  
  move.l #19,d0
  add.l  d6,d0
  move.l 08(a0),a1
  bsr    blockset
  move.l #20,d0
  add.l  d6,d0
  move.l 08(a0),a1
  add.l  #640,a1
  bsr    blockset
grownot:
  add.l  #16,a0 
  cmp.l  #0,d7
  bne    growloop
growend:
  rts
;
;
;*** Block setzen ***

blockset:
  move.l a1,a2
  add.l  #6*planesize,a2
  move.l a2,a3
  add.l  #6*planesize,a3
  move.l a3,a4
  add.l  #6*planesize,a4

  muls   #80,d0
  move.l blockadr,a6
  adda.w d0,a6

;**** Zeichen aufbauen ****
  
  move.w 000(a6),000(a1)
  move.w 002(a6),080(a1) 
  move.w 004(a6),160(a1)
  move.w 006(a6),240(a1)
  move.w 008(a6),320(a1)
  move.w 010(a6),400(a1) 
  move.w 012(a6),480(a1)
  move.w 014(a6),560(a1)

  move.w 016(a6),000(a2)
  move.w 018(a6),080(a2) 
  move.w 020(a6),160(a2)
  move.w 022(a6),240(a2)
  move.w 024(a6),320(a2)
  move.w 026(a6),400(a2) 
  move.w 028(a6),480(a2)
  move.w 030(a6),560(a2)

  move.w 032(a6),000(a3)
  move.w 034(a6),080(a3) 
  move.w 036(a6),160(a3)
  move.w 038(a6),240(a3)
  move.w 040(a6),320(a3)
  move.w 042(a6),400(a3) 
  move.w 044(a6),480(a3)
  move.w 046(a6),560(a3)

  move.w 048(a6),000(a4)
  move.w 050(a6),080(a4) 
  move.w 052(a6),160(a4)
  move.w 054(a6),240(a4)
  move.w 056(a6),320(a4)
  move.w 058(a6),400(a4) 
  move.w 060(a6),480(a4)
  move.w 062(a6),560(a4)
rts
;
;
blsetonce:
  muls   #80,d0
  move.l blockadr,a6
  adda.w d0,a6

;**** Zeichen aufbauen ****
  
  move.w 000(a6),000(a1)
  move.w 002(a6),080(a1) 
  move.w 004(a6),160(a1)
  move.w 006(a6),240(a1)
  move.w 008(a6),320(a1)
  move.w 010(a6),400(a1) 
  move.w 012(a6),480(a1)
  move.w 014(a6),560(a1)
rts
;
;
blsetonce2:
  muls   #80,d0
  move.l blockadr,a6
  adda.w d0,a6

;**** Zeichen aufbauen ****

  move.w 000(a6),d0
  eor.w  #$ffff,d0
  move.w d0,000(a1)
  move.w 002(a6),d0
  eor.w  #$ffff,d0
  move.w d0,080(a1) 
  move.w 004(a6),d0
  eor.w  #$ffff,d0
  move.w d0,160(a1)
  move.w 006(a6),d0
  eor.w  #$ffff,d0
  move.w d0,240(a1)
  move.w 008(a6),d0
  eor.w  #$ffff,d0
  move.w d0,320(a1)
  move.w 010(a6),d0
  eor.w  #$ffff,d0
  move.w d0,400(a1)
  move.w 012(a6),d0
  eor.w  #$ffff,d0
  move.w d0,480(a1)
  move.w 014(a6),d0
  eor.w  #$ffff,d0
  move.w d0,560(a1)
rts
;
;
;*** Laser ***

laser:
  tst.b  ciaapra
  bmi    laseend
  cmp.l  #0,ficount
  beq    lasen
  sub.l  #1,ficount
  cmp.l  #0,ficount
  bne    laseend
lasen:
  move.l xpos,d0
  move.l ypos,d1
  add.l  #16,d1
  move.l #solidtab,d5
  move.l #7,d6        ;4  
  bsr    sensor1  
  cmp.l  #1,d7
  beq    fire
  move.l #platte1,d5
  move.l #3,d6
  bsr    sensor1  
  cmp.l  #1,d7
  beq    fire

  move.l xpos,d0
  move.l ypos,d1
  sub.l  #8,d1
  move.l #solidtab,d5
  move.l #11,d6
  bsr    sensor1  
  cmp.l  #1,d7
  beq    fire

  move.l guardx1,d2
  move.l guardy1,d3
  bsr    ensensor  
  cmp.l  #0,d7
  bne    fire
  move.l guardx1,d2
  move.l guardy1,d3
  bsr    ensensor  
  cmp.l  #0,d7
  bne    fire
  move.l guardx2,d2
  move.l guardy2,d3
  bsr    ensensor  
  cmp.l  #0,d7
  bne    fire
  move.l guardx3,d2
  move.l guardy3,d3
  bsr    ensensor  
  cmp.l  #0,d7
  bne    fire
  move.l guardx4,d2
  move.l guardy4,d3
  bsr    ensensor  
  cmp.l  #0,d7
  beq    laseend
;  jmp    laseend
fire:   
  move.l animate,d0
  cmp.l  #1872,d0
  blo    normgo
  sub.l  #1872,d0
normgo:
  cmp.l  #000,d0
  bne    laleft
  move.l #2,d6
  move.l #14,bumm
  jmp    firelaser
laleft:
  cmp.l  #624,d0
  bne    laseend
  move.l #-2,d6
  move.l #-14,bumm
firelaser:
  move.l xpos,d0
  move.l ypos,d1
  add.l  #8,d0
  clr.l  d7
  move.l sceneadr,a0
  add.l  d6,a0
  asr.l  #3,d0
  and.l  #$fffffffe,d0
  asr.l  #3,d1
  move.l d1,d4
  muls   #80,d1
  add.l  d0,d1
  add.l  d1,a0
  move.w 322(a0),d2
  cmp.w  #$a,d2
  bne    laseend
  move.w 242(a0),d2
  cmp.w  #$9,d2
  beq    clrblock
  cmp.w  #$10,d2
  beq    clrblock
  cmp.w  #$11,d2
  beq    clrblock
  cmp.w  #$12,d2
  beq    clrblock
  cmp.w  #$1b,d2
  beq    clrblock
  cmp.w  #$1c,d2
  beq    clrblock
  cmp.w  #$0,d2
  bne    laseend
clrblock:
  move.w #27,322(a0)
  move.w #28,402(a0)
  move.l a0,a4
  add.l  #322,a4

  move.l #1,addit

  move.l xpos,d0
  add.l  #8,d0
  move.l d4,d1
  asl.l  #3,d1
  add.l  #23,d1
  muls   #80,d1
  asr.l  #3,d0
  and.l  #$fffffffe,d0
  add.l  d1,d0
  move.l planeadr,a0
  add.l  d6,a0
  add.l  d0,a0
  move.l a0,a5
  move.l a0,a1
  add.l  #6*planesize,a1
  move.l a1,a2
  add.l  #6*planesize,a2
  move.l a2,a3
  add.l  #6*planesize,a3

  move.l #15,d7
laseloop:
  move.w #$00,(a0)
  move.w #$00,(a1)
  move.w #$00,(a2)
  move.w #$00,(a3)
  add.l  #80,a0
  add.l  #80,a1
  add.l  #80,a2
  add.l  #80,a3
  dbra   d7,laseloop

  move.l #plattadr,a0
searchloop:
  cmp.l  #0,(a0)
  beq    setstatus
  add.l  #16,a0
  jmp    searchloop
setstatus:
  move.l #1,00(a0)  ;Status
  move.l a4,04(a0)  ;Adresse Scenery
  move.l a5,08(a0)  ;Adresse Plane
  move.l #4,12(a0)  ;Counter
  add.l  #1,platmax
  bsr    sound1
  move.l #22,ficount
  rts
laseend:
  rts
;
;
;*** Gold aufsammeln

goldsensor:
  move.l xpos,d0
  move.l ypos,d1
  add.l  #8,d0
  clr.l  d7
  move.l sceneadr,a0
  asr.l  #3,d0
  and.l  #$fffffffe,d0
  asr.l  #3,d1
  move.l d1,d4
  muls   #80,d1
  add.l  d0,d1
  add.l  d1,a0
  move.w 242(a0),d2
  cmp.w  #9,d2
  bne    goldend
  move.w #00,242(a0)

  move.l xpos,d0
  add.l  #8,d0
  move.l d4,d1
  asl.l  #3,d1
  add.l  #15,d1
  muls   #80,d1
  asr.l  #3,d0
  and.l  #$fffffffe,d0
  add.l  d1,d0
  move.l planeadr,a0
  add.l  d0,a0
  move.l a0,a1
  add.l  #6*planesize,a1
  move.l a1,a2
  add.l  #6*planesize,a2
  move.l a2,a3
  add.l  #6*planesize,a3

  move.l #7,d7
goldloop:
  move.w #$00,(a0)
  move.w #$00,(a1)
  move.w #$00,(a2)
  move.w #$00,(a3)
  add.l  #80,a0
  add.l  #80,a1
  add.l  #80,a2
  add.l  #80,a3
  dbra   d7,goldloop
  add.l  #1,goldreg
  add.l  #gwert,score
  bsr    goldcount
  bsr    sound4
goldend:
  rts
;
;
;*** Animation ***

increase:
  add.w  #$1,counter
  and.w  #$f,counter
;  cmp.w  #15,counter
  bne    inend
  add.l  #104,ancount
  cmp.l  #624,ancount
  bne    inend
  move.l #000,ancount
inend:
  rts  
;
;
;*** Sceen- und Spritepositionierung ***

playpos:  ;160;y=40,119
  cmp.l  #462,d0 ;496
  bhi    biggerx
  cmp.l  #128,d0
  blo    smalerx
  move.l #128,d6
  add.l  #160,d6

  move.l d0,d3
  sub.l  #128,d3

  jmp    searchy
biggerx:
  move.l d0,d6
  sub.l  #334,d6 ;368
  add.l  #160,d6   
  move.l #334,d3 ;368
  jmp    searchy
smalerx:
  move.l d0,d6
  add.l  #160,d6   
  move.l #0,d3
searchy:
  cmp.l  #488,d1   ;#464,d1
  bhi    biggery
  cmp.l  #79,d1
  blo    smalery
  move.l #79,d7
  add.l  #40,d7
  move.l d1,d4
  sub.l  #79,d4
  jmp    posplay
biggery:
  move.l d1,d7
  sub.l  #409,d7 ;3#385,d7
  add.l  #40,d7
  move.l #409,d4 ;385,d4     
  jmp    posplay
smalery:
  move.l d1,d7
  add.l  #40,d7
  move.l #0,d4   
posplay:
  move.l d6,posx
  move.l d7,posy
  move.l spritadr,a3
  add.l  ancount,a3
  add.l  animate,a3
  sub.l  #16,d6
  bsr    sprpos

  move.l spritadr,a3
  add.l  #3328,a3
  add.l  bumm,d6      ;#14,d6
  move.l addit,d0
  muls   d0,d6
  add.l  #2,d7
  bsr    sprpos
  move.l d3,scrx
  move.l d4,scry
  bsr    scrpos2
  move.l #0,d0
  move.l spritadr,d1
  add.l  ancount,d1
  add.l  animate,d1
  move.l cladr,a0
  bsr    sprchange
rts  
;
;
;*** Gravitation ***

gravos:
  move.l guardx1,d2
  move.l guardy1,d3
  bsr    ensensor
  cmp.l  #1,d7
  beq    graend
  move.l guardx2,d2
  move.l guardy2,d3
  bsr    ensensor
  cmp.l  #1,d7
  beq    graend
  move.l guardx3,d2
  move.l guardy3,d3
  bsr    ensensor
  cmp.l  #1,d7
  beq    graend
  move.l guardx4,d2
  move.l guardy4,d3
  bsr    ensensor
  cmp.l  #1,d7
  beq    graend

  move.l xpos,d0
  move.l ypos,d1
  add.l  #16,d1
  move.l #solidtab,d5
  move.l #7,d6
  bsr    sensor1  
  cmp.l  #1,d7
  beq    graend
  move.l #platte1,d5
  move.l #3,d6
  bsr    sensor1  
  cmp.l  #1,d7
  beq    graend

  move.l xpos,d0
  move.l ypos,d1
  sub.l  #8,d1
  move.l #solidtab,d5
  move.l #7,d6
  bsr    sensor1  
  cmp.l  #1,d7
  beq    graend

  move.l #stange,d5
  move.l #2,d6
  bsr    sensor3  
  cmp.l  #1,d7
  bne    sturz 
  cmp.l  #625,animate
  bcc    graend
  add.l  #1872,animate
  jmp    graend
sturz:
  add.l  #1,ypos
graend:
  rts
;
;
ensensor:
  move.l xpos,d0
  add.l  #8,d0
  add.l  #144,d0
  and.l  #$fffffff0,d0
  move.l d2,d1
  and.l  #$fffffff0,d1
  cmp.l  d0,d1
  bne    enseend
  move.l ypos,d0
  move.l d3,d1
  sub.l  d0,d1
  cmp.l  #56,d1
  beq    set2
enseend:
  clr.l  d7
  rts
set2:
  move.l #1,d7
  rts
;
;  
;*** Hindernisse ***

ssensor:
 movem.l d0-d1,-(sp)
  clr.l  d7
  move.l xpos,d0
  move.l ypos,d1
  sub.l  #8,d1
  move.l #stange,d5
  move.l #2,d6
  bsr    sensor1
  cmp.l  #1,d7
  beq    hang

  clr.l  d7
  move.l xpos,d0
  move.l ypos,d1
  add.l  #8,d1
  move.l #solidtab,d5
  move.l #10,d6
  bsr    sensor1
  cmp.l  #1,d7
  beq    ssend

  clr.l  d7
  move.l xpos,d0
  move.l ypos,d1
  sub.l  #8,d1
  move.l #solidtab,d5
  move.l #7,d6
  bsr    sensor1
  cmp.l  #1,d7
  bne    ssend

hang:
  cmp.l  #624,animate
  bne    righang
  move.l #2496,animate
  jmp    ssend
righang:
  move.l #1872,animate
ssend:
 movem.l (sp)+,d0-d1 
  rts

rsensor:
 movem.l d0-d1,-(sp)
  clr.l  d7
  move.l xpos,d0
  move.l ypos,d1
  add.l  #16,d0
  add.l  #8,d1
  move.l d0,d6
  and.l  #$f,d6
  cmp.l  #$8,d6
  bpl    rsend
  move.l #platte1,d5
  move.l #3,d6
  bsr    sensor2
rsend:
 movem.l (sp)+,d0-d1
rts

lsensor:
 movem.l d0-d1,-(sp)
  clr.l  d7
  move.l xpos,d0
  move.l ypos,d1
  sub.l  #16,d0
  add.l  #8,d1
  move.l d0,d6
  and.l  #$f,d6
  cmp.l  #$8,d6
  bmi    lsend
  move.l #platte1,d5
  move.l #3,d6
  bsr    sensor2
lsend:
 movem.l (sp)+,d0-d1
rts

usensor:
 movem.l d0-d1,-(sp)
  clr.l  d7
  move.l xpos,d0
  move.l ypos,d1
  add.l  #16,d1
  move.l #platte1,d5
  move.l #3,d6
  bsr    sensor1
usend:
 movem.l (sp)+,d0-d1
rts

osensor:
 movem.l d0-d1,-(sp)
  clr.l  d7
  move.l xpos,d0
  move.l ypos,d1
  sub.l  #9,d1
  move.l #platte1,d5
  move.l #3,d6
  bsr    sensor1
  cmp.l  #1,d7
  beq    osend

  clr.l  d7
  move.l xpos,d0
  move.l ypos,d1
;  sub.l  #4,d1   ;#9,d1
  move.l #stange,d5
  move.l #2,d6
  bsr    sensor1

osend:
 movem.l (sp)+,d0-d1
rts

;*** Sensor-Grob ***

sensor1:
 movem.l d0-d6/a0-a6,-(sp)
  add.l  #8,d0
  clr.l  d7
  move.l sceneadr,a0
  move.l d1,d4
  and.l  #$7,d4
  cmp.l  #0,d4
;  bne    nullset
  asr.l  #3,d0
  and.l  #$fffffffe,d0
  asr.l  #3,d1
  muls   #80,d1
  add.l  d0,d1
  add.l  d1,a0
  move.w 162(a0),d2

  move.l d5,a1
;  move.l d5,d6
solidloop:
  move.w (a1)+,d1    
  cmp.w  d1,d2
  beq    kollset
  dbra   d6,solidloop
  jmp    nullset
kollset:
  move.l #1,d7
nullset:
 movem.l (sp)+,d0-d6/a0-a6
  rts
;
;
sensor2:
 movem.l d0-d6/a0-a6,-(sp)
  move.l d1,d7
  sub.l  #8,d7
  and.l  #$f,d7
  add.l  #8,d0
  move.l sceneadr,a0
  move.l d1,d4
  and.l  #$7,d4
  cmp.l  #0,d4
;  bne    nullset
  asr.l  #3,d0
  and.l  #$fffffffe,d0
  asr.l  #3,d1
  muls   #80,d1
  add.l  d0,d1
  add.l  d1,a0
  move.w 162(a0),d0
  move.w 082(a0),d2
  move.w 002(a0),d3
  move.w 002(a0),d4

  cmp.l  #10,d7
  blo    letitbe
  move.w 242(a0),d4
letitbe:

  clr.l  d7
  move.l d5,a1
solidloop2:
  move.w (a1)+,d1    
  cmp.w  d1,d0
  beq    kollset2
  cmp.w  d1,d2
  beq    kollset2
  cmp.w  d1,d3
  beq    kollset2
  cmp.w  d1,d4
  beq    kollset2
  dbra   d6,solidloop2
  jmp    nullset2
kollset2:
  move.l #1,d7
nullset2:
 movem.l (sp)+,d0-d6/a0-a6
  rts
;
;
sensor3:
 movem.l d0-d6/a0-a6,-(sp)
  add.l  #8,d0
  clr.l  d7
  move.l sceneadr,a0
  move.l d1,d4
  and.l  #$3,d4
  cmp.l  #0,d4
  bne    nullset3
  asr.l  #3,d0
  and.l  #$fffffffe,d0
  asr.l  #3,d1
  muls   #80,d1
  add.l  d0,d1
  add.l  d1,a0
  move.w 162(a0),d2

  move.l d5,a1
;  move.l d5,d6
solidloop3:
  move.w (a1)+,d1    
  cmp.w  d1,d2
  beq    kollset3
  dbra   d6,solidloop3
  jmp    nullset3
kollset3:
  move.l #1,d7
nullset3:
 movem.l (sp)+,d0-d6/a0-a6
  rts
;
;
;*** Joystick ***

joy:
  clr.l  joyreg
  move.l xpos,d0
  move.l ypos,d1
  add.l  #16,d1
  move.l #solidtab,d5
  move.l #7,d6
  bsr    sensor1  
  cmp.l  #1,d7
  beq    joytest
  move.l #platte1,d5
  move.l #3,d6
  bsr    sensor1  
  cmp.l  #1,d7
  beq    joytest

  move.l xpos,d0
  move.l ypos,d1
  sub.l  #8,d1
  move.l #solidtab,d5
  move.l #11,d6
  bsr    sensor1  
  cmp.l  #1,d7
  beq    joytest

  move.l guardx1,d2
  move.l guardy1,d3
  bsr    ensensor  
  cmp.l  #0,d7
  bne    joytest

  move.l guardx2,d2
  move.l guardy2,d3
  bsr    ensensor  
  cmp.l  #0,d7
  bne    joytest

  move.l guardx3,d2
  move.l guardy3,d3
  bsr    ensensor  
  cmp.l  #0,d7
  bne    joytest

  move.l guardx4,d2
  move.l guardy4,d3
  bsr    ensensor  
  cmp.l  #0,d7
  beq    mitte

joytest:
  move.w $dff00c,d0
rechts:
  btst   #1,d0
  beq    links
  bsr    rsensor
  cmp.l  #1,d7
  beq    links
  add.l  #1,xpos
  bsr    increase
  move.l #000,animate
  bsr    ssensor
  bsr    sound6
  move.l #1,joyreg

links:
  btst   #9,d0
  beq    unten
  bsr    lsensor
  cmp.l  #1,d7
  beq    unten
  sub.l  #1,xpos
  bsr    increase
  move.l #624,animate
  bsr    ssensor
  bsr    sound6
  move.l #1,joyreg

unten:
  move.w d0,d1
  lsr.w  #1,d1
  eor.w  d0,d1
  btst   #0,d1
  beq    oben
  bsr    usensor
  cmp.l  #1,d7
  beq    oben
  add.l  #1,ypos
  bsr    increase
  move.l #1248,animate  
  bsr    sound6
  move.l #1,joyreg

oben:
  btst   #8,d1
  beq    mitte
  bsr    osensor
  cmp.l  #1,d7
  beq    mitte

  sub.l  #1,ypos

  clr.l  d7
  move.l xpos,d0
  move.l ypos,d1
;  add.l  #8,d1
  move.l #solidtab,d5
  move.l #7,d6
  bsr    sensor1
  cmp.l  #0,d7
  beq    mitte
  bsr    increase
  move.l #1248,animate  
  bsr    sound6
  move.l #1,joyreg

mitte:
  cmp.l  #1,joyreg
  beq    tonnow
  bsr    st3
tonnow:
  move.l #$180,d7
jloop1:
  move.l #$2,d6
jloop2:
  dbra   d6,jloop2
  dbra   d7,jloop1
  rts
;
;
;*** Initialisierung ***
;
init:
  move.l execbase,a6       ;....Speicher anmelden
  move.l #192000,d0
  move.l #clear,d1
  move.l #138014,a1
  jsr    allocabs(a6)
  move.l d0,planeadr

  move.l execbase,a6
  move.l #16000,d0
  move.l #clear,d1
  jsr    allocmem(a6)
  move.l d0,hplanadr

  move.l execbase,a6
  move.l #16000,d0
  move.l #clear,d1
  jsr    allocmem(a6)
  move.l d0,hplanadr2

  move.l execbase,a6
  move.l #16384,d0
  move.l #clear,d1
  jsr    allocmem(a6)
  move.l d0,spritadr
  add.l  #15300,d0
  move.l d0,cladr
 
  move.l execbase,a6
  move.l #10240,d0
  move.l #clear,d1
  jsr    allocmem(a6)
  move.l d0,blockadr

  move.l execbase,a6
  move.l #12324,d0
  move.l #clear,d1
  jsr    allocmem(a6)
  move.l d0,sceneadr
  add.l  #6162,d0
  move.l d0,titleadr
;
  move.l execbase,a6
  move.l #11718,d0    ;81920,d0
  move.l #clear,d1
  jsr    allocmem(a6)
  move.l d0,table1
;  add.l  #11718,d0

  move.l execbase,a6
  move.l #20480,d0    ;81920,d0
  move.l #clear,d1
  jsr    allocmem(a6)
  move.l d0,table2
;  add.l  #20480,d0

  move.l execbase,a6
  move.l #16384,d0    ;81920,d0
  move.l #clear,d1
  jsr    allocmem(a6)
  move.l d0,table3

  move.l execbase,a6
  move.l #22466,d0    ;81920,d0
  move.l #clear,d1
  jsr    allocmem(a6)
  move.l d0,table5

  move.l execbase,a6
  move.l #4596,d0     ;9348,d0
  move.l #clear,d1
  jsr    allocmem(a6)
  move.l d0,table4
  add.l  #1524,d0
  move.l d0,table6
;
  move.l execbase,a6      ;....Bibliotheken an
  move.l #graname,a1
  clr.l  d0
  jsr    openlib(a6)
  move.l d0,grabase
  move.l execbase,a6      ;....Bibliotheken an
  move.l #dosname,a1
  clr.l  d0
  jsr    openlib(a6)
  move.l d0,dosbase
;  
  bsr    load
;
  move.l grabase,a6       ;....Blitter anfordern
;  jsr    ownblitter(a6)
;
  move.l #0,d0
  move.l spritadr,d1
  move.l cladr,a0
  bsr    sprchange
  move.l #1,d0
  move.l spritadr,d1
  add.l  #3328,d1
  move.l cladr,a0
  bsr    sprchange
  move.l #2,d0
  move.l spritadr,d1
  add.l  #4500,d1
  move.l cladr,a0
  bsr    sprchange
  move.l #3,d0
  move.l spritadr,d1
  add.l  #6144,d1
  move.l cladr,a0
  bsr    sprchange
  move.l #4,d0
  move.l spritadr,d1
  add.l  #6144,d1
  move.l cladr,a0
  bsr    sprchange
  move.l #5,d0
  move.l spritadr,d1
  add.l  #6144,d1
  move.l cladr,a0
  bsr    sprchange
  move.l #6,d0
  move.l spritadr,d1
  add.l  #6144,d1
  move.l cladr,a0
  bsr    sprchange
  move.l #7,d0
  move.l spritadr,d1
  add.l  #6144,d1
  move.l cladr,a0
  bsr    sprchange

  move.l #0,d3
  move.l #0,d4
  bsr    scrpos
;
  move.l execbase,a6        ;....Dma sperren
;  jsr    forbid(a6)
  lea    $dff000,a5
  move.w #$03e0,dmacon(a5)
;
  move.l cladr,cop1lc(a5)   ;....Copper initialisieren
  clr.w  copjmp1(a5)
;
  move.w #$2891,diwstrt(a5) ;a1
  move.w #$20c1,diwstop(a5) ;b1
  move.w #$0038,ddfstrt(a5) ;41
  move.w #$00d0,ddfstop(a5)
  move.w #%0100001000000000,bplcon0(a5)
  clr.w  bplcon1(a5)
  clr.w  bplcon2(a5)
  move.w #40,bpl1mod(a5)
  move.w #40,bpl2mod(a5)
;
;  move.w #$e000,clxcon(a5)
;
  move.w #$83f0,dmacon(a5)    ;....DMA ein
;
  move.l #coloradr,a0
  move.l 36(a0),d0
  move.l 40(a0),d1
  move.l 44(a0),d2
  asl.l  #8,d0
  asl.l  #4,d1
  or.l   d2,d1
  or.l   d1,d0
  move.w d0,grundcol
  move.l 24(a0),d0
  move.l 28(a0),d1
  move.l 32(a0),d2
  asl.l  #8,d0
  asl.l  #4,d1
  or.l   d2,d1
  or.l   d1,d0
  move.w d0,frontcol
;
  move.l #31,d7
  move.l #coloradr,a0
  move.l #$dff000,a5
colloop:
  move.l 0(a0),d0
  move.l 4(a0),d1
  move.l 8(a0),d2
  asl.l  #8,d0
  asl.l  #4,d1
  or.l   d2,d1
  or.l   d1,d0
  move.w #0,color00(a5)
  add.l  #12,a0
  add.l  #02,a5
  dbra   d7,colloop
rts
;
;
;*** Reset ***

reset:
  move.l #$dff000,a5
  move.l grabase,a4     ;....alte Copperlist an
  move.l startlist(a4),cop1lc(a5)
  clr.w  copjmp1(a5)
  move.w #$83e0,dmacon(a5)
  move.l grabase,a6
;  jsr    disownblitter(a6)
  move.l execbase,a6
;  jsr    permit(a6)
;
  move.l execbase,a6    ;....Library schliessen
  move.l grabase,a1
  jsr    closelib(a6)
  move.l execbase,a6    ;....Library schliessen
  move.l dosbase,a1
  jsr    closelib(a6)
;
rts
;
;
;*** Schrifft-init ***

initprint:
  move.l hplanadr2,d5
  add.l  #322,d5
  add.l  #2,a1
  move.l #scorename,a0
  move.l #12,d7
  bsr    print   

  move.l hplanadr,d5
  add.l  #402,d5
  add.l  #2,a1
  move.l #levelname,a0
  move.l #8,d7
  bsr    print   

  move.l hplanadr,d5
  add.l  #424,d5
  add.l  #2,a1
  move.l #goldsname,a0
  move.l #7,d7
  bsr    print   

  move.l hplanadr2,d5
  add.l  #350,d5
  add.l  #2,a1
  move.l #playsname,a0
  move.l #4,d7
  bsr    print   
rts
  
print:
  move.l d5,a1
  clr.l  d0
  move.w (a0),d0
  asl.l  #1,d0
  add.l  #47,d0
  bsr    blsetonce2  
  move.l d5,a1
  add.l  #640,a1
  move.w (a0)+,d0
  asl.l  #1,d0
  add.l  #48,d0
  bsr    blsetonce2  
  add.l  #2,d5
  dbra   d7,print
  rts
;
;
print2:
  move.l d5,a1
  clr.l  d0
  move.w (a0),d0
  cmp.w  #26,d0
  bne    normp2
  move.l #-26,d0
normp2:
  asl.l  #1,d0
  add.l  #47,d0
movem.l  d0-d7/a0-a6,-(sp)
  bsr    blockset 
movem.l  (sp)+,d0-d7/a0-a6
  move.l d5,a1
  add.l  #640,a1
  move.w (a0)+,d0
  asl.l  #1,d0
  add.l  #48,d0
movem.l  d0-d7/a0-a6,-(sp)
  bsr    blockset  
movem.l  (sp)+,d0-d7/a0-a6
  add.l  #2,d5
  dbra   d7,print2
  rts
;
;
scorename: dc.w 18,2,14,17,4,26
           dc.w -10,-10,-10,-10,-10,-10,-10
levelname: dc.w 11,4,21,4,11,26,-10,-10,-10
goldsname: dc.w 6,14,11,3,26,-10,-10,-10
playsname: dc.w 12,4,13,26,-10
passname:  dc.w 15,0,18,18,13,20,12,1,4,17
gamstname: dc.w 11,4,21,4,11,-26
nummer:    dc.w-10,-10,-10
pack:      dc.w-10,-10


;*** Load-Routine ***

load:
  move.l #modeold,d2
  move.l #blockname,d1
  bsr    openfile
  move.l blockadr,d2
  bsr    readdata2
  bsr    closefile

  move.l #modeold,d2
  move.l #titlename,d1
  bsr    openfile
  move.l titleadr,d2
  bsr    readdata
  bsr    closefile

  move.l #modeold,d2
  move.l #sndlaname,d1
  bsr    openfile
  move.l table1,d2
  bsr    readdata
  bsr    closefile
  move.l #modeold,d2
  move.l #sndtoname,d1
  bsr    openfile
  move.l table2,d2
  bsr    readdata
  bsr    closefile
  move.l #modeold,d2
  move.l #sndsiname,d1
  bsr    openfile
  move.l table3,d2
  bsr    readdata
  bsr    closefile
  move.l #modeold,d2
  move.l #sndgoname,d1
  bsr    openfile
  move.l table4,d2
  bsr    readdata
  bsr    closefile
  move.l #modeold,d2
  move.l #sndbename,d1
  bsr    openfile
  move.l table5,d2
  bsr    readdata
  bsr    closefile
  move.l #modeold,d2
  move.l #sndscname,d1
  bsr    openfile
  move.l table6,d2
  bsr    readdata
  bsr    closefile

  move.l #modeold,d2
  move.l #colorname,d1
  bsr    openfile
  move.l #coloradr,d2
  bsr    readdata
  bsr    closefile

  move.l #modeold,d2
  move.l #play1name,d1
  bsr    openfile
  move.l spritadr,d2
  bsr    readdata
  bsr    closefile
  move.l #modeold,d2
  move.l #guardname,d1
  bsr    openfile
  move.l spritadr,d2
  add.l  #enconst1,d2
  bsr    readdata
  bsr    closefile
  
  move.l spritadr,a0
  move.l a0,a1
  move.l a1,a2
  move.l a2,a3
  add.l  #enconst1,a0
  add.l  #enconst2,a1 
  add.l  #enconst3,a2
  add.l  #enconst4,a3
  move.l #2599,d7
cop1loop:
  move.b (a0),(a1)+
  move.b (a0),(a2)+
  move.b (a0)+,(a3)+
  dbra   d7,cop1loop
  

  move.l #$ffff,d7
diskloop1:
  move.l #$f,d6
diskloop2:
  dbra   d6,diskloop2
  dbra   d7,diskloop1
rts
;
;
loadlevel:
  move.l #modeold,d2
  move.l #scenename,d1
  bsr    openfile
  beq    correct
  move.l sceneadr,d2
  bsr    readdata
  bsr    closefile
  rts
correct:
  move.l #"000.",scenename+5
  move.b #0,scenename+8
  clr.l  level
  jmp    loadlevel
;
;
scoreload:
  move.l #modeold,d2
  move.l #scofiname,d1
  bsr    openfile
  beq    correctsc
  move.l #scoretab,d2
  bsr    readdata
  bsr    closefile
  move.l #$ffff,d7
scloloop1:
  move.l #$f,d6
scloloop2:
  dbra   d6,scloloop2
  dbra   d7,scloloop1
correctsc:
  rts
;
;
scoresave:
  move.l #diskname,d1
  move.l #modus,d2
  move.l dosbase,a6
  jsr    lock(a6)
  move.l d0,d1
  move.l infoadr,d2
  jsr    info(a6)
  move.l infoadr,a0
  add.l  #8,a0
  cmp.l  #82,(a0)
  bne    scoresaveend
  move.l #modenew,d2
  move.l #scofiname,d1
  bsr    openfile
  beq    scoresaveend
  move.l #scoretab,d2
  move.l #192,d3
  bsr    writedata
  bsr    closefile
  
  move.l #$ffff,d7
scsaloop1:
  move.l #$f,d6
scsaloop2:
  dbra   d6,scsaloop2
  dbra   d7,scsaloop1
scoresaveend:
  rts
;
;
;*** Init invisibel ***

invisibel:
  move.l #74,d7
yloop:
  move.l #39,d6
xloop:
  move.l sceneadr,a0
  move.l d7,d5
  muls   #80,d5
  move.l d6,d4
  asl.l  #1,d4
  add.l  d4,d5
  add.l  d5,a0
  cmp.w  #14,(a0)
  bne    notfall
  move.l planeadr,a1
  move.l d7,d5
  asl.l  #3,d5
  sub.l  #9,d5
  muls   #80,d5
  move.l d6,d4
  asl.l  #1,d4
  sub.l  #2,d4
  add.l  d4,d5
  add.l  d5,a1
  move.l a1,d5
  move.l #10,d0
  bsr    blockset
  move.l  d5,a1
  add.l  #640,a1
  move.l #11,d0
  bsr    blockset
notfall:
  dbra   d6,xloop
  dbra   d7,yloop


  move.l #74,d7
yloop2:
  move.l #39,d6
xloop2:
  move.l sceneadr,a0
  move.l d7,d5
  muls   #80,d5
  move.l d6,d4
  asl.l  #1,d4
  add.l  d4,d5
  add.l  d5,a0
  cmp.w  #16,(a0)
  beq    fall2
  cmp.w  #17,(a0)
  beq    fall2
  cmp.w  #18,(a0)
  bne    notfall2
fall2:
  move.l planeadr,a1
  move.l d7,d5
  asl.l  #3,d5
  sub.l  #9,d5
  muls   #80,d5
  move.l d6,d4
  asl.l  #1,d4
  sub.l  #2,d4
  add.l  d4,d5
  add.l  d5,a1
  move.l #00,d0
  bsr    blockset
notfall2:
  dbra   d6,xloop2
  dbra   d7,yloop2
rts
;
;
;*** Visibel ***

visibel:
  move.l #74,d7
yloop3:
  move.l #39,d6
xloop3:
  move.l sceneadr,a0
  move.l d7,d5
  muls   #80,d5
  move.l d6,d4
  asl.l  #1,d4
  add.l  d4,d5
  add.l  d5,a0
  cmp.w  #16,(a0)
  bne    notfall3
  move.l planeadr,a1
  move.l d7,d5
  asl.l  #3,d5
  sub.l  #9,d5
  muls   #80,d5
  move.l d6,d4
  asl.l  #1,d4
  sub.l  #2,d4
  add.l  d4,d5
  add.l  d5,a1
  move.l #16,d0
  bsr    blockset
notfall3:
  dbra   d6,xloop3
  dbra   d7,yloop3

  move.l #74,d7
yloop4:
  move.l #39,d6
xloop4:
  move.l sceneadr,a0
  move.l d7,d5
  muls   #80,d5
  move.l d6,d4
  asl.l  #1,d4
  add.l  d4,d5
  add.l  d5,a0
  cmp.w  #17,(a0)
  bne    notfall4
  move.l planeadr,a1
  move.l d7,d5
  asl.l  #3,d5
  sub.l  #9,d5
  muls   #80,d5
  move.l d6,d4
  asl.l  #1,d4
  sub.l  #2,d4
  add.l  d4,d5
  add.l  d5,a1
  move.l #17,d0
  bsr    blockset
notfall4:
  dbra   d6,xloop4
  dbra   d7,yloop4

  move.l #74,d7
yloop5:
  move.l #39,d6
xloop5:
  move.l sceneadr,a0
  move.l d7,d5
  muls   #80,d5
  move.l d6,d4
  asl.l  #1,d4
  add.l  d4,d5
  add.l  d5,a0
  cmp.w  #18,(a0)
  bne    notfall5
  move.l planeadr,a1
  move.l d7,d5
  asl.l  #3,d5
  sub.l  #9,d5
  muls   #80,d5
  move.l d6,d4
  asl.l  #1,d4
  sub.l  #2,d4
  add.l  d4,d5
  add.l  d5,a1
  move.l #18,d0
  bsr    blockset
notfall5:
  dbra   d6,xloop5
  dbra   d7,yloop5
rts
;
;
;*** Spritemove *** 

sprpos:
 movem.l d0-d7/a0-a6,-(sp)
  add.l  #24,d7
  tst.l  d6
  bmi    posaend
  tst.l  d7
  bmi    posaend
  cmp.l  #500,d6
  bhi    posaend
  cmp.l  #500,d7
  bhi    posaend
returnpos:
  move.l d6,d0
  asl.l  #8,d0
  asl.l  #7,d0
  asr.w  #8,d0
  asr.w  #7,d0
  neg.w  d0
  move.l d7,d1
  move.l d1,d2
  add.l  #24,d2
  asl.l  #8,d1
  swap   d1
  asl.w  #2,d1
  or.l   d1,d0
  asl.l  #8,d2
  swap   d2
  asl.w  #1,d2
  or.w   d2,d0
  swap   d2
  or.w   d2,d0
  move.l (a3),d2
  and.l  #$00000080,d2
  or.l   d2,d0
  move.l d0,(a3) 
posend:
 movem.l (sp)+,d0-d7/a0-a6
  rts    
posaend:
  move.l #40,d6
  move.l #40,d7
  jmp    returnpos     


;*** Sprite aendern ***

sprchange: ;48
  move.l #spr0pth,d3
  asl.l  #2,d0
  add.l  d0,d3
  asl.l  #1,d0
  add.l  d0,a0
  move.w d3,(a0)+  ;move sprxpth
  add.w  #2,d3     
  swap   d1
  move.w d1,(a0)+  ;move dathi 
  move.w d3,(a0)+  ;move sprxptl
  addq.w #2,d3
  swap   d1
  move.w d1,(a0)+  ;move datlo 
  rts
;
;
;*** Screen-Change ***

scrpos2:  ;d3=x1,d4=y1
  move.l #$dff000,a5
  move.l vhposr(a5),d7
  and.l  #$00008000,d7   ;#$0001ff00,d7
  cmp.l  #$00008000,d7   ;#$00011000,d7 
  bne.s  scrpos2

  move.l #3,d2
  move.l cladr,a0
  add.l  #64+48,a0

  muls   #80,d4
  move.l d3,d7
  asr.l  #3,d7
  and.l  #$fffffffe,d7
  add.l  d7,d4
  and.l  #$f,d3 
  sub.l  #$f,d3
  neg.l  d3
  clr.l  d7
  move.l d3,d7
  asl.l  #4,d7
  or.l   d7,d3
  move.w #bplcon1,(a0)+
  move.w d3,(a0)+
  move.l planeadr,d0
  add.l  d4,d0
  move.w #bpl1pth,d1
makecl2:
  move.w d1,(a0)+
  addq.w #2,d1
  swap   d0
  move.w d0,(a0)+
  move.w d1,(a0)+
  addq.w #2,d1
  swap   d0
  move.w d0,(a0)+
  add.l  #6*planesize,d0
  dbra   d2,makecl2
  move.w #bplcon0,(a0)+
  move.w #%0100001000000000,(a0)+
;e8
  move.w #$ff01,(a0)+  
  move.w #$fffe,(a0)+
rts


scrpos:  ;d3=x1,d4=y1
  move.l #$dff000,a5
  move.l vhposr(a5),d7
  and.l  #$00008000,d7   ;#$0001ff00,d7
  cmp.l  #$00008000,d7   ;#$00011000,d7 
  bne.s  scrpos

  move.l #3,d2
  move.l cladr,a0
  add.l  #64,a0

movem.l  d0-d7,-(sp)
  move.w #bplcon0,(a0)+
  move.w #%0100001000000000,(a0)+
  move.l #3,d2
  move.l hplanadr,d0
  add.l  #16000,d0
  move.w #bpl1pth,d1
makeclh3:
  move.w d1,(a0)+
  addq.w #2,d1
  swap   d0
  move.w d0,(a0)+
  move.w d1,(a0)+
  addq.w #2,d1
  swap   d0
  move.w d0,(a0)+
  add.l  #4000,d0
  dbra   d2,makeclh3
  clr.l  d3
  move.l d3,d7
  asl.l  #4,d7
  or.l   d7,d3
  move.w #bplcon1,(a0)+
  move.w d3,(a0)+
  move.w #$4001,(a0)+  
  move.w #$fffe,(a0)+
 movem.l (sp)+,d0-d7

  move.w #bplcon2,(a0)+
  move.w #$24,(a0)+

  muls   #80,d4
  move.l d3,d7
  asr.l  #3,d7
  and.l  #$fffffffe,d7
  add.l  d7,d4
  and.l  #$f,d3 
  sub.l  #$f,d3
  neg.l  d3
  clr.l  d7
  move.l d3,d7
  asl.l  #4,d7
  or.l   d7,d3
  move.w #bplcon1,(a0)+
  move.w d3,(a0)+
  move.l planeadr,d0
  add.l  d4,d0
  move.w #bpl1pth,d1
makecl:
  move.w d1,(a0)+
  addq.w #2,d1
  swap   d0
  move.w d0,(a0)+
  move.w d1,(a0)+
  addq.w #2,d1
  swap   d0
  move.w d0,(a0)+
  add.l  #6*planesize,d0
  dbra   d2,makecl
  move.w #bplcon0,(a0)+
  move.w #%0100001000000000,(a0)+
;e8
  move.w #$ff01,(a0)+  
  move.w #$fffe,(a0)+

  move.w #bplcon2,(a0)+
  move.w #$0009,(a0)+

  move.w #bplcon0,(a0)+
  move.w #%0100001000000000,(a0)+
  move.l #3,d2
  move.l hplanadr,d0
  move.w #bpl1pth,d1
makeclh2:
  move.w d1,(a0)+
  addq.w #2,d1
  swap   d0
  move.w d0,(a0)+
  move.w d1,(a0)+
  addq.w #2,d1
  swap   d0
  move.w d0,(a0)+
  add.l  #4000,d0
  dbra   d2,makeclh2
  clr.l  d3
  move.l d3,d7
  asl.l  #4,d7
  or.l   d7,d3
  move.w #bplcon1,(a0)+
  move.w d3,(a0)+
  move.l #$fffffffe,(a0)

  rts
;
;
;....Bildschirmaufbau 

screen:

movem.l d0-d7/a0-a6,-(sp)
  
;**** Position festlegen ****

  move.l #3999,d7
  move.l hplanadr,a0
fillloop1:
  move.l #$FFFFFFFF,(a0)+
  dbra   d7,fillloop1
  move.l #3999,d7
  move.l hplanadr2,a0
fillloop2:
  move.l #$FFFFFFFF,(a0)+
  dbra   d7,fillloop2

  clr.l  d1
  move.l #16,d0 ;scrx,d0
  asr.l  #3,d0
  and.l  #$fffffffe,d0 
  move.l #8,d1  ;scry,d1
  move.l d1,d2
  asr.l  #3,d1
  muls   #80,d1 
  add.l  d0,d1
  move.l d1,position
  and.l  #$7,d2
  neg.l  d2
  add.l  #7,d2
  muls   #80,d2
  sub.l  #640,d2
  move.l d2,vstrpos

;**** Playfieldadr.+Planeadr. laden **** 

  move.l planeadr,d0
  move.l screenadr,a0  
  adda.l position,a0
  
  move.l d0,a1
  adda.l vstrpos,a1
  add.l  #6*planesize,d0
  move.l d0,a2
  adda.l vstrpos,a2
  add.l  #6*planesize,d0
  move.l d0,a3
  adda.l vstrpos,a3
  add.l  #6*planesize,d0
  move.l d0,a4
  adda.l vstrpos,a4
  add.l  #6*planesize,d0
  move.l d0,a5
  adda.l vstrpos,a5

;**** Bildaufbau **** 

  move.l #74,d5 ;#20,d5
loop2:
  move.l #39,d4
loop1:

;**** Zeichen ermitteln ****

  clr.w  d0
  move.w (a0),d0
  muls   #80,d0
  move.l blockadr,a6
  adda.w d0,a6

;**** Zeichen aufbauen ****
  
  move.w 000(a6),000(a1)
  move.w 002(a6),080(a1) 
  move.w 004(a6),160(a1)
  move.w 006(a6),240(a1)
  move.w 008(a6),320(a1)
  move.w 010(a6),400(a1) 
  move.w 012(a6),480(a1)
  move.w 014(a6),560(a1)

  move.w 016(a6),000(a2)
  move.w 018(a6),080(a2) 
  move.w 020(a6),160(a2)
  move.w 022(a6),240(a2)
  move.w 024(a6),320(a2)
  move.w 026(a6),400(a2) 
  move.w 028(a6),480(a2)
  move.w 030(a6),560(a2)

  move.w 032(a6),000(a3)
  move.w 034(a6),080(a3) 
  move.w 036(a6),160(a3)
  move.w 038(a6),240(a3)
  move.w 040(a6),320(a3)
  move.w 042(a6),400(a3) 
  move.w 044(a6),480(a3)
  move.w 046(a6),560(a3)

  move.w 048(a6),000(a4)
  move.w 050(a6),080(a4) 
  move.w 052(a6),160(a4)
  move.w 054(a6),240(a4)
  move.w 056(a6),320(a4)
  move.w 058(a6),400(a4) 
  move.w 060(a6),480(a4)
  move.w 062(a6),560(a4)

;  move.w 064(a6),000(a5)
;  move.w 066(a6),080(a5) 
;  move.w 068(a6),160(a5)
;  move.w 070(a6),240(a5)
;  move.w 072(a6),320(a5)
;  move.w 074(a6),400(a5) 
;  move.w 076(a6),480(a5)
;  move.w 078(a6),560(a5)

  addq.l #2,a0
  addq.l #2,a1
  addq.l #2,a2
  addq.l #2,a3
  addq.l #2,a4
;  addq.l #2,a5

  dbra   d4,loop1
  add.l  #560,a1
  add.l  #560,a2
  add.l  #560,a3
  add.l  #560,a4
;  add.l  #562,a5
;  add.l  #2,a0
  dbra   d5,loop2
movem.l (sp)+,d0-d7/a0-a6
  rts

;.......Unter-Unterprogramme

openfile:
  move.l dosbase,a6
  jsr    openf(a6)
  move.l d0,filehd
  rts

closefile:
  move.l dosbase,a6
  move.l filehd,d1
  jsr    closef(a6)
  rts

readdata:
  move.l dosbase,a6
  move.l filehd,d1
  move.l #$ffffff,d3
  jsr    read(a6)
  rts

readdata2:
  move.l dosbase,a6
  move.l filehd,d1
  move.l #10240,d3
  jsr    read(a6)
  rts

writedata:
  move.l dosbase,a6
  move.l filehd,d1
  jsr    write(a6)
  rts
;
;
datinit:;4328
  move.l #lacount,a0
  move.l #1080,d7
datloop:
  move.l #0000,(a0)+
  dbra   d7,datloop
  move.l #8,gcount1
  move.l #8,gcount2 
  move.l #8,gcount3
  move.l #8,gcount4 
  rts
;
;
;******** Daten ********

lacount:   dc.l 0
addit:     dc.l 0
bumm:      dc.l 0
stop:      dc.l 0
platmax:   dc.l 0
plcounter: dc.l 0
goldreg:   dc.l 0
goldmax:   dc.l 0
ancount:   dc.l 0
animate:   dc.l 0
counter:   dc.l 0
xpos:      dc.l 0
ypos:      dc.l 0
scrx:      dc.l 0
scry:      dc.l 0

guardx1:   dc.l 0
guardy1:   dc.l 0
gstop1:    dc.l 0
gtrans1:   dc.l 0
gturnx1:   dc.l 0
gturny1:   dc.l 0
gcount1:   dc.l 8
ganimat1:  dc.l 0
grabbel1:  dc.l 0
gcogra1:   dc.l 0

guardx2:   dc.l 0
guardy2:   dc.l 0
gstop2:    dc.l 0
gtrans2:   dc.l 0
gturnx2:   dc.l 0
gturny2:   dc.l 0
gcount2:   dc.l 8
ganimat2:  dc.l 0
grabbel2:  dc.l 0
gcogra2:   dc.l 0

guardx3:   dc.l 0
guardy3:   dc.l 0
gstop3:    dc.l 0
gtrans3:   dc.l 0
gturnx3:   dc.l 0
gturny3:   dc.l 0
gcount3:   dc.l 8
ganimat3:  dc.l 0
grabbel3:  dc.l 0
gcogra3:   dc.l 0

guardx4:   dc.l 0
guardy4:   dc.l 0
gstop4:    dc.l 0
gtrans4:   dc.l 0
gturnx4:   dc.l 0
gturny4:   dc.l 0
gcount4:   dc.l 8
ganimat4:  dc.l 0
grabbel4:  dc.l 0
gcogra4:   dc.l 0

entodx:    dc.l 0
entody:    dc.l 0
plattadr:  blk.l 1024,0

coloradr:  blk.l 96,0
scoreold:  dc.l 0
gamstat:   dc.l 0
ficount:   dc.l 0
screenx:   dc.l 0
joyreg:    dc.l 0
status1:   dc.l 0
status2:   dc.l 0
status3:   dc.l 0
status4:   dc.l 0
posx:      dc.l 0
posy:      dc.l 0
todreg:    dc.l 0
admem:     dc.l 0
player:    dc.l 0
man:       dc.l 0
score:     dc.l 0
level:     dc.l 0
man1:      dc.l 0
man2:      dc.l 0
score1:    dc.l 0
score2:    dc.l 0
level1:    dc.l 0
level2:    dc.l 0
table1:    dc.l 0
table2:    dc.l 0
table3:    dc.l 0
table4:    dc.l 0
table5:    dc.l 0
table6:    dc.l 0
soreg1:    dc.l 0
soreg2:    dc.l 0
soreg3:    dc.l 0
soreg4:    dc.l 0
grundcol:  dc.l 0
frontcol:  dc.l 0
enreg:     dc.l 0
vstrpos:   dc.l 0
position:  dc.l 0
planeadr:  dc.l 0
hplanadr:  dc.l 0
hplanadr2: dc.l 0
spritadr:  dc.l 0
titleadr:  dc.l 0
sceneadr:  dc.l 0
screenadr: dc.l 0
blockadr:  dc.l 0
cladr:     dc.l 0
filehd:    dc.l 0
grabase:   dc.l 0
dosbase:   dc.l 0
graname:   dc.b "graphics.library",0
dosname:   dc.b "dos.library",0
titlename: dc.b "SCENERY.D",0
scenename: dc.b "SCENE000",0
scofiname: dc.b "SCORE",0
blockname: dc.b "BLOCKS.D",0
colorname: dc.b "COLORS.D",0
play1name: dc.b "s_commander",0
guardname: dc.b "s_guardian",0
diskname:  dc.b "df0:",0
sndlaname: dc.b "sound0",0
sndtoname: dc.b "sound1",0
sndsiname: dc.b "sound2",0
sndgoname: dc.b "sound3",0
sndbename: dc.b "sound4",0
sndscname: dc.b "sound5",0
even

solidtab: 

leiter1: dc.w 01,02,03,04,05
leiter2: dc.w 01,02,03       ;16,17,18
stange:  dc.w 06,07,08
gold:    dc.w 09
platte1: dc.w 10,11
platte2: dc.w 12,13
platte3: dc.w 14,15
falle1:  dc.w 27,28
falle2:  dc.w 27,27
leer:    dc.w 00,00
;
triumpf: dc.w 16,17,18
;
;
nummern:
  dc.l $eb,00,$fd,01,$fb,02,$f9,03
  dc.l $f7,04,$f5,05,$f3,06,$f1,07
  dc.l $ef,08,$ed,09
;
;
tasten:
  dc.l $bf,00,$95,01,$99,02,$bb,03
  dc.l $db,04,$b9,05,$b7,06,$b5,07
  dc.l $d1,08,$b3,09,$b1,10,$af,11
  dc.l $91,12,$93,13,$cf,14,$cd,15
  dc.l $df,16,$d9,17,$bd,18,$d7,19
  dc.l $d3,20,$97,21,$dd,22,$9b,23
  dc.l $d5,24,$9d,25,$8d,26,$7f,-26 
tastend:

stage:   dc.l 1
stacnt1: dc.l 0
stacnt2: dc.l 0
stacnt3: dc.l 0
stacnt4: dc.l 0
infoadr: dc.l 0
infodata: blk.l 32,0
